Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
64 changes: 63 additions & 1 deletion core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@ plugins {
kotlin("plugin.serialization")
kotlin("jupyter.api") version libs.versions.kotlinJupyter

id("io.github.devcrocod.korro") version libs.versions.korro
id("org.jetbrains.dataframe.generator")
id("org.jetbrains.kotlinx.kover")
id("org.jmailen.kotlinter")
id("org.jetbrains.kotlinx.dataframe")
}

group = "org.jetbrains.kotlinx"
Expand Down Expand Up @@ -42,14 +44,64 @@ dependencies {
testImplementation(libs.jsoup)
}

kotlin.sourceSets {
main {
kotlin.srcDir("build/generated/ksp/main/kotlin/")
}
test {
kotlin.srcDir("build/generated/ksp/test/kotlin/")
}
}

tasks.lintKotlinMain {
exclude("**/*keywords*/**")
exclude {
it.name.endsWith(".Generated.kt")
}
exclude {
it.name.endsWith("\$Extensions.kt")
}
}

tasks.lintKotlinTest {
exclude {
it.name.endsWith(".Generated.kt")
}
exclude {
it.name.endsWith("\$Extensions.kt")
}
enabled = true
}

korro {
docs = fileTree(rootProject.rootDir) {
include("docs/StardustDocs/topics/*.md")
}

samples = fileTree(project.projectDir) {
include("src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/*.kt")
include("src/test/kotlin/org/jetbrains/kotlinx/dataframe/samples/api/*.kt")
}

groupSamples {

beforeSample.set("<tab title=\"NAME\">\n")
afterSample.set("\n</tab>")

funSuffix("_properties") {
replaceText("NAME", "Properties")
}
funSuffix("_accessors") {
replaceText("NAME", "Accessors")
}
funSuffix("_strings") {
replaceText("NAME", "Strings")
}
beforeGroup.set("<tabs>\n")
afterGroup.set("</tabs>")
}
}

kotlinter {
ignoreFailures = false
reporters = arrayOf("checkstyle", "plain")
Expand All @@ -61,7 +113,8 @@ kotlinter {
"experimental:argument-list-wrapping",
"experimental:annotation",
"max-line-length",
"filename"
"filename",
"comment-spacing"
)
}

Expand Down Expand Up @@ -114,3 +167,12 @@ artifacts {
builtBy(tasks.jar)
}
}

