Skip to content

Commit 80b15fd

Browse files
Merge branch 'master' into formatHeader
2 parents 92eae1d + 1effeac commit 80b15fd

File tree

25 files changed

+241
-283
lines changed

25 files changed

+241
-283
lines changed

CONTRIBUTING.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ This library is built with Gradle.
112112
making local publishing faster: `./gradlew publishToMavenLocal -PskipKodex`.
113113
This, however, publishes the library with "broken" KDocs,
114114
so it's only meant for faster iterations during development.
115+
* The parameter `-PincludeCoreLibrariesJson` makes the build include the `libraries.json` file in the `:core` module.
116+
This file allows loading dataframe-jupyter when dataframe-core is present on its own in a Kotlin Notebook.
117+
Usually only done when publishing.
115118

116119
You can import this project into IDEA, but you have to delegate the build actions
117120
to Gradle (in Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle -> Runner)

build.gradle.kts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,23 @@ allprojects {
223223
} catch (_: UnknownDomainObjectException) {
224224
logger.warn("Could not set buildConfig on :${this.name}")
225225
}
226+
227+
// Adds the instrumentedJars configuration/artifact to all sub-projects with a `jar` task
228+
// This allows other modules to depend on the output of this task, aka the compiled jar of that module
229+
// Used in :plugins:dataframe-gradle-plugin integration tests and in :samples for compiler plugin support
230+
try {
231+
val instrumentedJars: Configuration by configurations.creating {
232+
isCanBeConsumed = true
233+
isCanBeResolved = false
234+
}
235+
artifacts {
236+
add("instrumentedJars", tasks.jar.get().archiveFile) {
237+
builtBy(tasks.jar)
238+
}
239+
}
240+
} catch (_: Exception) {
241+
logger.warn("Could not set instrumentedJars on :${this.name}")
242+
}
226243
}
227244
}
228245

core/build.gradle.kts

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import com.google.devtools.ksp.gradle.KspTaskJvm
33
import io.github.devcrocod.korro.KorroTask
44
import nl.jolanrensen.kodex.gradle.creatingRunKodexTask
55
import org.gradle.jvm.tasks.Jar
6-
import org.gradle.kotlin.dsl.withType
6+
import org.intellij.lang.annotations.Language
77
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
88

99
plugins {
@@ -251,6 +251,53 @@ val changeJarTask by tasks.registering {
251251
}
252252
}
253253

254+
// generateLibrariesJson makes sure a META-INF/kotlin-jupyter-libraries/libraries.json file is generated
255+
// This file allows loading dataframe-jupyter when dataframe-core is present on its own in a Kotlin Notebook.
256+
val generatedJupyterResourcesDir = layout.buildDirectory.dir("generated/jupyter")
257+
val generateLibrariesJson by tasks.registering {
258+
val outDir = generatedJupyterResourcesDir.get().asFile.resolve("META-INF/kotlin-jupyter-libraries")
259+
val outFile = outDir.resolve("libraries.json")
260+
outputs.file(outFile)
261+
inputs.property("version", project.version)
262+
263+
doLast {
264+
outDir.mkdirs()
265+
@Language("json")
266+
val content =
267+
"""
268+
{
269+
"descriptors": [
270+
{
271+
"init": [
272+
"USE { dependencies(\"org.jetbrains.kotlinx:dataframe-jupyter:${project.version}\") }"
273+
]
274+
}
275+
]
276+
}
277+
""".trimIndent()
278+
279+
outFile.delete()
280+
outFile.writeText(content)
281+
logger.lifecycle("generated META-INF/kotlin-jupyter-libraries/libraries.json for :core")
282+
}
283+
}
284+
285+
// If `includeCoreLibrariesJson` is set, modify the processResources task such that it includes
286+
// a META-INF libraries.json file.
287+
// This file allows loading dataframe-jupyter when dataframe-core is present on its own in a Kotlin Notebook.
288+
// This is usually only done when publishing.
289+
tasks.processResources {
290+
if (project.hasProperty("includeCoreLibrariesJson")) {
291+
dependsOn(generateLibrariesJson)
292+
from(generatedJupyterResourcesDir) {
293+
into("") // keep META-INF/... structure as generated
294+
}
295+
doLast {
296+
logger.lifecycle("$this includes generated META-INF/kotlin-jupyter-libraries/libraries.json")
297+
}
298+
}
299+
}
300+
254301
// if `processKDocsMain` runs, the Jar tasks must run after it so the generated-sources are there
255302
tasks.withType<Jar> {
256303
mustRunAfter(changeJarTask, tasks.generateKeywordsSrc, processKDocsMain)
@@ -386,17 +433,6 @@ kotlinPublications {
386433
}
387434
}
388435

