Skip to content

Commit 52306e0

Browse files
committed
Move jupyter integration components from :core
1 parent 93c8d0f commit 52306e0

File tree

22 files changed

+107
-19
lines changed

22 files changed

+107
-19
lines changed

core/build.gradle.kts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ plugins {
1313
alias(kotlin.jvm)
1414
alias(publisher)
1515
alias(serialization)
16-
alias(jupyter.api)
1716
alias(korro)
1817
alias(keywordGenerator)
1918
alias(kover)
@@ -374,10 +373,6 @@ tasks.test {
374373
}
375374
}
376375

377-
tasks.processJupyterApiResources {
378-
libraryProducers = listOf("org.jetbrains.kotlinx.dataframe.jupyter.Integration")
379-
}
380-
381376
kotlinPublications {
382377
publication {
383378
publicationName.set("core")

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/CodeWithConverter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package org.jetbrains.kotlinx.dataframe.codeGen
22

3-
import org.jetbrains.kotlinx.jupyter.api.Code
4-
import org.jetbrains.kotlinx.jupyter.api.VariableName
3+
public typealias Code = String
4+
public typealias VariableName = String
55

66
/**
77
* Class representing generated code declarations for a [Marker].

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/codeGen/ReplCodeGenerator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ package org.jetbrains.dataframe.impl.codeGen
22

33
import org.jetbrains.kotlinx.dataframe.AnyFrame
44
import org.jetbrains.kotlinx.dataframe.AnyRow
5+
import org.jetbrains.kotlinx.dataframe.codeGen.Code
56
import org.jetbrains.kotlinx.dataframe.codeGen.CodeWithConverter
67
import org.jetbrains.kotlinx.dataframe.impl.codeGen.ReplCodeGeneratorImpl
7-
import org.jetbrains.kotlinx.jupyter.api.Code
88
import kotlin.reflect.KClass
99
import kotlin.reflect.KProperty
1010

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/codeGen/CodeGeneratorImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import org.jetbrains.kotlinx.dataframe.annotations.DataSchema
1919
import org.jetbrains.kotlinx.dataframe.api.ColumnSelectionDsl
2020
import org.jetbrains.kotlinx.dataframe.api.DataSchemaEnum
2121
import org.jetbrains.kotlinx.dataframe.codeGen.BaseField
22+
import org.jetbrains.kotlinx.dataframe.codeGen.Code
2223
import org.jetbrains.kotlinx.dataframe.codeGen.CodeWithConverter
2324
import org.jetbrains.kotlinx.dataframe.codeGen.DefaultReadDfMethod
2425
import org.jetbrains.kotlinx.dataframe.codeGen.ExtensionsCodeGenerator
@@ -33,7 +34,6 @@ import org.jetbrains.kotlinx.dataframe.codeGen.toNullable
3334
import org.jetbrains.kotlinx.dataframe.columns.ColumnGroup
3435
import org.jetbrains.kotlinx.dataframe.impl.toSnakeCase
3536
import org.jetbrains.kotlinx.dataframe.schema.DataFrameSchema
36-
import org.jetbrains.kotlinx.jupyter.api.Code
3737

3838
private fun renderNullability(nullable: Boolean) = if (nullable) "?" else ""
3939

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/codeGen/ReplCodeGeneratorImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import org.jetbrains.kotlinx.dataframe.DataFrame
99
import org.jetbrains.kotlinx.dataframe.DataRow
1010
import org.jetbrains.kotlinx.dataframe.annotations.DataSchema
1111
import org.jetbrains.kotlinx.dataframe.api.schema
12+
import org.jetbrains.kotlinx.dataframe.codeGen.Code
1213
import org.jetbrains.kotlinx.dataframe.codeGen.CodeWithConverter
1314
import org.jetbrains.kotlinx.dataframe.codeGen.Marker
1415
import org.jetbrains.kotlinx.dataframe.codeGen.MarkerVisibility
1516
import org.jetbrains.kotlinx.dataframe.codeGen.MarkersExtractor
1617
import org.jetbrains.kotlinx.dataframe.schema.DataFrameSchema
17-
import org.jetbrains.kotlinx.jupyter.api.Code
1818
import kotlin.reflect.KClass
1919
import kotlin.reflect.KProperty
2020
import kotlin.reflect.KType

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/codeGen/SchemaReader.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import org.jetbrains.dataframe.impl.codeGen.CodeGenerator
44
import org.jetbrains.kotlinx.dataframe.AnyFrame
55
import org.jetbrains.kotlinx.dataframe.DataFrame
66
import org.jetbrains.kotlinx.dataframe.api.schema
7+
import org.jetbrains.kotlinx.dataframe.codeGen.Code
78
import org.jetbrains.kotlinx.dataframe.codeGen.DefaultReadDfMethod
89
import org.jetbrains.kotlinx.dataframe.io.SupportedCodeGenerationFormat
910
import org.jetbrains.kotlinx.dataframe.io.SupportedDataFrameFormat
@@ -12,7 +13,6 @@ import org.jetbrains.kotlinx.dataframe.io.guessFormat
1213
import org.jetbrains.kotlinx.dataframe.io.read
1314
import org.jetbrains.kotlinx.dataframe.io.readCodeForGeneration
1415
import org.jetbrains.kotlinx.dataframe.schema.DataFrameSchema
15-
import org.jetbrains.kotlinx.jupyter.api.Code
1616
import java.net.URL
1717

1818
/**

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/guess.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import org.jetbrains.kotlinx.dataframe.annotations.ImportDataSchema
1111
import org.jetbrains.kotlinx.dataframe.annotations.Interpretable
1212
import org.jetbrains.kotlinx.dataframe.annotations.OptInRefine
1313
import org.jetbrains.kotlinx.dataframe.api.single
14+
import org.jetbrains.kotlinx.dataframe.codeGen.Code
1415
import org.jetbrains.kotlinx.dataframe.codeGen.DefaultReadDfMethod
15-
import org.jetbrains.kotlinx.jupyter.api.Code
1616
import java.io.BufferedInputStream
1717
import java.io.File
1818
import java.io.FileNotFoundException

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/CellRenderer.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,3 @@ public object DefaultCellRenderer : CellRenderer {
6363
return renderValueForHtml(value, tooltipLimit, configuration.decimalFormat).truncatedContent
6464
}
6565
}
66-

core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/testSets/person/HtmlRenderingTests.kt

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import org.jetbrains.kotlinx.dataframe.api.group
88
import org.jetbrains.kotlinx.dataframe.api.into
99
import org.jetbrains.kotlinx.dataframe.api.parse
1010
import org.jetbrains.kotlinx.dataframe.io.toStandaloneHTML
11-
import org.jetbrains.kotlinx.jupyter.util.findNthSubstring
1211
import org.junit.Ignore
1312
import org.junit.Test
1413
import java.awt.Desktop
@@ -38,4 +37,18 @@ class HtmlRenderingTests : BaseTest() {
3837
html shouldContain "href"
3938
html.findNthSubstring(address, 2) shouldNotBe -1
4039
}
40+
41+
private fun String.findNthSubstring(s: String, n: Int, start: Int = 0): Int {
42+
if (n < 1 || start == -1) return -1
43+
44+
var i = start
45+
46+
for (k in 1..n) {
47+
i = indexOf(s, i)
48+
if (i == -1) return -1
49+
i += s.length
50+
}
51+
52+
return i - s.length
53+
}
4154
}

dataframe-jupyter/build.gradle.kts

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
plugins {
2+
alias(libs.plugins.kotlin.jvm)
3+
alias(libs.plugins.publisher)
4+
alias(libs.plugins.jupyter.api)
5+
}
6+
7+
group = "org.jetbrains.kotlinx"
8+
9+
repositories {
10+
mavenCentral()
11+
}
12+
13+
dependencies {
14+
compileOnly(project(":core"))
15+
testImplementation(libs.junit)
16+
testImplementation(libs.serialization.json)
17+
testImplementation(project(":core"))
18+
testImplementation(libs.kotestAssertions) {
19+
exclude("org.jetbrains.kotlin", "kotlin-stdlib-jdk8")
20+
}
21+
}
22+
23+
kotlin {
24+
explicitApi()
25+
}
26+
27+
tasks.compileKotlin {
28+
kotlinOptions {
29+
freeCompilerArgs += listOf("-Xfriend-paths=${project(":core").projectDir}")
30+
jvmTarget = "11"
31+
}
32+
}
33+
34+
tasks.compileTestKotlin {
35+
kotlinOptions {
36+
val friendModule = project(":core")
37+
val jarTask = friendModule.tasks.getByName("jar") as Jar
38+
val jarPath = jarTask.archiveFile.get().asFile.absolutePath
39+
freeCompilerArgs += "-Xfriend-paths=$jarPath"
40+
jvmTarget = "11"
41+
}
42+
}
43+
44+
tasks.withType<JavaCompile> {
45+
sourceCompatibility = JavaVersion.VERSION_11.toString()
46+
targetCompatibility = JavaVersion.VERSION_11.toString()
47+
}
48+
49+
tasks.processJupyterApiResources {
50+
libraryProducers = listOf("org.jetbrains.kotlinx.dataframe.jupyter.Integration")
51+
}
52+
53+
kotlinPublications {
54+
publication {
55+
publicationName.set("dataframe-jupyter")
56+
artifactId.set("dataframe-jupyter")
57+
description.set("Kotlin DataFrame integration with Kotlin Jupyter")
58+
packageName.set("dataframe-jupyter")
59+
}
60+
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
2+
13
package org.jetbrains.kotlinx.dataframe.jupyter
24

35
import org.jetbrains.dataframe.impl.codeGen.CodeGenerator
@@ -32,7 +34,6 @@ import org.jetbrains.kotlinx.dataframe.api.asColumnGroup
3234
import org.jetbrains.kotlinx.dataframe.api.asDataFrame
3335
import org.jetbrains.kotlinx.dataframe.api.columnsCount
3436
import org.jetbrains.kotlinx.dataframe.api.isColumnGroup
35-
import org.jetbrains.kotlinx.dataframe.api.name
3637
import org.jetbrains.kotlinx.dataframe.codeGen.CodeWithConverter
3738
import org.jetbrains.kotlinx.dataframe.columns.ColumnGroup
3839
import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
@@ -230,10 +231,10 @@ internal class Integration(
230231
{ "DataRow: index = ${it.index()}, columnsCount = ${it.columnsCount()}" },
231232
)
232233
render<ColumnGroup<*>>(
233-
{ """ColumnGroup: name = "${it.name}", rowsCount = ${it.rowsCount()}, columnsCount = ${it.columnsCount()}""" },
234+
{ """ColumnGroup: name = "${it.name()}", rowsCount = ${it.rowsCount()}, columnsCount = ${it.columnsCount()}""" },
234235
)
235236
render<AnyCol>(
236-
{ """DataColumn: name = "${it.name}", type = ${renderType(it.type())}, size = ${it.size()}""" },
237+
{ """DataColumn: name = "${it.name()}", type = ${renderType(it.type())}, size = ${it.size()}""" },
237238
)
238239
render<AnyFrame>(
239240
{ "DataFrame: rowsCount = ${it.rowsCount()}, columnsCount = ${it.columnsCount()}" }

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/JupyterCellRenderer.kt renamed to dataframe-jupyter/src/main/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/JupyterCellRenderer.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
2+
13
package org.jetbrains.kotlinx.dataframe.jupyter
24

35
import org.jetbrains.kotlinx.dataframe.io.DisplayConfiguration

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/JupyterHtmlRenderer.kt renamed to dataframe-jupyter/src/main/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/JupyterHtmlRenderer.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
2+
13
package org.jetbrains.kotlinx.dataframe.jupyter
24

35
import kotlinx.serialization.ExperimentalSerializationApi
@@ -79,8 +81,8 @@ internal inline fun <reified T : Any> JupyterHtmlRenderer.render(
7981
val jsonEncodedDf = when {
8082
!ideBuildNumber.supportsDynamicNestedTables() -> {
8183
buildJsonObject {
82-
put(NROW, df.size.nrow)
83-
put(NCOL, df.size.ncol)
84+
put(NROW, df.size().nrow)
85+
put(NCOL, df.size().ncol)
8486
putJsonArray(COLUMNS) { addAll(df.columnNames()) }
8587
put(KOTLIN_DATAFRAME, encodeFrame(df.take(limit)))
8688
}.toString()

core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/RenderingTests.kt renamed to dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/RenderingTests.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
2+
13
package org.jetbrains.kotlinx.dataframe.jupyter
24

35
import io.kotest.assertions.throwables.shouldNotThrow

dataframe-openapi/build.gradle.kts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ dependencies {
3131
}
3232

3333
testApi(project(":core"))
34+
testImplementation(project(":dataframe-jupyter"))
3435
testImplementation(libs.junit)
3536
testImplementation(libs.kotestAssertions) {
3637
exclude("org.jetbrains.kotlin", "kotlin-stdlib-jdk8")
@@ -49,3 +50,15 @@ kotlinPublications {
4950
kotlin {
5051
explicitApi()
5152
}
53+
54+
// Only for tests. Because tests depend on kotlin-jupyter, and it's compatible with Java 11
55+
tasks.compileTestJava {
56+
sourceCompatibility = JavaVersion.VERSION_11.toString()
57+
targetCompatibility = JavaVersion.VERSION_11.toString()
58+
}
59+
60+
tasks.compileTestKotlin {
61+
kotlinOptions {
62+
jvmTarget = "11"
63+
}
64+
}

settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,4 @@ plugins {
4141
}
4242
include("dataframe-excel")
4343
include("core")
44+
include("dataframe-jupyter")

0 commit comments

Comments
 (0)