dataframes {
schema {
sourceSet = "test"
visibility = org.jetbrains.dataframe.gradle.DataSchemaVisibility.IMPLICIT_PUBLIC
data = "https://raw.githubusercontent.com/Kotlin/dataframe/master/data/jetbrains_repositories.csv"
name = "org.jetbrains.kotlinx.dataframe.samples.api.Repository"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,6 @@ public inline fun <reified R> AnyRow.valuesOf(): List<R> = values().filterIsInst
@DataSchema
public data class NameValuePair<V>(val name: String, val value: V)

public val <V> ColumnsContainer<NameValuePair<V>>.name: DataColumn<String> @JvmName("NameValuePair_name") get() = this["name"] as DataColumn<String>
public val <V> DataRow<NameValuePair<V>>.name: String @JvmName("NameValuePair_name") get() = this["name"] as String
public val <V> ColumnsContainer<NameValuePair<V>>.value: DataColumn<V> @JvmName("NameValuePair_value") get() = this["value"] as DataColumn<V>
public val <V> DataRow<NameValuePair<V>>.value: V @JvmName("NameValuePair_value") get() = this["value"] as V

// Without these overloads row.transpose().name or row.map { name } won't resolve
public val ColumnsContainer<NameValuePair<*>>.name: DataColumn<String> @JvmName("NameValuePairAny_name") get() = this["name"] as DataColumn<String>
public val DataRow<NameValuePair<*>>.name: String @JvmName("NameValuePairAny_name") get() = this["name"] as String
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package org.jetbrains.kotlinx.dataframe.api

import org.jetbrains.kotlinx.dataframe.ColumnsContainer
import org.jetbrains.kotlinx.dataframe.ColumnsSelector
import org.jetbrains.kotlinx.dataframe.DataColumn
import org.jetbrains.kotlinx.dataframe.DataFrame
import org.jetbrains.kotlinx.dataframe.DataRow
import org.jetbrains.kotlinx.dataframe.annotations.DataSchema
import org.jetbrains.kotlinx.dataframe.columns.ColumnPath
import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
Expand All @@ -31,33 +29,6 @@ public interface ColumnDescription {
public val max: Any
}

public val ColumnsContainer<ColumnDescription>.count: DataColumn<Int> @JvmName("ColumnDescription_count") get() = this["count"] as DataColumn<Int>
public val DataRow<ColumnDescription>.count: Int @JvmName("ColumnDescription_count") get() = this["count"] as Int
public val ColumnsContainer<ColumnDescription>.freq: DataColumn<Int> @JvmName("ColumnDescription_freq") get() = this["freq"] as DataColumn<Int>
public val DataRow<ColumnDescription>.freq: Int @JvmName("ColumnDescription_freq") get() = this["freq"] as Int
public val ColumnsContainer<ColumnDescription>.max: DataColumn<Any> @JvmName("ColumnDescription_max") get() = this["max"] as DataColumn<Any>
public val DataRow<ColumnDescription>.max: Any @JvmName("ColumnDescription_max") get() = this["max"] as Any
public val ColumnsContainer<ColumnDescription>.mean: DataColumn<Double> @JvmName("ColumnDescription_mean") get() = this["mean"] as DataColumn<Double>
public val DataRow<ColumnDescription>.mean: Double @JvmName("ColumnDescription_mean") get() = this["mean"] as Double
public val ColumnsContainer<ColumnDescription>.median: DataColumn<Any> @JvmName("ColumnDescription_median") get() = this["median"] as DataColumn<Any>
public val DataRow<ColumnDescription>.median: Any @JvmName("ColumnDescription_median") get() = this["median"] as Any
public val ColumnsContainer<ColumnDescription>.min: DataColumn<Any> @JvmName("ColumnDescription_min") get() = this["min"] as DataColumn<Any>
public val DataRow<ColumnDescription>.min: Any @JvmName("ColumnDescription_min") get() = this["min"] as Any
public val ColumnsContainer<ColumnDescription>.name: DataColumn<String> @JvmName("ColumnDescription_name") get() = this["name"] as DataColumn<String>
public val DataRow<ColumnDescription>.name: String @JvmName("ColumnDescription_name") get() = this["name"] as String
public val ColumnsContainer<ColumnDescription>.nulls: DataColumn<Int> @JvmName("ColumnDescription_nulls") get() = this["nulls"] as DataColumn<Int>
public val DataRow<ColumnDescription>.nulls: Int @JvmName("ColumnDescription_nulls") get() = this["nulls"] as Int
public val ColumnsContainer<ColumnDescription>.path: DataColumn<ColumnPath> @JvmName("ColumnDescription_path") get() = this["path"] as DataColumn<ColumnPath>
public val DataRow<ColumnDescription>.path: ColumnPath @JvmName("ColumnDescription_path") get() = this["path"] as ColumnPath
public val ColumnsContainer<ColumnDescription>.std: DataColumn<Double> @JvmName("ColumnDescription_std") get() = this["std"] as DataColumn<Double>
public val DataRow<ColumnDescription>.std: Double @JvmName("ColumnDescription_std") get() = this["std"] as Double
public val ColumnsContainer<ColumnDescription>.top: DataColumn<Any> @JvmName("ColumnDescription_top") get() = this["top"] as DataColumn<Any>
public val DataRow<ColumnDescription>.top: Any @JvmName("ColumnDescription_top") get() = this["top"] as Any
public val ColumnsContainer<ColumnDescription>.type: DataColumn<KType> @JvmName("ColumnDescription_type") get() = this["type"] as DataColumn<KType>
public val DataRow<ColumnDescription>.type: KType @JvmName("ColumnDescription_type") get() = this["type"] as KType
public val ColumnsContainer<ColumnDescription>.unique: DataColumn<Int> @JvmName("ColumnDescription_unique") get() = this["unique"] as DataColumn<Int>
public val DataRow<ColumnDescription>.unique: Int @JvmName("ColumnDescription_unique") get() = this["unique"] as Int

// endregion

// region DataColumn
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package org.jetbrains.kotlinx.dataframe.api

import org.jetbrains.kotlinx.dataframe.Column
import org.jetbrains.kotlinx.dataframe.ColumnsContainer
import org.jetbrains.kotlinx.dataframe.ColumnsSelector
import org.jetbrains.kotlinx.dataframe.DataColumn
import org.jetbrains.kotlinx.dataframe.DataFrame
import org.jetbrains.kotlinx.dataframe.DataRow
import org.jetbrains.kotlinx.dataframe.annotations.DataSchema
import org.jetbrains.kotlinx.dataframe.impl.columns.toColumns
import org.jetbrains.kotlinx.dataframe.impl.nameGenerator
Expand All @@ -20,9 +18,6 @@ public interface ValueCount {
public val count: Int
}

public val ColumnsContainer<ValueCount>.count: DataColumn<Int> @JvmName("ValueCount_count") get() = this["count"] as DataColumn<Int>
public val DataRow<ValueCount>.count: Int @JvmName("ValueCount_count") get() = this["count"] as Int

// endregion

// region DataColumn
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import org.jetbrains.kotlinx.dataframe.AnyRow
import org.jetbrains.kotlinx.dataframe.ColumnsContainer
import org.jetbrains.kotlinx.dataframe.DataColumn
import org.jetbrains.kotlinx.dataframe.DataRow
import org.jetbrains.kotlinx.dataframe.api.ColumnDescription
import org.jetbrains.kotlinx.dataframe.api.ValueCount
import org.jetbrains.kotlinx.dataframe.api.dataFrameOf
import org.jetbrains.kotlinx.dataframe.api.dropNulls
import org.jetbrains.kotlinx.dataframe.api.move
Expand Down Expand Up @@ -256,16 +254,6 @@ class CodeGenerationTests : BaseTest() {
}
}

@Test
fun generateApi() {
val generator = CodeGenerator.create()
val valueCount = generator.generate<ValueCount>(InterfaceGenerationMode.None, extensionProperties = true)
println(valueCount.declarations)
println()
val describe = generator.generate<ColumnDescription>(InterfaceGenerationMode.None, extensionProperties = true)
println(describe.declarations)
}

@Test
fun patterns() {
"""^[\d]""".toRegex().matches("3fds")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package org.jetbrains.kotlinx.dataframe.samples.api

import io.kotest.matchers.shouldBe
import org.jetbrains.kotlinx.dataframe.DataRow
import org.jetbrains.kotlinx.dataframe.annotations.DataSchema
import org.jetbrains.kotlinx.dataframe.api.cast
import org.jetbrains.kotlinx.dataframe.api.dataFrameOf
import org.jetbrains.kotlinx.dataframe.api.group
import org.jetbrains.kotlinx.dataframe.api.into

public open class TestBase {

val df = dataFrameOf("firstName", "lastName", "age", "city", "weight", "isHappy")(
"Alice", "Cooper", 15, "London", 54, true,
"Bob", "Dylan", 45, "Dubai", 87, true,
"Charlie", "Daniels", 20, "Moscow", null, false,
"Charlie", "Chaplin", 40, "Milan", null, true,
"Bob", "Marley", 30, "Tokyo", 68, true,
"Alice", "Wolf", 20, null, 55, false,
"Charlie", "Byrd", 30, "Moscow", 90, true
).group("firstName", "lastName").into("name").cast<Person>()

@DataSchema
interface Name {
val firstName: String
val lastName: String
}

@DataSchema
interface Person {
val age: Int
val city: String?
val name: DataRow<Name>
val weight: Int?
val isHappy: Boolean
}

infix fun <T, U : T> T.willBe(expected: U?) = shouldBe(expected)
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package org.jetbrains.kotlinx.dataframe.testSets.person

import org.jetbrains.kotlinx.dataframe.ColumnsContainer
import org.jetbrains.kotlinx.dataframe.DataColumn
import org.jetbrains.kotlinx.dataframe.DataFrame
import org.jetbrains.kotlinx.dataframe.DataRow
import org.jetbrains.kotlinx.dataframe.annotations.DataSchema
import org.jetbrains.kotlinx.dataframe.api.cast
import org.jetbrains.kotlinx.dataframe.api.column
Expand All @@ -18,15 +15,6 @@ interface Person {
val weight: Int?
}

val DataRow<Person>.name: String get() = this["name"] as String
val DataRow<Person>.age: Int get() = this["age"] as Int
val DataRow<Person>.city: String? get() = this["city"] as String?
val DataRow<Person>.weight: Int? get() = this["weight"] as Int?
val ColumnsContainer<Person>.name: DataColumn<String> get() = this["name"] as DataColumn<String>
val ColumnsContainer<Person>.age: DataColumn<Int> get() = this["age"] as DataColumn<Int>
val ColumnsContainer<Person>.city: DataColumn<String?> get() = this["city"] as DataColumn<String?>
val ColumnsContainer<Person>.weight: DataColumn<Int?> get() = this["weight"] as DataColumn<Int?>

open class BaseTest {

// Data set
Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ ktlint = "3.4.5"
kotlin = "1.7.20-RC"
dokka = "1.5.31"
libsPublisher = "0.0.60-dev-30"
dataframe = "0.9.0-dev-1114"
dataframe = "0.9.0-dev-1117"
korro = "0.1.1-dev-29"
kover = "0.6.0-Beta"

Expand Down
12 changes: 2 additions & 10 deletions tests/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ kotlin.sourceSets {

korro {
docs = fileTree(rootProject.rootDir) {
include("docs/StardustDocs/topics/*.md")
include("docs/StardustDocs/topics/read.md")
include("docs/StardustDocs/topics/write.md")
}

samples = fileTree(project.projectDir) {
Expand Down Expand Up @@ -98,12 +99,3 @@ kotlinter {
"filename"
)
}

dataframes {
schema {
sourceSet = "test"
visibility = DataSchemaVisibility.IMPLICIT_PUBLIC
data = "https://raw.githubusercontent.com/Kotlin/dataframe/master/data/jetbrains_repositories.csv"
name = "org.jetbrains.kotlinx.dataframe.samples.api.Repository"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import org.jetbrains.kotlinx.dataframe.testJson
import org.junit.Test
import kotlin.reflect.typeOf

class Read : TestBase() {
class Read {
@Test
fun readCsvCustom() {
val file = testCsv("syntheticSample")
Expand Down

This file was deleted.