389-
val instrumentedJars: Configuration by configurations.creating {
390-
isCanBeConsumed = true
391-
isCanBeResolved = false
392-
}
393-
394-
artifacts {
395-
add("instrumentedJars", tasks.jar.get().archiveFile) {
396-
builtBy(tasks.jar)
397-
}
398-
}
399-
400436
// Disable and enable if updating plugin breaks the build
401437
dataframes {
402438
schema {

dataframe-csv/build.gradle.kts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -160,14 +160,3 @@ kotlinPublications {
160160
kotlin {
161161
explicitApi()
162162
}
163-
164-
val instrumentedJars: Configuration by configurations.creating {
165-
isCanBeConsumed = true
166-
isCanBeResolved = false
167-
}
168-
169-
artifacts {
170-
add("instrumentedJars", tasks.jar.get().archiveFile) {
171-
builtBy(tasks.jar)
172-
}
173-
}

dataframe-json/build.gradle.kts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,6 @@ sourceSets {
5959
}
6060
}
6161

62-
val instrumentedJars: Configuration by configurations.creating {
63-
isCanBeConsumed = true
64-
isCanBeResolved = false
65-
}
66-
67-
artifacts {
68-
add("instrumentedJars", tasks.jar.get().archiveFile) {
69-
builtBy(tasks.jar)
70-
}
71-
}
72-
7362
kotlinPublications {
7463
publication {
7564
publicationName = "dataframeJson"

dataframe-jupyter/src/main/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/Integration.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ import kotlin.reflect.KType
5656
import kotlin.reflect.full.isSubtypeOf
5757

5858
/** Users will get an error if their Kotlin Jupyter kernel is older than this version. */
59-
private const val MIN_KERNEL_VERSION = "0.11.0.198"
59+
private const val MIN_KERNEL_VERSION = "0.15.0.606"
6060

6161
internal val newDataSchemas = mutableListOf<KClass<*>>()
6262

docs/StardustDocs/resources/api/tail/notebook_test_tail_1.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,7 @@
459459
/*<!--*/
460460
call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"firstName: String\">firstName</span>", children: [], rightAlign: false, values: ["Alice","Bob","Charlie","Charlie","Bob","Alice","Charlie"] },
461461
{ name: "<span title=\"lastName: String\">lastName</span>", children: [], rightAlign: false, values: ["Cooper","Dylan","Daniels","Chaplin","Marley","Wolf","Byrd"] },
462+
{ name: "<span title=\"name: DataRow<*>\">name</span>", children: [0, 1], rightAlign: false, values: ["<span class=\"formatted\" title=\"firstName: Alice\nlastName: Cooper\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Alice<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Cooper<span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Bob\nlastName: Dylan\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Bob<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Dylan<span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Charlie\nlastName: Daniels\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Charlie<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Dan<span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Charlie\nlastName: Chaplin\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Charlie<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Cha<span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Bob\nlastName: Marley\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Bob<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Marley<span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Alice\nlastName: Wolf\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Alice<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Wolf<span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Charlie\nlastName: Byrd\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Charlie<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Byrd<span class=\"structural\"> }</span></span>"] },
462463
{ name: "<span title=\"age: Int\">age</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">15</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">45</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">20</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">40</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">30</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">20</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">30</span></span>"] },
463464
{ name: "<span title=\"city: String?\">city</span>", children: [], rightAlign: false, values: ["London","Dubai","Moscow","Milan","Tokyo","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","Moscow"] },
464465
{ name: "<span title=\"weight: Int?\">weight</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">54</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">87</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">68</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">55</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">90</span></span>"] },

docs/StardustDocs/resources/api/tail/notebook_test_tail_2.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,7 @@
459459
/*<!--*/
460460
call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"firstName: String\">firstName</span>", children: [], rightAlign: false, values: ["Charlie","Charlie","Bob","Alice","Charlie"] },
461461
{ name: "<span title=\"lastName: String\">lastName</span>", children: [], rightAlign: false, values: ["Daniels","Chaplin","Marley","Wolf","Byrd"] },
462+
{ name: "<span title=\"name: DataRow<*>\">name</span>", children: [0, 1], rightAlign: false, values: ["<span class=\"formatted\" title=\"firstName: Charlie\nlastName: Daniels\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Charlie<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Dan<span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Charlie\nlastName: Chaplin\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Charlie<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Cha<span class=\"structural\">...</span><span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Bob\nlastName: Marley\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Bob<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Marley<span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Alice\nlastName: Wolf\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Alice<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Wolf<span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Charlie\nlastName: Byrd\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Charlie<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Byrd<span class=\"structural\"> }</span></span>"] },
462463
{ name: "<span title=\"age: Int\">age</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">20</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">40</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">30</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">20</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">30</span></span>"] },
463464
{ name: "<span title=\"city: String?\">city</span>", children: [], rightAlign: false, values: ["Moscow","Milan","Tokyo","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","Moscow"] },
464465
{ name: "<span title=\"weight: Int?\">weight</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">68</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">55</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">90</span></span>"] },

docs/StardustDocs/resources/api/tail/notebook_test_tail_3.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,7 @@
459459
/*<!--*/
460460
call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"firstName: String\">firstName</span>", children: [], rightAlign: false, values: ["Alice","Charlie"] },
461461
{ name: "<span title=\"lastName: String\">lastName</span>", children: [], rightAlign: false, values: ["Wolf","Byrd"] },
462+
{ name: "<span title=\"name: DataRow<*>\">name</span>", children: [0, 1], rightAlign: false, values: ["<span class=\"formatted\" title=\"firstName: Alice\nlastName: Wolf\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Alice<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Wolf<span class=\"structural\"> }</span></span>","<span class=\"formatted\" title=\"firstName: Charlie\nlastName: Byrd\"><span class=\"structural\">{ </span><span class=\"structural\">firstName: </span>Charlie<span class=\"structural\">, </span><span class=\"structural\">lastName: </span>Byrd<span class=\"structural\"> }</span></span>"] },
462463
{ name: "<span title=\"age: Int\">age</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">20</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">30</span></span>"] },
463464
{ name: "<span title=\"city: String?\">city</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","Moscow"] },
464465
{ name: "<span title=\"weight: Int\">weight</span>", children: [], rightAlign: true, values: ["<span class=\"formatted\" title=\"\"><span class=\"numbers\">55</span></span>","<span class=\"formatted\" title=\"\"><span class=\"numbers\">90</span></span>"] },

docs/StardustDocs/topics/dataSources/ApacheArrow.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ and in [`%use dataframe`](SetupKotlinNotebook.md#integrate-kotlin-dataframe) for
2525
> {style="warning"}
2626
2727
> Structured (nested) Arrow types such as Struct are not supported yet in Kotlin DataFrame.
28-
> See an issue: [Add inner / Struct type support in Arrow](https://github.com/Kotlin/dataframe/issues/536)
28+
> See the issue: [Add inner / Struct type support in Arrow](https://github.com/Kotlin/dataframe/issues/536)
2929
> {style="warning"}
3030
3131
## Read

0 commit comments

Comments
 (0)