Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,20 @@ allprojects {
} catch (_: UnknownDomainObjectException) {
logger.warn("Could not set buildConfig on :${this.name}")
}

try {
val instrumentedJars: Configuration by configurations.creating {
isCanBeConsumed = true
isCanBeResolved = false
}
artifacts {
add("instrumentedJars", tasks.jar.get().archiveFile) {
builtBy(tasks.jar)
}
}
} catch (_: Exception) {
logger.warn("Could not set instrumentedJars on :${this.name}")
}
}
}

Expand Down
11 changes: 0 additions & 11 deletions core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -386,17 +386,6 @@ kotlinPublications {
}
}

val instrumentedJars: Configuration by configurations.creating {
isCanBeConsumed = true
isCanBeResolved = false
}

artifacts {
add("instrumentedJars", tasks.jar.get().archiveFile) {
builtBy(tasks.jar)
}
}

// Disable and enable if updating plugin breaks the build
dataframes {
schema {
Expand Down
11 changes: 0 additions & 11 deletions dataframe-csv/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -160,14 +160,3 @@ kotlinPublications {
kotlin {
explicitApi()
}

val instrumentedJars: Configuration by configurations.creating {
isCanBeConsumed = true
isCanBeResolved = false
}

artifacts {
add("instrumentedJars", tasks.jar.get().archiveFile) {
builtBy(tasks.jar)
}
}
11 changes: 0 additions & 11 deletions dataframe-json/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -59,17 +59,6 @@ sourceSets {
}
}

val instrumentedJars: Configuration by configurations.creating {
isCanBeConsumed = true
isCanBeResolved = false
}

artifacts {
add("instrumentedJars", tasks.jar.get().archiveFile) {
builtBy(tasks.jar)
}
}

kotlinPublications {
publication {
publicationName = "dataframeJson"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,7 @@
/*<!--*/
call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"firstName: String\">firstName</span>", children: [], rightAlign: false, values: ["Alice","Bob","Charlie","Charlie","Bob","Alice","Charlie"] },
{ name: "<span title=\"lastName: String\">lastName</span>", children: [], rightAlign: false, values: ["Cooper","Dylan","Daniels","Chaplin","Marley","Wolf","Byrd"] },
{ 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>"] },
{ 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>"] },
{ 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"] },
{ 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>"] },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,7 @@
/*<!--*/
call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"firstName: String\">firstName</span>", children: [], rightAlign: false, values: ["Charlie","Charlie","Bob","Alice","Charlie"] },
{ name: "<span title=\"lastName: String\">lastName</span>", children: [], rightAlign: false, values: ["Daniels","Chaplin","Marley","Wolf","Byrd"] },
{ 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>"] },
{ 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>"] },
{ 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"] },
{ 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>"] },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,7 @@
/*<!--*/
call_DataFrame(function() { DataFrame.addTable({ cols: [{ name: "<span title=\"firstName: String\">firstName</span>", children: [], rightAlign: false, values: ["Alice","Charlie"] },
{ name: "<span title=\"lastName: String\">lastName</span>", children: [], rightAlign: false, values: ["Wolf","Byrd"] },
{ 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>"] },
{ 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>"] },
{ name: "<span title=\"city: String?\">city</span>", children: [], rightAlign: false, values: ["<span class=\"formatted\" title=\"\"><span class=\"null\">null</span></span>","Moscow"] },
{ 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>"] },
Expand Down
44 changes: 39 additions & 5 deletions samples/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,15 @@ import org.gradle.kotlin.dsl.runKtlintFormatOverTestSourceSet
import org.gradle.kotlin.dsl.sourceSets
import org.gradle.kotlin.dsl.test
import org.gradle.kotlin.dsl.testImplementation
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
java
with(libs.plugins) {
alias(kotlin.jvm)
alias(korro)
alias(ktlint)
// Compiler plugin doesn't work properly for now: https://github.com/Kotlin/dataframe/issues/1432
// alias(dataframePlugin)
// using deprecated gradle plugin instead
alias(dataframe)
alias(dataframe.compiler.plugin)
// alias(kover)
alias(ksp)
}
Expand All @@ -37,8 +35,44 @@ repositories {
mavenLocal() // for local development
}

val dependentProjects = with(projects) {
listOf(
core,
dataframeArrow,
dataframeExcel,
dataframeJdbc,
dataframeCsv,
dataframeJson,
)
}.map { project(it.path) }

tasks.withType<KotlinCompile> {
dependentProjects.forEach {
dependsOn("${it.path}:jar")
}
}

val dependentProjectJarPaths = dependentProjects.map {
it.configurations
.getByName("instrumentedJars")
.artifacts.single()
.file.absolutePath
.replace(File.separatorChar, '/')
}

dependencies {
implementation(projects.dataframe)
runtimeOnly(projects.dataframe) // Must depend on jars for the compiler plugin to work!
implementation(files(dependentProjectJarPaths))

// include api() dependencies from dependent projects, as they are not included in the jars
dependentProjects.forEach {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another way would be to have a shadowed jar in root project

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, but I wasn't sure how the compiler plugin would react to a shadowed version of dataframe being on the classpath instead of the actual jar

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and I have mixed experience with the shadowJar plugin

it.configurations.getByName("api").dependencies.forEach { dep ->
if (dep is ExternalModuleDependency) {
implementation("${dep.group}:${dep.name}:${dep.version ?: "+"}")
}
}
}

testImplementation(libs.junit)
testImplementation(libs.kotestAssertions) {
exclude("org.jetbrains.kotlin", "kotlin-stdlib-jdk8")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package org.jetbrains.kotlinx.dataframe.samples

import org.jetbrains.kotlinx.dataframe.DataColumn
import org.jetbrains.kotlinx.dataframe.api.toDataFrame
import org.jetbrains.kotlinx.dataframe.samples.api.TestBase
import org.jetbrains.kotlinx.kandy.letsplot.samples.SampleHelper

abstract class DataFrameSampleHelper(sampleName: String, subFolder: String = "samples") :
Expand All @@ -10,7 +11,8 @@ abstract class DataFrameSampleHelper(sampleName: String, subFolder: String = "sa
subFolder,
"../docs/StardustDocs/images",
"../docs/StardustDocs/resources",
) {
),
TestBase {

fun DataColumn<*>.saveDfHtmlSample() {
toDataFrame().saveDfHtmlSample()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import org.jetbrains.kotlinx.dataframe.api.all
import org.jetbrains.kotlinx.dataframe.api.cast
import org.jetbrains.kotlinx.dataframe.api.dataFrameOf
import org.jetbrains.kotlinx.dataframe.api.filter
import org.jetbrains.kotlinx.dataframe.api.generateCode
import org.jetbrains.kotlinx.dataframe.api.generateDataClasses
import org.jetbrains.kotlinx.dataframe.api.generateInterfaces
import org.jetbrains.kotlinx.dataframe.api.into
Expand All @@ -19,112 +18,33 @@ import org.jetbrains.kotlinx.dataframe.samples.DataFrameSampleHelper
import org.junit.Test

class Generate : DataFrameSampleHelper("generate_docs", "api") {
val ordersAlice = dataFrameOf(

@DataSchema
data class Orders(
val orderId: Int,
val amount: Double,
)

private val ordersAlice = dataFrameOf(
"orderId" to listOf(101, 102),
"amount" to listOf(50.0, 75.5),
)
).cast<Orders>()

val ordersBob = dataFrameOf(
private val ordersBob = dataFrameOf(
"orderId" to listOf(103, 104, 105),
"amount" to listOf(20.0, 30.0, 25.0),
).cast<Orders>()

@DataSchema
data class Customer(
val user: String,
val orders: List<Orders>,
)

val df = dataFrameOf(
private val df = dataFrameOf(
"user" to listOf("Alice", "Bob"),
"orders" to listOf(ordersAlice, ordersBob),
)

@DataSchema(isOpen = false)
interface _DataFrameType11 {
val amount: kotlin.Double
val orderId: kotlin.Int
}

val org.jetbrains.kotlinx.dataframe.ColumnsContainer<_DataFrameType11>.amount: org.jetbrains.kotlinx.dataframe.DataColumn<kotlin.Double>
@JvmName(
"_DataFrameType11_amount",
)
get() = this["amount"] as org.jetbrains.kotlinx.dataframe.DataColumn<kotlin.Double>
val org.jetbrains.kotlinx.dataframe.DataRow<_DataFrameType11>.amount: kotlin.Double
@JvmName("_DataFrameType11_amount")
get() = this["amount"] as kotlin.Double
val org.jetbrains.kotlinx.dataframe.ColumnsContainer<_DataFrameType11>.orderId: org.jetbrains.kotlinx.dataframe.DataColumn<kotlin.Int>
@JvmName(
"_DataFrameType11_orderId",
)
get() = this["orderId"] as org.jetbrains.kotlinx.dataframe.DataColumn<kotlin.Int>
val org.jetbrains.kotlinx.dataframe.DataRow<_DataFrameType11>.orderId: kotlin.Int
@JvmName("_DataFrameType11_orderId")
get() = this["orderId"] as kotlin.Int

@DataSchema
interface _DataFrameType1 {
val orders: List<_DataFrameType11>
val user: kotlin.String
}

val org.jetbrains.kotlinx.dataframe.ColumnsContainer<_DataFrameType1>.orders: org.jetbrains.kotlinx.dataframe.DataColumn<org.jetbrains.kotlinx.dataframe.DataFrame<_DataFrameType11>>
@JvmName(
"_DataFrameType1_orders",
)
get() = this["orders"] as org.jetbrains.kotlinx.dataframe.DataColumn<org.jetbrains.kotlinx.dataframe.DataFrame<_DataFrameType11>>
val org.jetbrains.kotlinx.dataframe.DataRow<_DataFrameType1>.orders: org.jetbrains.kotlinx.dataframe.DataFrame<_DataFrameType11>
@JvmName(
"_DataFrameType1_orders",
)
get() = this["orders"] as org.jetbrains.kotlinx.dataframe.DataFrame<_DataFrameType11>
val org.jetbrains.kotlinx.dataframe.ColumnsContainer<_DataFrameType1>.user: org.jetbrains.kotlinx.dataframe.DataColumn<kotlin.String>
@JvmName(
"_DataFrameType1_user",
)
get() = this["user"] as org.jetbrains.kotlinx.dataframe.DataColumn<kotlin.String>
val org.jetbrains.kotlinx.dataframe.DataRow<_DataFrameType1>.user: kotlin.String
@JvmName("_DataFrameType1_user")
get() = this["user"] as kotlin.String

@DataSchema
data class Customer1(val amount: Double, val orderId: Int)

@DataSchema
data class Customer(val orders: List<Customer1>, val user: String)

val org.jetbrains.kotlinx.dataframe.ColumnsContainer<Customer1>.amount: org.jetbrains.kotlinx.dataframe.DataColumn<kotlin.Double>
@JvmName(
"Customer1_amount",
)
get() = this["amount"] as org.jetbrains.kotlinx.dataframe.DataColumn<kotlin.Double>
val org.jetbrains.kotlinx.dataframe.DataRow<Customer1>.amount: kotlin.Double
@JvmName("Customer1_amount")
get() = this["amount"] as kotlin.Double
val org.jetbrains.kotlinx.dataframe.ColumnsContainer<Customer1>.orderId: org.jetbrains.kotlinx.dataframe.DataColumn<kotlin.Int>
@JvmName(
"Customer1_orderId",
)
get() = this["orderId"] as org.jetbrains.kotlinx.dataframe.DataColumn<kotlin.Int>
val org.jetbrains.kotlinx.dataframe.DataRow<Customer1>.orderId: kotlin.Int
@JvmName("Customer1_orderId")
get() = this["orderId"] as kotlin.Int

val org.jetbrains.kotlinx.dataframe.ColumnsContainer<Customer>.orders: org.jetbrains.kotlinx.dataframe.DataColumn<org.jetbrains.kotlinx.dataframe.DataFrame<Customer1>>
@JvmName(
"Customer_orders",
)
get() = this["orders"] as org.jetbrains.kotlinx.dataframe.DataColumn<org.jetbrains.kotlinx.dataframe.DataFrame<Customer1>>
val org.jetbrains.kotlinx.dataframe.DataRow<Customer>.orders: org.jetbrains.kotlinx.dataframe.DataFrame<Customer1>
@JvmName(
"Customer_orders",
)
get() = this["orders"] as org.jetbrains.kotlinx.dataframe.DataFrame<Customer1>
val org.jetbrains.kotlinx.dataframe.ColumnsContainer<Customer>.user: org.jetbrains.kotlinx.dataframe.DataColumn<kotlin.String>
@JvmName(
"Customer_user",
)
get() = this["user"] as org.jetbrains.kotlinx.dataframe.DataColumn<kotlin.String>
val org.jetbrains.kotlinx.dataframe.DataRow<Customer>.user: kotlin.String
@JvmName("Customer_user")
get() = this["user"] as kotlin.String

private val customers: List<Customer> = df.cast<Customer>().toList()
).cast<Customer>()

@Test
fun notebook_test_generate_docs_1() {
Expand All @@ -144,7 +64,7 @@ class Generate : DataFrameSampleHelper("generate_docs", "api") {
@Test
fun notebook_test_generate_docs_3() {
// SampleStart
df.cast<_DataFrameType1>().filter { orders.all { orderId >= 102 } }
df.filter { orders.all { orderId >= 102 } }
// SampleEnd
// .saveDfHtmlSample()
}
Expand All @@ -166,7 +86,7 @@ class Generate : DataFrameSampleHelper("generate_docs", "api") {
@Test
fun notebook_test_generate_docs_6() {
// SampleStart
df.generateCode("Customer")
df.generateInterfaces(markerName = "Customer")
// SampleEnd
}

Expand Down
Loading