Skip to content

Commit cdef312

Browse files
committed
Merge branch 'master' into new-csv-implementation
# Conflicts: # core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/util/deprecationMessages.kt
2 parents 53e2f64 + 0be9e2e commit cdef312

File tree

233 files changed

+2915
-713
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

233 files changed

+2915
-713
lines changed

core/api/core.api

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2691,7 +2691,7 @@ public abstract interface class org/jetbrains/kotlinx/dataframe/api/ColumnDescri
26912691
public abstract fun getPath ()Lorg/jetbrains/kotlinx/dataframe/columns/ColumnPath;
26922692
public abstract fun getStd ()D
26932693
public abstract fun getTop ()Ljava/lang/Object;
2694-
public abstract fun getType ()Lkotlin/reflect/KType;
2694+
public abstract fun getType ()Ljava/lang/String;
26952695
public abstract fun getUnique ()I
26962696
}
26972697

@@ -2719,7 +2719,7 @@ public final class org/jetbrains/kotlinx/dataframe/api/ColumnDescription_Extensi
27192719
public static final fun ColumnDescription_top (Lorg/jetbrains/kotlinx/dataframe/ColumnsContainer;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
27202720
public static final fun ColumnDescription_top (Lorg/jetbrains/kotlinx/dataframe/DataRow;)Ljava/lang/Object;
27212721
public static final fun ColumnDescription_type (Lorg/jetbrains/kotlinx/dataframe/ColumnsContainer;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
2722-
public static final fun ColumnDescription_type (Lorg/jetbrains/kotlinx/dataframe/DataRow;)Lkotlin/reflect/KType;
2722+
public static final fun ColumnDescription_type (Lorg/jetbrains/kotlinx/dataframe/DataRow;)Ljava/lang/String;
27232723
public static final fun ColumnDescription_unique (Lorg/jetbrains/kotlinx/dataframe/ColumnsContainer;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
27242724
public static final fun ColumnDescription_unique (Lorg/jetbrains/kotlinx/dataframe/DataRow;)I
27252725
public static final fun NullableColumnDescription_count (Lorg/jetbrains/kotlinx/dataframe/ColumnsContainer;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
@@ -2745,7 +2745,7 @@ public final class org/jetbrains/kotlinx/dataframe/api/ColumnDescription_Extensi
27452745
public static final fun NullableColumnDescription_top (Lorg/jetbrains/kotlinx/dataframe/ColumnsContainer;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
27462746
public static final fun NullableColumnDescription_top (Lorg/jetbrains/kotlinx/dataframe/DataRow;)Ljava/lang/Object;
27472747
public static final fun NullableColumnDescription_type (Lorg/jetbrains/kotlinx/dataframe/ColumnsContainer;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
2748-
public static final fun NullableColumnDescription_type (Lorg/jetbrains/kotlinx/dataframe/DataRow;)Lkotlin/reflect/KType;
2748+
public static final fun NullableColumnDescription_type (Lorg/jetbrains/kotlinx/dataframe/DataRow;)Ljava/lang/String;
27492749
public static final fun NullableColumnDescription_unique (Lorg/jetbrains/kotlinx/dataframe/ColumnsContainer;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
27502750
public static final fun NullableColumnDescription_unique (Lorg/jetbrains/kotlinx/dataframe/DataRow;)Ljava/lang/Integer;
27512751
}
@@ -4148,6 +4148,7 @@ public final class org/jetbrains/kotlinx/dataframe/api/DataColumnArithmeticsKt {
41484148
}
41494149

41504150
public final class org/jetbrains/kotlinx/dataframe/api/DataColumnTypeKt {
4151+
public static final fun isBigNumber (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
41514152
public static final fun isColumnGroup (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
41524153
public static final fun isComparable (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
41534154
public static final fun isFrameColumn (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
@@ -4156,6 +4157,7 @@ public final class org/jetbrains/kotlinx/dataframe/api/DataColumnTypeKt {
41564157
public static final fun isPrimitive (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
41574158
public static final fun isSubtypeOf (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Lkotlin/reflect/KType;)Z
41584159
public static final fun isValueColumn (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
4160+
public static final fun valuesAreComparable (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
41594161
}
41604162

41614163
public final class org/jetbrains/kotlinx/dataframe/api/DataFrameBuilder {
@@ -10802,6 +10804,7 @@ public final class org/jetbrains/kotlinx/dataframe/math/BasicStats {
1080210804

1080310805
public final class org/jetbrains/kotlinx/dataframe/math/MeanKt {
1080410806
public static final fun bigDecimalMean (Ljava/lang/Iterable;)D
10807+
public static final fun bigIntegerMean (Ljava/lang/Iterable;)D
1080510808
public static final fun byteMean (Ljava/lang/Iterable;)D
1080610809
public static final fun doubleMean (Ljava/lang/Iterable;Z)D
1080710810
public static synthetic fun doubleMean$default (Ljava/lang/Iterable;ZILjava/lang/Object;)D
@@ -10825,6 +10828,8 @@ public final class org/jetbrains/kotlinx/dataframe/math/MedianKt {
1082510828
public final class org/jetbrains/kotlinx/dataframe/math/StdKt {
1082610829
public static final fun bigDecimalStd (Ljava/lang/Iterable;I)D
1082710830
public static synthetic fun bigDecimalStd$default (Ljava/lang/Iterable;IILjava/lang/Object;)D
10831+
public static final fun bigIntegerStd (Ljava/lang/Iterable;I)D
10832+
public static synthetic fun bigIntegerStd$default (Ljava/lang/Iterable;IILjava/lang/Object;)D
1082810833
public static final fun doubleStd (Ljava/lang/Iterable;ZI)D
1082910834
public static synthetic fun doubleStd$default (Ljava/lang/Iterable;ZIILjava/lang/Object;)D
1083010835
public static final fun floatStd (Ljava/lang/Iterable;ZI)D
@@ -10839,6 +10844,7 @@ public final class org/jetbrains/kotlinx/dataframe/math/StdKt {
1083910844

1084010845
public final class org/jetbrains/kotlinx/dataframe/math/StdMeanKt {
1084110846
public static final fun bigDecimalVarianceAndMean (Ljava/lang/Iterable;)Lorg/jetbrains/kotlinx/dataframe/math/BasicStats;
10847+
public static final fun bigIntegerVarianceAndMean (Ljava/lang/Iterable;)Lorg/jetbrains/kotlinx/dataframe/math/BasicStats;
1084210848
public static final fun doubleVarianceAndMean (Ljava/lang/Iterable;Z)Lorg/jetbrains/kotlinx/dataframe/math/BasicStats;
1084310849
public static synthetic fun doubleVarianceAndMean$default (Ljava/lang/Iterable;ZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/math/BasicStats;
1084410850
public static final fun floatVarianceAndMean (Ljava/lang/Iterable;Z)Lorg/jetbrains/kotlinx/dataframe/math/BasicStats;
@@ -10849,8 +10855,10 @@ public final class org/jetbrains/kotlinx/dataframe/math/StdMeanKt {
1084910855

1085010856
public final class org/jetbrains/kotlinx/dataframe/math/SumKt {
1085110857
public static final fun sum (Ljava/lang/Iterable;)Ljava/math/BigDecimal;
10858+
public static final fun sum (Ljava/lang/Iterable;)Ljava/math/BigInteger;
1085210859
public static final fun sum (Ljava/lang/Iterable;Lkotlin/reflect/KType;)Ljava/lang/Number;
1085310860
public static final fun sum (Lkotlin/sequences/Sequence;)Ljava/math/BigDecimal;
10861+
public static final fun sum (Lkotlin/sequences/Sequence;)Ljava/math/BigInteger;
1085410862
public static final fun sumNullableT (Ljava/lang/Iterable;Lkotlin/reflect/KType;)Ljava/lang/Number;
1085510863
public static final fun sumOf (Ljava/lang/Iterable;Lkotlin/reflect/KType;Lkotlin/jvm/functions/Function1;)Ljava/lang/Number;
1085610864
}

core/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ dependencies {
8787
}
8888
testImplementation(libs.kotlin.scriptingJvm)
8989
testImplementation(libs.jsoup)
90+
testImplementation(libs.sl4jsimple)
9091
}
9192

9293
val samplesImplementation by configurations.getting {

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

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ import org.jetbrains.kotlinx.dataframe.impl.isNothing
1111
import org.jetbrains.kotlinx.dataframe.impl.projectTo
1212
import org.jetbrains.kotlinx.dataframe.type
1313
import org.jetbrains.kotlinx.dataframe.typeClass
14+
import org.jetbrains.kotlinx.dataframe.util.IS_COMPARABLE
15+
import org.jetbrains.kotlinx.dataframe.util.IS_COMPARABLE_REPLACE
16+
import org.jetbrains.kotlinx.dataframe.util.IS_INTER_COMPARABLE_IMPORT
17+
import java.math.BigDecimal
18+
import java.math.BigInteger
1419
import kotlin.contracts.ExperimentalContracts
1520
import kotlin.contracts.contract
1621
import kotlin.reflect.KClass
@@ -44,13 +49,36 @@ public inline fun <reified T> AnyCol.isType(): Boolean = type() == typeOf<T>()
4449

4550
public fun AnyCol.isNumber(): Boolean = isSubtypeOf<Number?>()
4651

52+
public fun AnyCol.isBigNumber(): Boolean = isSubtypeOf<BigInteger?>() || isSubtypeOf<BigDecimal?>()
53+
4754
public fun AnyCol.isList(): Boolean = typeClass == List::class
4855

56+
/** Returns `true` if [this] column is inter-comparable, i.e.
57+
* its values can be compared with each other and thus ordered.
58+
*
59+
* If true, operations like [`min()`][AnyCol.min], [`max()`][AnyCol.max], [`median()`][AnyCol.median], etc.
60+
* will work.
61+
*
62+
* Technically, this means the values' common type is a subtype of [Comparable] with
63+
* the type argument not being [Nothing]. */
64+
@Deprecated(
65+
message = IS_COMPARABLE,
66+
replaceWith = ReplaceWith(IS_COMPARABLE_REPLACE, IS_INTER_COMPARABLE_IMPORT),
67+
level = DeprecationLevel.WARNING,
68+
)
69+
public fun AnyCol.isComparable(): Boolean = valuesAreComparable()
70+
4971
/**
50-
* Returns `true` if [this] column is comparable, i.e. its type is a subtype of [Comparable] and its
51-
* type argument is not [Nothing].
72+
* Returns `true` if [this] column is inter-comparable, i.e.
73+
* its values can be compared with each other and thus ordered.
74+
*
75+
* If true, operations like [`min()`][AnyCol.min], [`max()`][AnyCol.max], [`median()`][AnyCol.median], etc.
76+
* will work.
77+
*
78+
* Technically, this means the values' common type is a subtype of [Comparable] with
79+
* the type argument not being [Nothing].
5280
*/
53-
public fun AnyCol.isComparable(): Boolean =
81+
public fun AnyCol.valuesAreComparable(): Boolean =
5482
isSubtypeOf<Comparable<*>?>() &&
5583
type().projectTo(Comparable::class).arguments[0].let {
5684
it != KTypeProjection.STAR &&

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

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@ import org.jetbrains.kotlinx.dataframe.ColumnsSelector
55
import org.jetbrains.kotlinx.dataframe.DataColumn
66
import org.jetbrains.kotlinx.dataframe.DataFrame
77
import org.jetbrains.kotlinx.dataframe.columns.toColumnSet
8+
import org.jetbrains.kotlinx.dataframe.impl.nothingType
9+
import org.jetbrains.kotlinx.dataframe.impl.nullableNothingType
810
import org.jetbrains.kotlinx.dataframe.math.cumSum
911
import org.jetbrains.kotlinx.dataframe.math.defaultCumSumSkipNA
1012
import org.jetbrains.kotlinx.dataframe.typeClass
1113
import java.math.BigDecimal
14+
import java.math.BigInteger
1215
import kotlin.reflect.KProperty
1316
import kotlin.reflect.typeOf
1417

@@ -17,20 +20,59 @@ import kotlin.reflect.typeOf
1720
public fun <T : Number?> DataColumn<T>.cumSum(skipNA: Boolean = defaultCumSumSkipNA): DataColumn<T> =
1821
when (type()) {
1922
typeOf<Double>() -> cast<Double>().cumSum(skipNA).cast()
23+
2024
typeOf<Double?>() -> cast<Double?>().cumSum(skipNA).cast()
25+
2126
typeOf<Float>() -> cast<Float>().cumSum(skipNA).cast()
27+
2228
typeOf<Float?>() -> cast<Float?>().cumSum(skipNA).cast()
29+
2330
typeOf<Int>() -> cast<Int>().cumSum().cast()
31+
32+
// TODO cumSum for Byte returns Int but is converted back to T: Byte, Issue #558
33+
typeOf<Byte>() -> cast<Byte>().cumSum().map { it.toByte() }.cast()
34+
35+
// TODO cumSum for Short returns Int but is converted back to T: Short, Issue #558
36+
typeOf<Short>() -> cast<Short>().cumSum().map { it.toShort() }.cast()
37+
2438
typeOf<Int?>() -> cast<Int?>().cumSum(skipNA).cast()
39+
40+
// TODO cumSum for Byte? returns Int? but is converted back to T: Byte?, Issue #558
41+
typeOf<Byte?>() -> cast<Byte?>().cumSum(skipNA).map { it?.toByte() }.cast()
42+
43+
// TODO cumSum for Short? returns Int? but is converted back to T: Short?, Issue #558
44+
typeOf<Short?>() -> cast<Short?>().cumSum(skipNA).map { it?.toShort() }.cast()
45+
2546
typeOf<Long>() -> cast<Long>().cumSum().cast()
47+
2648
typeOf<Long?>() -> cast<Long?>().cumSum(skipNA).cast()
49+
50+
typeOf<BigInteger>() -> cast<BigInteger>().cumSum().cast()
51+
52+
typeOf<BigInteger?>() -> cast<BigInteger?>().cumSum(skipNA).cast()
53+
2754
typeOf<BigDecimal>() -> cast<BigDecimal>().cumSum().cast()
55+
2856
typeOf<BigDecimal?>() -> cast<BigDecimal?>().cumSum(skipNA).cast()
57+
2958
typeOf<Number?>(), typeOf<Number>() -> convertToDouble().cumSum(skipNA).cast()
59+
60+
// Cumsum for empty column or column with just null is itself
61+
nothingType, nullableNothingType -> this
62+
3063
else -> error("Cumsum for type ${type()} is not supported")
3164
}
3265

33-
private val supportedClasses = setOf(Double::class, Float::class, Int::class, Long::class, BigDecimal::class)
66+
private val supportedClasses = setOf(
67+
Double::class,
68+
Float::class,
69+
Int::class,
70+
Byte::class,
71+
Short::class,
72+
Long::class,
73+
BigInteger::class,
74+
BigDecimal::class,
75+
)
3476

3577
// endregion
3678

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,13 @@ import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
99
import org.jetbrains.kotlinx.dataframe.columns.toColumnSet
1010
import org.jetbrains.kotlinx.dataframe.impl.api.describeImpl
1111
import kotlin.reflect.KProperty
12-
import kotlin.reflect.KType
1312

1413
// region DataSchema
1514
@DataSchema
1615
public interface ColumnDescription {
1716
public val name: String
1817
public val path: ColumnPath
19-
public val type: KType
18+
public val type: String
2019
public val count: Int
2120
public val unique: Int
2221
public val nulls: Int

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
1111
import org.jetbrains.kotlinx.dataframe.columns.toColumnSet
1212
import org.jetbrains.kotlinx.dataframe.columns.values
1313
import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators
14-
import org.jetbrains.kotlinx.dataframe.impl.aggregation.comparableColumns
14+
import org.jetbrains.kotlinx.dataframe.impl.aggregation.interComparableColumns
1515
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll
1616
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateFor
1717
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateOfDelegated
@@ -52,7 +52,7 @@ public inline fun <reified T : Comparable<T>> AnyRow.rowMaxOf(): T = rowMaxOfOrN
5252

5353
// region DataFrame
5454

55-
public fun <T> DataFrame<T>.max(): DataRow<T> = maxFor(comparableColumns())
55+
public fun <T> DataFrame<T>.max(): DataRow<T> = maxFor(interComparableColumns())
5656

5757
public fun <T, C : Comparable<C>> DataFrame<T>.maxFor(columns: ColumnsForAggregateSelector<T, C?>): DataRow<T> =
5858
Aggregators.max.aggregateFor(this, columns)
@@ -121,7 +121,7 @@ public fun <T, C : Comparable<C>> DataFrame<T>.maxByOrNull(column: KProperty<C?>
121121

122122
// region GroupBy
123123

124-
public fun <T> Grouped<T>.max(): DataFrame<T> = maxFor(comparableColumns())
124+
public fun <T> Grouped<T>.max(): DataFrame<T> = maxFor(interComparableColumns())
125125

126126
public fun <T, C : Comparable<C>> Grouped<T>.maxFor(columns: ColumnsForAggregateSelector<T, C?>): DataFrame<T> =
127127
Aggregators.max.aggregateFor(this, columns)
@@ -218,7 +218,7 @@ public fun <T, C : Comparable<C>> Pivot<T>.maxBy(column: KProperty<C?>): Reduced
218218

219219
// region PivotGroupBy
220220

221-
public fun <T> PivotGroupBy<T>.max(separate: Boolean = false): DataFrame<T> = maxFor(separate, comparableColumns())
221+
public fun <T> PivotGroupBy<T>.max(separate: Boolean = false): DataFrame<T> = maxFor(separate, interComparableColumns())
222222

223223
public fun <T, R : Comparable<R>> PivotGroupBy<T>.maxFor(
224224
separate: Boolean = false,

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
1111
import org.jetbrains.kotlinx.dataframe.columns.toColumnSet
1212
import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators
1313
import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast
14-
import org.jetbrains.kotlinx.dataframe.impl.aggregation.comparableColumns
14+
import org.jetbrains.kotlinx.dataframe.impl.aggregation.interComparableColumns
1515
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll
1616
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateFor
1717
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateOf
@@ -53,7 +53,7 @@ public inline fun <reified T : Comparable<T>> AnyRow.rowMedianOf(): T =
5353

5454
// region DataFrame
5555

56-
public fun <T> DataFrame<T>.median(): DataRow<T> = medianFor(comparableColumns())
56+
public fun <T> DataFrame<T>.median(): DataRow<T> = medianFor(interComparableColumns())
5757

5858
public fun <T, C : Comparable<C>> DataFrame<T>.medianFor(columns: ColumnsForAggregateSelector<T, C?>): DataRow<T> =
5959
Aggregators.median.aggregateFor(this, columns)
@@ -96,7 +96,7 @@ public inline fun <T, reified R : Comparable<R>> DataFrame<T>.medianOf(
9696

9797
// region GroupBy
9898

99-
public fun <T> Grouped<T>.median(): DataFrame<T> = medianFor(comparableColumns())
99+
public fun <T> Grouped<T>.median(): DataFrame<T> = medianFor(interComparableColumns())
100100

101101
public fun <T, C : Comparable<C>> Grouped<T>.medianFor(columns: ColumnsForAggregateSelector<T, C?>): DataFrame<T> =
102102
Aggregators.median.aggregateFor(this, columns)
@@ -134,7 +134,7 @@ public inline fun <T, reified R : Comparable<R>> Grouped<T>.medianOf(
134134

135135
// region Pivot
136136

137-
public fun <T> Pivot<T>.median(separate: Boolean = false): DataRow<T> = medianFor(separate, comparableColumns())
137+
public fun <T> Pivot<T>.median(separate: Boolean = false): DataRow<T> = medianFor(separate, interComparableColumns())
138138

139139
public fun <T, C : Comparable<C>> Pivot<T>.medianFor(
140140
separate: Boolean = false,
@@ -174,7 +174,7 @@ public inline fun <T, reified R : Comparable<R>> Pivot<T>.medianOf(
174174
// region PivotGroupBy
175175

176176
public fun <T> PivotGroupBy<T>.median(separate: Boolean = false): DataFrame<T> =
177-
medianFor(separate, comparableColumns())
177+
medianFor(separate, interComparableColumns())
178178

179179
public fun <T, C : Comparable<C>> PivotGroupBy<T>.medianFor(
180180
separate: Boolean = false,

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
1111
import org.jetbrains.kotlinx.dataframe.columns.toColumnSet
1212
import org.jetbrains.kotlinx.dataframe.columns.values
1313
import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators
14-
import org.jetbrains.kotlinx.dataframe.impl.aggregation.comparableColumns
14+
import org.jetbrains.kotlinx.dataframe.impl.aggregation.interComparableColumns
1515
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll
1616
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateFor
1717
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateOfDelegated
@@ -52,7 +52,7 @@ public inline fun <reified T : Comparable<T>> AnyRow.rowMinOf(): T = rowMinOfOrN
5252

5353
// region DataFrame
5454

55-
public fun <T> DataFrame<T>.min(): DataRow<T> = minFor(comparableColumns())
55+
public fun <T> DataFrame<T>.min(): DataRow<T> = minFor(interComparableColumns())
5656

5757
public fun <T, C : Comparable<C>> DataFrame<T>.minFor(columns: ColumnsForAggregateSelector<T, C?>): DataRow<T> =
5858
Aggregators.min.aggregateFor(this, columns)
@@ -121,7 +121,7 @@ public fun <T, C : Comparable<C>> DataFrame<T>.minByOrNull(column: KProperty<C?>
121121

122122
// region GroupBy
123123

124-
public fun <T> Grouped<T>.min(): DataFrame<T> = minFor(comparableColumns())
124+
public fun <T> Grouped<T>.min(): DataFrame<T> = minFor(interComparableColumns())
125125

126126
public fun <T, C : Comparable<C>> Grouped<T>.minFor(columns: ColumnsForAggregateSelector<T, C?>): DataFrame<T> =
127127
Aggregators.min.aggregateFor(this, columns)
@@ -219,7 +219,7 @@ public fun <T, C : Comparable<C>> Pivot<T>.minBy(column: KProperty<C?>): Reduced
219219

220220
// region PivotGroupBy
221221

222-
public fun <T> PivotGroupBy<T>.min(separate: Boolean = false): DataFrame<T> = minFor(separate, comparableColumns())
222+
public fun <T> PivotGroupBy<T>.min(separate: Boolean = false): DataFrame<T> = minFor(separate, interComparableColumns())
223223

224224
public fun <T, R : Comparable<R>> PivotGroupBy<T>.minFor(
225225
separate: Boolean = false,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public fun DataColumn<Any>.asNumbers(): ValueColumn<Number> {
8383
}
8484

8585
public fun <T> DataColumn<T>.asComparable(): DataColumn<Comparable<T>> {
86-
require(isComparable())
86+
require(valuesAreComparable())
8787
return this as DataColumn<Comparable<T>>
8888
}
8989

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import org.jetbrains.kotlinx.dataframe.ColumnsSelector
55
import org.jetbrains.kotlinx.dataframe.DataColumn
66
import org.jetbrains.kotlinx.dataframe.DataFrame
77
import org.jetbrains.kotlinx.dataframe.annotations.DataSchema
8+
import org.jetbrains.kotlinx.dataframe.annotations.Interpretable
9+
import org.jetbrains.kotlinx.dataframe.annotations.Refine
810
import org.jetbrains.kotlinx.dataframe.columns.toColumnSet
911
import org.jetbrains.kotlinx.dataframe.impl.nameGenerator
1012
import kotlin.reflect.KProperty
@@ -50,6 +52,8 @@ public fun <T> DataColumn<T>.valueCounts(
5052

5153
// region DataFrame
5254

55+
@Refine
56+
@Interpretable("ValueCounts")
5357
public fun <T> DataFrame<T>.valueCounts(
5458
sort: Boolean = true,
5559
ascending: Boolean = false,

0 commit comments

Comments
 (0)