Skip to content

Commit

Permalink
Merge pull request #371 from Kotlin/android-compatibility
Browse files Browse the repository at this point in the history
Android compatibility
  • Loading branch information
Jolanrensen authored May 10, 2023
2 parents 858911e + 1b002ce commit 2491bd5
Show file tree
Hide file tree
Showing 7 changed files with 132 additions and 8 deletions.
35 changes: 35 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,41 @@ repositories {
dependencies {
implementation("org.jetbrains.kotlinx:dataframe:0.10.0")
}

// Below only applies to Android projects
android {
defaultConfig {
minSdk = 26 // Android O+
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
packaging {
resources {
pickFirsts += listOf(
"META-INF/AL2.0",
"META-INF/LGPL2.1",
"META-INF/ASL-2.0.txt",
"META-INF/LICENSE.md",
"META-INF/NOTICE.md",
"META-INF/LGPL-3.0.txt",
)
excludes += listOf(
"META-INF/kotlin-jupyter-libraries/libraries.json",
"META-INF/{INDEX.LIST,DEPENDENCIES}",
"{draftv3,draftv4}/schema",
"arrow-git.properties",
)
}
}
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions.jvmTarget = "1.8"
}
```
### Jupyter Notebook

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ public inline fun <T, reified R : Comparable<R>> DataColumn<T>.medianOf(noinline
// region DataRow

public fun AnyRow.rowMedianOrNull(): Any? = Aggregators.median.aggregateMixed(
values().filterIsInstance<Comparable<Any?>>().asIterable()
)
values().filterIsInstance<Comparable<Any?>>().asIterable()
)

public fun AnyRow.rowMedian(): Any = rowMedianOrNull().suggestIfNull("rowMedian")

Expand Down
5 changes: 4 additions & 1 deletion dataframe-openapi/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,10 @@ dependencies {

implementation(libs.kotlin.reflect)
implementation(libs.kotlinpoet)
api(libs.swagger)
api(libs.swagger) {
// Fix for Android
exclude("jakarta.validation")
}

testApi(project(":core"))
testImplementation(libs.junit)
Expand Down
72 changes: 71 additions & 1 deletion docs/StardustDocs/topics/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,41 @@ plugins {
dependencies {
implementation("org.jetbrains.kotlinx:dataframe:%dataFrameVersion%")
}

// Below only applies to Android projects
android {
defaultConfig {
minSdk = 26 // Android O+
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
packaging {
resources {
pickFirsts += listOf(
"META-INF/AL2.0",
"META-INF/LGPL2.1",
"META-INF/ASL-2.0.txt",
"META-INF/LICENSE.md",
"META-INF/NOTICE.md",
"META-INF/LGPL-3.0.txt",
)
excludes += listOf(
"META-INF/kotlin-jupyter-libraries/libraries.json",
"META-INF/{INDEX.LIST,DEPENDENCIES}",
"{draftv3,draftv4}/schema",
"arrow-git.properties",
)
}
}
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions.jvmTarget = "1.8"
}
```

</tab>
Expand All @@ -73,12 +108,47 @@ dependencies {

```groovy
plugins {
id("org.jetbrains.kotlinx.dataframe") version "%dataFrameVersion%"
id "org.jetbrains.kotlinx.dataframe" version "%dataFrameVersion%"
}
dependencies {
implementation 'org.jetbrains.kotlinx:dataframe:%dataFrameVersion%'
}
// Below only applies to Android projects
android {
defaultConfig {
minSdk 26 // Android O+
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
packaging {
resources {
pickFirsts += [
"META-INF/AL2.0",
"META-INF/LGPL2.1",
"META-INF/ASL-2.0.txt",
"META-INF/LICENSE.md",
"META-INF/NOTICE.md",
"META-INF/LGPL-3.0.txt",
]
excludes += [
"META-INF/kotlin-jupyter-libraries/libraries.json",
"META-INF/{INDEX.LIST,DEPENDENCIES}",
"{draftv3,draftv4}/schema",
"arrow-git.properties",
]
}
}
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
kotlinOptions.jvmTarget = "1.8"
}
```

</tab>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,20 @@ package org.jetbrains.dataframe.gradle

import org.gradle.testkit.runner.BuildResult
import org.gradle.testkit.runner.GradleRunner
import org.intellij.lang.annotations.Language
import java.io.File
import java.nio.file.Files

fun runGradleBuild(task: String, build: (File) -> String): Build {
fun runGradleBuild(
task: String,
@Language("kts") settingsGradle: (File) -> String = { "" },
build: (File) -> String,
): Build {
val buildDir = Files.createTempDirectory("test").toFile()
val buildFile = File(buildDir, "build.gradle.kts")
buildFile.writeText(build(buildDir))
val settingsFile = File(buildDir, "settings.gradle.kts")
settingsFile.writeText(settingsGradle(buildDir))
return Build(buildDir, gradleRunner(buildDir, task).build())
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import io.kotest.inspectors.forOne
import io.kotest.matchers.shouldBe
import io.kotest.matchers.string.shouldContain
import org.gradle.testkit.runner.TaskOutcome
import org.intellij.lang.annotations.Language
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
import org.junit.Test
import java.io.File
Expand All @@ -19,6 +20,7 @@ internal class SchemaGeneratorPluginTest {
@Test
fun `plugin configured via configure`() {
val (_, result) = runGradleBuild(":generateDataFrameTest") {
// language=kts
"""
import java.net.URL
import org.jetbrains.dataframe.gradle.SchemaGeneratorExtension
Expand Down Expand Up @@ -47,6 +49,7 @@ internal class SchemaGeneratorPluginTest {
@Test
fun `plugin configured via extension DSL`() {
val (_, result) = runGradleBuild(":generateDataFrameTest") {
// language=kts
"""
import java.net.URL
import org.jetbrains.dataframe.gradle.SchemaGeneratorExtension
Expand Down Expand Up @@ -77,6 +80,7 @@ internal class SchemaGeneratorPluginTest {
val buildDir = Files.createTempDirectory("test").toFile()
val buildFile = File(buildDir, "build.gradle")
buildFile.writeText(
// language=groovy
"""
import java.net.URL
import org.jetbrains.dataframe.gradle.SchemaGeneratorExtension
Expand Down Expand Up @@ -108,6 +112,7 @@ internal class SchemaGeneratorPluginTest {
val buildDir = Files.createTempDirectory("test").toFile()
val buildFile = File(buildDir, "build.gradle")
buildFile.writeText(
// language=groovy
"""
import java.net.URL
import org.jetbrains.dataframe.gradle.SchemaGeneratorExtension
Expand Down Expand Up @@ -138,6 +143,7 @@ internal class SchemaGeneratorPluginTest {
@Test
fun `plugin configure multiple schemas from URLs via extension`() {
val (_, result) = runGradleBuild(":generateDataFrames") {
// language=kts
"""
import java.net.URL
Expand Down Expand Up @@ -178,6 +184,7 @@ internal class SchemaGeneratorPluginTest {
File(it, TestData.csvName).writeText(TestData.csvSample)
File(it, TestData.jsonName).writeText(TestData.jsonSample)
}
// language=kts
"""
import org.jetbrains.dataframe.gradle.SchemaGeneratorExtension
Expand Down Expand Up @@ -213,6 +220,7 @@ internal class SchemaGeneratorPluginTest {
val (_, result) = runGradleBuild(":generateDataFrameTest") { buildDir ->
val dataDir = File(buildDir, "data").also { it.mkdirs() }
File(dataDir, TestData.jsonName).writeText(TestData.jsonSample)
// language=kts
"""
import org.jetbrains.dataframe.gradle.SchemaGeneratorExtension
Expand Down Expand Up @@ -243,6 +251,7 @@ internal class SchemaGeneratorPluginTest {
val dataDir = File(buildDir, "data").also { it.mkdirs() }
val file = File(dataDir, TestData.jsonName).also { it.writeText(TestData.jsonSample) }
val absolutePath = file.absolutePath.replace(File.separatorChar, '/')
// language=kts
"""
import org.jetbrains.dataframe.gradle.SchemaGeneratorExtension
Expand Down Expand Up @@ -271,6 +280,7 @@ internal class SchemaGeneratorPluginTest {
fun `data is string and url`() {
val (_, result) = runGradleBuild(":generateDataFrameTest") { buildDir ->
println("Build dir: $buildDir")
// language=kts
"""
import org.jetbrains.dataframe.gradle.SchemaGeneratorExtension
Expand Down Expand Up @@ -299,6 +309,7 @@ internal class SchemaGeneratorPluginTest {
fun `data is OpenApi string and url`() {
val (_, result) = runGradleBuild(":generateDataFrameTest") { buildDir ->
println("Build dir: $buildDir")
// language=kts
"""
import org.jetbrains.dataframe.gradle.SchemaGeneratorExtension
Expand Down Expand Up @@ -334,6 +345,7 @@ internal class SchemaGeneratorPluginTest {
1;2;3
""".trimIndent()
)
// language=kts
"""
import org.jetbrains.dataframe.gradle.SchemaGeneratorExtension
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@ package org.jetbrains.dataframe.gradle
import io.kotest.assertions.asClue
import io.kotest.inspectors.forAny
import io.kotest.matchers.shouldBe
import io.kotest.matchers.string.shouldEndWith
import org.gradle.api.internal.project.ProjectInternal
import org.gradle.testfixtures.ProjectBuilder
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
Expand Down

0 comments on commit 2491bd5

Please sign in to comment.