An overview of every module in the repository: what it publishes and what it depends on. Module-internal
structure, patterns and gotchas live in each module's own README.md and AGENTS.md — this file does not
repeat them.
The built set is defined by settings.gradle.kts; anything not listed there is not compiled or tested.
All published modules use the group org.jetbrains.kotlinx.
Description: What a user normally depends on — core plus the I/O modules, re-exported
- Location:
./ - Artifact:
dataframe - Dependencies:
apion core, dataframe-arrow, dataframe-csv, dataframe-excel, dataframe-jdbc, dataframe-json - Note:
dataframe-openapiis deliberately left out of the aggregate — still experimental.
Description: DataFrame/DataColumn/DataRow types, the operations API, aggregations, math, schema handling, codegen
- Location:
./core/ - Artifact:
dataframe-core - Dependencies: none (base module)
- Note: I/O was split off into the modules below; core still holds the deprecated csv/tsv and HTML integrations.
Each depends on core and publishes under its own directory name.
Description: Apache Arrow IPC read/write — the streaming format (readArrowIPC/writeArrowIPC) and the
random-access/Feather format (readArrowFeather/writeArrowFeather) — plus Parquet reading via readParquet
- Location:
./dataframe-arrow/ - Dependencies: core, Apache Arrow (vector/format/memory/dataset), commons-compress
Description: CSV/TSV reading and writing (supersedes the deprecated implementation in core)
- Location:
./dataframe-csv/ - Dependencies: core, dataframe-json, Deephaven CSV, commons-csv
Description: Excel read/write, .xlsx and legacy .xls
- Location:
./dataframe-excel/ - Dependencies: core, dataframe-json, Apache POI
Description: JSON reading, writing and schema inference
- Location:
./dataframe-json/ - Dependencies: core, kotlinx.serialization
Description: Reading from SQL databases over JDBC
- Location:
./dataframe-jdbc/ - Dependencies: core; JDBC drivers are
compileOnlyor test-only, never shipped - Note: built-in
DbTypesupport for H2, MariaDB, MySQL, MS SQL Server, PostgreSQL, SQLite and DuckDB; any other JDBC database works through a user-suppliedDbType. Seedataframe-jdbc/AGENTS.md.
Description: Kotlin Jupyter integration — rendering and kernel setup
- Location:
./dataframe-jupyter/ - Dependencies: the root
dataframeaggregate (notcorealone), Log4j
Description: Geospatial column types and operations. Experimental
- Location:
./dataframe-geo/ - Dependencies: core, GeoTools, JTS, Ktor client
Description: Jupyter rendering for geospatial data
- Location:
./dataframe-geo-jupyter/ - Dependencies: dataframe-geo, dataframe-jupyter
Description: Runtime support for data schemas generated from OpenAPI 3.0.0 specifications. Experimental
- Location:
./dataframe-openapi/ - Dependencies: core
Description: Generates data schemas from OpenAPI 3.0.0 specifications; the sister module of
dataframe-openapi, consumed by the Gradle and Jupyter integrations. Experimental
- Location:
./dataframe-openapi-generator/ - Dependencies: core, dataframe-openapi, Swagger parser, KotlinPoet
Description: A shaded subset of :core, bundled inside the Kotlin DataFrame compiler plugin and IntelliJ to
run compile-time interpreters of operations. Not itself a compiler plugin.
- Location:
./dataframe-compiler-plugin-core/ - Artifact:
dataframe-compiler-plugin-core - Dependencies: core, with most transitive dependencies excluded
- Note: the compiler plugin itself is not in this repository — it is developed in the Kotlin repository at
github.com/JetBrains/kotlin/tree/master/plugins/kotlin-dataframe. Seedataframe-compiler-plugin-core/AGENTS.md.
Description: Kotlin compiler plugin that extracts the intermediate DataFrame expressions out of
@TransformDataFrameExpressions-annotated functions, so the website's "explainer dataframe" iframes can be
generated from real sample runs
- Location:
./plugins/expressions-converter/ - Used by:
:core, on thekotlinCompilerPluginClasspathSamplesconfiguration
Description: Exploratory compiler plugin that turns @AccessApiOverload-annotated functions internal, to
allow a full-API and a reduced-API artifact from one source tree (PR #959)
- Location:
./plugins/public-api-modifier/ - Note: built, but not enabled anywhere — no module puts it on a compiler-plugin classpath.
None of these is in settings.gradle.kts, so nothing here is compiled or tested — but they are not all the
same kind of dead: two are deprecated products, one moved upstream, one moved into the build. Each has its own
README.md; read it and plugins/AGENTS.md before touching anything.
plugins/dataframe-gradle-plugin — the Gradle plugin, published as org.jetbrains.kotlinx.dataframe on the
Gradle Plugin Portal. Generated data schemas from a data sample through the dataframes {} task, and pulled in
the symbol processor automatically to produce column accessors.
plugins/symbol-processor — the KSP plugin, published as symbol-processor-all. Generated schemas from
@file:ImportDataSchema, and the extension properties for @DataSchema classes and interfaces.
Both are deprecated as products, not merely switched off in this build: their last release is
1.0.0-Beta4 and there will be no further ones, because KSP1 is no longer compatible with Kotlin 2.3+. Schema
generation now goes through dedicated runtime methods and the compiler plugin — see
docs/StardustDocs/topics/schemas/Migration-From-Plugins.md,
docs/StardustDocs/topics/schemas/DataSchemaGenerationMethods.md and
docs/StardustDocs/topics/schemas/gradle/Gradle-Plugin.md; the next iteration of the feature is issue #1844.
plugins/kotlin-dataframe — the Kotlin 2.x compiler plugin, which is the recommended way to get
compile-time extension properties. It is not deprecated: development simply moved to the Kotlin repository
(github.com/JetBrains/kotlin/tree/master/plugins/kotlin-dataframe), and the copy here is an out-of-date
snapshot with its tests turned off (issue #1290). See docs/StardustDocs/topics/compiler-plugin.md.
plugins/keywords-generator — not in the repository at all (git ls-files returns nothing); it is now the
dfbuild.keywordsGenerator convention plugin in build-logic. An untracked build/ directory may still sit in
your checkout.
Description: Runnable documentation samples; korro executes them and injects code and output into the website
- Location:
./samples/ - Dependencies: the root
dataframeaggregate (runtimeOnly, so the compiler plugin sees real jars) - Note: not published. See
samples/AGENTS.md.
Description: Shared test helpers and assertions
- Location:
./common-test-utils/ - Dependencies: core, Kotest assertions
- Note: not published; added as
testImplementationto every JVM module by thedfbuild.kotlinJvmCommonconvention plugin.
Description: The build itself — convention plugins (dfbuild.*, dfsettings.*) instead of inline build logic
- Location:
./build-logic/,./build-settings-logic/ - Note: included with
includeBuild, not as regular modules.
examples/projects/— standalone Gradle/Maven example projects against the latest stable release, withexamples/projects/dev/holding the same set built against master.examples/notebooks/— Kotlin/Jupyter analytics notebooks.docs/StardustDocs/— the documentation website (WriterSide), with generated snippets and iframes.
Each has its own AGENTS.md (examples/AGENTS.md, docs/StardustDocs/AGENTS.md) with the authoritative
layout and build instructions.
dataframe (root aggregate)
├── core — base module, no module dependencies
├── dataframe-arrow — core
├── dataframe-csv — core, dataframe-json
├── dataframe-excel — core, dataframe-json
├── dataframe-jdbc — core
└── dataframe-json — core
outside the aggregate:
dataframe-jupyter — dataframe (the whole aggregate)
dataframe-geo — core
dataframe-geo-jupyter — dataframe-geo, dataframe-jupyter
dataframe-openapi — core
dataframe-openapi-generator — core, dataframe-openapi
dataframe-compiler-plugin-core — core (shaded subset)
samples — dataframe (runtimeOnly)
common-test-utils — core (test-only, applied to every JVM module)
- Root project:
dataframe; grouporg.jetbrains.kotlinx - Build tool: Gradle with the Kotlin DSL; the daemon JDK comes from
gradle/gradle-daemon-jvm.properties - Target platform: JVM (the Android example builds against the published artifacts)
- Documentation: Dokka for API docs, KoDEx for KDoc preprocessing, korro for the website samples
- Public API: guarded by binary-compatibility-validator in every publishable module (
api/*.apidumps)