Skip to content

Commit b67c871

Browse files
Automated commit of generated code
1 parent 8ac1900 commit b67c871

File tree

7 files changed

+30
-51
lines changed

7 files changed

+30
-51
lines changed

core/generated-sources/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/median.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@ import kotlin.experimental.ExperimentalTypeInference
3030
import kotlin.reflect.KProperty
3131

3232
/* TODO KDocs
33-
* numbers -> Double or null
33+
* primitive numbers -> Double or null
3434
* comparable -> itself or null
3535
*
36+
* Careful! non-primitive numbers will thus follow comparable rules
37+
*
3638
* TODO cases where the lambda dictates the return type require explicit type arguments for
3739
* non-number, comparable overloads: https://youtrack.jetbrains.com/issue/KT-76683
3840
* so, `df.median { intCol }` works, but needs `df.median<_, String> { stringCol }` or `df.median({ dateCol })`

core/generated-sources/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/percentile.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@ import kotlin.experimental.ExperimentalTypeInference
3030
import kotlin.reflect.KProperty
3131

3232
/* TODO KDocs
33-
* numbers -> Double or null
33+
* primitive numbers -> Double or null
3434
* comparable -> itself or null
3535
*
36+
* Careful! non-primitive numbers will thus follow comparable rules
37+
*
3638
* TODO cases where the lambda dictates the return type require explicit type arguments for
3739
* non-number, comparable overloads: https://youtrack.jetbrains.com/issue/KT-76683
3840
* so, `df.percentile { intCol }` works, but needs `df.percentile<_, String> { stringCol }` or `df.percentile({ dateCol })`

core/generated-sources/src/main/kotlin/org/jetbrains/kotlinx/dataframe/math/median.kt

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ import org.jetbrains.kotlinx.dataframe.impl.isIntraComparable
77
import org.jetbrains.kotlinx.dataframe.impl.isPrimitiveNumber
88
import org.jetbrains.kotlinx.dataframe.impl.nothingType
99
import org.jetbrains.kotlinx.dataframe.impl.renderType
10-
import java.math.BigDecimal
11-
import java.math.BigInteger
1210
import kotlin.math.round
1311
import kotlin.reflect.KType
1412
import kotlin.reflect.full.withNullability
@@ -40,11 +38,6 @@ internal fun <T : Comparable<T>> Sequence<T>.medianOrNull(type: KType, skipNaN:
4038
}. Only primitive numbers or self-comparables are supported.",
4139
)
4240

43-
type == typeOf<BigDecimal>() || type == typeOf<BigInteger>() ->
44-
throw IllegalArgumentException(
45-
"Cannot calculate the median for big numbers in DataFrame. Only primitive numbers are supported.",
46-
)
47-
4841
// TODO kdocs: note about loss of precision for Long
4942
}
5043

@@ -107,11 +100,6 @@ internal fun <T : Comparable<T & Any>?> Sequence<T>.indexOfMedian(type: KType, s
107100
renderType(type)
108101
}. Only primitive numbers or self-comparables are supported.",
109102
)
110-
111-
nonNullType == typeOf<BigDecimal>() || nonNullType == typeOf<BigInteger>() ->
112-
throw IllegalArgumentException(
113-
"Cannot calculate the median for big numbers in DataFrame. Only primitive numbers are supported.",
114-
)
115103
}
116104

117105
// propagate NaN to return if they are not to be skipped

core/generated-sources/src/main/kotlin/org/jetbrains/kotlinx/dataframe/math/percentile.kt

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import org.jetbrains.kotlinx.dataframe.impl.isIntraComparable
66
import org.jetbrains.kotlinx.dataframe.impl.isPrimitiveNumber
77
import org.jetbrains.kotlinx.dataframe.impl.nothingType
88
import org.jetbrains.kotlinx.dataframe.impl.renderType
9-
import java.math.BigDecimal
10-
import java.math.BigInteger
119
import kotlin.math.round
1210
import kotlin.reflect.KType
1311
import kotlin.reflect.full.withNullability
@@ -33,11 +31,6 @@ internal fun <T : Comparable<T>> Sequence<T>.percentileOrNull(percentile: Double
3331
}. Only primitive numbers or self-comparables are supported.",
3432
)
3533

36-
type == typeOf<BigDecimal>() || type == typeOf<BigInteger>() ->
37-
throw IllegalArgumentException(
38-
"Cannot calculate the percentile for big numbers in DataFrame. Only primitive numbers are supported.",
39-
)
40-
4134
// TODO kdocs: note about loss of precision for Long
4235
}
4336

@@ -99,11 +92,6 @@ internal fun <T : Comparable<T & Any>?> Sequence<T>.indexOfPercentile(
9992
renderType(type)
10093
}. Only primitive numbers or self-comparables are supported.",
10194
)
102-
103-
nonNullType == typeOf<BigDecimal>() || nonNullType == typeOf<BigInteger>() ->
104-
throw IllegalArgumentException(
105-
"Cannot calculate the percentile for big numbers in DataFrame. Only primitive numbers are supported.",
106-
)
10795
}
10896

10997
val indexedSequence = this.mapIndexedNotNull { i, it ->

core/generated-sources/src/main/kotlin/org/jetbrains/kotlinx/dataframe/math/quantile.kt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import org.jetbrains.kotlinx.dataframe.impl.isIntraComparable
66
import org.jetbrains.kotlinx.dataframe.impl.isPrimitiveNumber
77
import org.jetbrains.kotlinx.dataframe.impl.nothingType
88
import org.jetbrains.kotlinx.dataframe.impl.renderType
9-
import java.math.BigDecimal
10-
import java.math.BigInteger
119
import kotlin.math.ceil
1210
import kotlin.math.floor
1311
import kotlin.math.round
@@ -52,11 +50,6 @@ internal fun <T : Comparable<T>> Sequence<Any>.quantileOrNull(
5250
renderType(type)
5351
}. Only primitive numbers or self-comparables are supported.",
5452
)
55-
56-
type == typeOf<BigDecimal>() || type == typeOf<BigInteger>() ->
57-
throw IllegalArgumentException(
58-
"Cannot calculate the $name for big numbers in DataFrame. Only primitive numbers are supported.",
59-
)
6053
}
6154

6255
// propagate NaN to return if they are not to be skipped

core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/statistics/median.kt

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -251,23 +251,25 @@ class MedianTests {
251251
@[Test Suppress("ktlint:standard:argument-list-wrapping")]
252252
fun `dataframe median`() {
253253
val df = dataFrameOf(
254-
"a", "b", "c",
254+
"a", "b", "c", "d",
255255
)(
256-
1, 2f, 3.0,
257-
4, 5f, 6.0,
258-
7, 8f, 9.0,
256+
1, 2f, 3.0, 1.toBigInteger(),
257+
4, 5f, 6.0, 2.toBigInteger(),
258+
7, 8f, 9.0, 4.toBigInteger(),
259259
)
260260

261261
// Get row with median values for each column
262262
val medians = df.median()
263-
medians["a"] shouldBe 4
264-
medians["b"] shouldBe 5f
263+
medians["a"] shouldBe 4.0
264+
medians["b"] shouldBe 5.0
265265
medians["c"] shouldBe 6.0
266+
medians["d"] shouldBe 2.toBigInteger() // not interpolated!
266267

267268
// Test median for specific columns
268-
val medianFor = df.medianFor("a", "c")
269-
medianFor["a"] shouldBe 4
269+
val medianFor = df.medianFor("a", "c", "d")
270+
medianFor["a"] shouldBe 4.0
270271
medianFor["c"] shouldBe 6.0
272+
medianFor["d"] shouldBe 2.toBigInteger() // not interpolated!
271273
}
272274

273275
@[Test Suppress("ktlint:standard:argument-list-wrapping")]

core/generated-sources/src/test/kotlin/org/jetbrains/kotlinx/dataframe/statistics/percentile.kt

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -225,33 +225,37 @@ class PercentileTests {
225225
@[Test Suppress("ktlint:standard:argument-list-wrapping")]
226226
fun `dataframe percentile`() {
227227
val df = dataFrameOf(
228-
"a", "b", "c",
228+
"a", "b", "c", "d",
229229
)(
230-
1, 2f, 3.0,
231-
4, 5f, 6.0,
232-
7, 8f, 9.0,
230+
1, 2f, 3.0, 1.toBigInteger(),
231+
4, 5f, 6.0, 2.toBigInteger(),
232+
7, 8f, 9.0, 4.toBigInteger(),
233233
)
234234

235235
// Get row with percentile values for each column
236236
val percentiles50 = df.percentile(50.0)
237-
percentiles50["a"] shouldBe 4
238-
percentiles50["b"] shouldBe 5f
237+
percentiles50["a"] shouldBe 4.0
238+
percentiles50["b"] shouldBe 5.0
239239
percentiles50["c"] shouldBe 6.0
240+
percentiles50["d"] shouldBe 2.toBigInteger() // not interpolated!
240241

241242
val percentiles25 = df.percentile(25.0)
242243
percentiles25["a"] shouldBe 1.5000000000000002
243-
percentiles25["b"] shouldBe 2.5f
244+
percentiles25["b"] shouldBe 2.5
244245
percentiles25["c"] shouldBe 3.5
246+
percentiles25["d"] shouldBe 1.toBigInteger() // not interpolated!
245247

246248
val percentiles75 = df.percentile(75.0)
247249
percentiles75["a"] shouldBe 6.5
248-
percentiles75["b"] shouldBe 7.5f
250+
percentiles75["b"] shouldBe 7.5
249251
percentiles75["c"] shouldBe 8.5
252+
percentiles75["d"] shouldBe 2.toBigInteger() // not interpolated!
250253

251254
// Test percentile for specific columns
252-
val percentileFor50 = df.percentileFor(50.0, "a", "c")
253-
percentileFor50["a"] shouldBe 4
255+
val percentileFor50 = df.percentileFor(50.0, "a", "c", "d")
256+
percentileFor50["a"] shouldBe 4.0
254257
percentileFor50["c"] shouldBe 6.0
258+
percentileFor50["d"] shouldBe 2.toBigInteger() // not interpolated!
255259
}
256260

257261
@[Test Suppress("ktlint:standard:argument-list-wrapping")]

0 commit comments

Comments
 (0)