From 0ae5b3161437b58d37bbe4d1589a678a5092b4cd Mon Sep 17 00:00:00 2001 From: Jolan Rensen Date: Mon, 8 Sep 2025 20:33:50 +0200 Subject: [PATCH 01/16] apply DefinitelyNotNullable patch for notebooks only: #1116 --- .../jetbrains/kotlinx/dataframe/api/max.kt | 211 +++++++++--------- .../jetbrains/kotlinx/dataframe/api/median.kt | 148 ++++++------ .../jetbrains/kotlinx/dataframe/api/min.kt | 203 ++++++++--------- .../kotlinx/dataframe/api/percentile.kt | 156 +++++++------ 4 files changed, 350 insertions(+), 368 deletions(-) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/max.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/max.kt index d1ff0cd1e2..f4ae1ce7db 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/max.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/max.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlinx.dataframe.annotations.Refine import org.jetbrains.kotlinx.dataframe.columns.ColumnReference import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators +import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateByOrNull @@ -35,25 +36,25 @@ public fun > DataColumn.max(skipNaN: Boolean = skipNaNDefa public fun > DataColumn.maxOrNull(skipNaN: Boolean = skipNaNDefault): T? = Aggregators.max(skipNaN).aggregateSingleColumn(this) -public inline fun ?> DataColumn.maxBy( +public inline fun ?> DataColumn.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T & Any = maxByOrNull(skipNaN, selector).suggestIfNull("maxBy") +): T = maxByOrNull(skipNaN, selector).suggestIfNull("maxBy") -public inline fun ?> DataColumn.maxByOrNull( +public inline fun ?> DataColumn.maxByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T? = Aggregators.max(skipNaN).aggregateByOrNull(this, selector) +): T? = Aggregators.max.invoke(skipNaN).cast().aggregateByOrNull(this, selector) -public inline fun ?> DataColumn.maxOf( +public inline fun ?> DataColumn.maxOf( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): R & Any = maxOfOrNull(skipNaN, selector).suggestIfNull("maxOf") +): R = maxOfOrNull(skipNaN, selector).suggestIfNull("maxOf") -public inline fun ?> DataColumn.maxOfOrNull( +public inline fun ?> DataColumn.maxOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): R? = Aggregators.max(skipNaN).aggregateOf(this, selector) +): R? = Aggregators.max.invoke(skipNaN).cast().aggregateOf(this, selector) // endregion @@ -103,61 +104,61 @@ public fun ?> DataFrame.maxFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = maxFor(skipNaN) { columns.toColumnSet() } -public fun ?> DataFrame.max( +public fun ?> DataFrame.max( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): C & Any = maxOrNull(skipNaN, columns).suggestIfNull("max") +): C = maxOrNull(skipNaN, columns).suggestIfNull("max") public fun DataFrame.max(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Comparable = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.max( +public fun ?> DataFrame.max( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): C & Any = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") +): C = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.max( +public fun ?> DataFrame.max( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, -): C & Any = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") +): C = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") -public fun ?> DataFrame.maxOrNull( +public fun ?> DataFrame.maxOrNull( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): C? = Aggregators.max(skipNaN).aggregateAll(this, columns) +): C? = Aggregators.max.invoke(skipNaN).cast().aggregateAll(this, columns) public fun DataFrame.maxOrNull(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Comparable? = maxOrNull(skipNaN) { columns.toComparableColumns() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.maxOrNull( +public fun ?> DataFrame.maxOrNull( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): C? = maxOrNull(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.maxOrNull( +public fun ?> DataFrame.maxOrNull( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): C? = maxOrNull(skipNaN) { columns.toColumnSet() } -public inline fun ?> DataFrame.maxOf( +public inline fun ?> DataFrame.maxOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): C & Any = maxOfOrNull(skipNaN, expression).suggestIfNull("maxOf") +): C = maxOfOrNull(skipNaN, expression).suggestIfNull("maxOf") -public inline fun ?> DataFrame.maxOfOrNull( +public inline fun ?> DataFrame.maxOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): C? = Aggregators.max(skipNaN).aggregateOf(this, expression) +): C? = Aggregators.max.invoke(skipNaN).cast().aggregateOf(this, expression) -public inline fun ?> DataFrame.maxBy( +public inline fun ?> DataFrame.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = maxByOrNull(skipNaN, expression).suggestIfNull("maxBy") @@ -167,36 +168,36 @@ public fun DataFrame.maxBy(column: String, skipNaN: Boolean = skipNaNDefa @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.maxBy( +public inline fun ?> DataFrame.maxBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = maxByOrNull(column, skipNaN).suggestIfNull("maxBy") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.maxBy( +public inline fun ?> DataFrame.maxBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = maxByOrNull(column, skipNaN).suggestIfNull("maxBy") -public inline fun ?> DataFrame.maxByOrNull( +public inline fun ?> DataFrame.maxByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataRow? = Aggregators.max(skipNaN).aggregateByOrNull(this, expression) +): DataRow? = Aggregators.max.invoke(skipNaN).cast().aggregateByOrNull(this, expression) public fun DataFrame.maxByOrNull(column: String, skipNaN: Boolean = skipNaNDefault): DataRow? = maxByOrNull(column.toColumnOf?>(), skipNaN) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.maxByOrNull( +public inline fun ?> DataFrame.maxByOrNull( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): DataRow? = Aggregators.max(skipNaN).aggregateByOrNull(this, column) +): DataRow? = Aggregators.max.invoke(skipNaN).cast().aggregateByOrNull(this, column) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.maxByOrNull( +public inline fun ?> DataFrame.maxByOrNull( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow? = maxByOrNull(column.toColumnAccessor(), skipNaN) @@ -240,7 +241,7 @@ public fun ?> Grouped.max( name: String? = null, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.max(skipNaN).aggregateAll(this, name, columns) +): DataFrame = Aggregators.max.invoke(skipNaN).cast().aggregateAll(this, name, columns) public fun Grouped.max( vararg columns: String, @@ -250,7 +251,7 @@ public fun Grouped.max( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.max( +public fun ?> Grouped.max( vararg columns: ColumnReference, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -258,7 +259,7 @@ public fun ?> Grouped.max( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.max( +public fun ?> Grouped.max( vararg columns: KProperty, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -266,21 +267,21 @@ public fun ?> Grouped.max( @Refine @Interpretable("GroupByMaxOf") -public inline fun ?> Grouped.maxOf( +public inline fun ?> Grouped.maxOf( name: String? = null, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.max(skipNaN).aggregateOf(this, name, expression) +): DataFrame = Aggregators.max.invoke(skipNaN).cast().aggregateOf(this, name, expression) @Interpretable("GroupByReduceExpression") -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedGroupBy = reduce { maxByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = reduce { maxByOrNull(column, skipNaN) } @@ -290,7 +291,7 @@ public fun GroupBy.maxBy(column: String, skipNaN: Boolean = skipNaN @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = maxBy(column.toColumnAccessor(), skipNaN) @@ -330,41 +331,43 @@ public fun ?> Pivot.maxFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = maxFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> Pivot.max( +public fun ?> Pivot.max( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataRow = delegate { max(skipNaN, columns) } +): DataRow = delegate { maxFor(separate = false, skipNaN, columns) } -public fun Pivot.max(vararg columns: String, skipNaN: Boolean = skipNaNDefault): DataRow = - max(skipNaN) { columns.toComparableColumns() } +public fun ?> Pivot.max( + vararg columns: String, + skipNaN: Boolean = skipNaNDefault, +): DataRow = max(skipNaN) { columns.toComparableColumns() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.max( +public fun ?> Pivot.max( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = max(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.max( +public fun ?> Pivot.max( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = max(skipNaN) { columns.toColumnSet() } -public inline fun ?> Pivot.maxOf( +public inline fun ?> Pivot.maxOf( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): DataRow = delegate { maxOf(skipNaN, rowExpression) } -public inline fun ?> Pivot.maxBy( +public inline fun ?> Pivot.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivot = reduce { maxByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.maxBy( +public inline fun ?> Pivot.maxBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = reduce { maxByOrNull(column, skipNaN) } @@ -374,7 +377,7 @@ public fun Pivot.maxBy(column: String, skipNaN: Boolean = skipNaNDefault) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.maxBy( +public inline fun ?> Pivot.maxBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = maxBy(column.toColumnAccessor(), skipNaN) @@ -414,39 +417,39 @@ public fun ?> PivotGroupBy.maxFor( skipNaN: Boolean = skipNaNDefault, ): DataFrame = maxFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> PivotGroupBy.max( +public fun ?> PivotGroupBy.max( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.max(skipNaN).aggregateAll(this, columns) +): DataFrame = Aggregators.max.invoke(skipNaN).cast().aggregateAll(this, columns) public fun PivotGroupBy.max(vararg columns: String, skipNaN: Boolean = skipNaNDefault): DataFrame = max(skipNaN) { columns.toComparableColumns() } -public fun ?> PivotGroupBy.max( +public fun ?> PivotGroupBy.max( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataFrame = max(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.max( +public fun ?> PivotGroupBy.max( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataFrame = max(skipNaN) { columns.toColumnSet() } -public inline fun ?> PivotGroupBy.maxOf( +public inline fun ?> PivotGroupBy.maxOf( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): DataFrame = aggregate { maxOf(skipNaN, rowExpression) } -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = reduce { maxByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = reduce { maxByOrNull(column, skipNaN) } @@ -456,7 +459,7 @@ public fun PivotGroupBy.maxBy(column: String, skipNaN: Boolean = skipNaND @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = maxBy(column.toColumnAccessor(), skipNaN) @@ -473,26 +476,26 @@ public fun > DataColumn.max(): T = max(skipNaN = skipNaNDe public fun > DataColumn.maxOrNull(): T? = maxOrNull(skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.maxBy(noinline selector: (T) -> R): T & Any = +public inline fun ?> DataColumn.maxBy(noinline selector: (T) -> R): T = maxBy(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.maxByOrNull(noinline selector: (T) -> R): T? = +public inline fun ?> DataColumn.maxByOrNull(noinline selector: (T) -> R): T? = maxByOrNull(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.maxOf(crossinline selector: (T) -> R): R & Any = +public inline fun ?> DataColumn.maxOf(crossinline selector: (T) -> R): R = maxOf(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.maxOfOrNull(crossinline selector: (T) -> R): R? = +public inline fun ?> DataColumn.maxOfOrNull(crossinline selector: (T) -> R): R? = maxOfOrNull(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public inline fun > AnyRow.rowMaxOfOrNull(): T? = rowMaxOfOrNull(skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> AnyRow.rowMaxOf(): T & Any = rowMaxOf(skipNaN = skipNaNDefault) +public inline fun > AnyRow.rowMaxOf(): T = rowMaxOf(skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public fun DataFrame.max(): DataRow = max(skipNaN = skipNaNDefault) @@ -516,7 +519,7 @@ public fun ?> DataFrame.maxFor(vararg columns: KProperty maxFor(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.max(columns: ColumnsSelector): C & Any = +public fun ?> DataFrame.max(columns: ColumnsSelector): C = max(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -525,16 +528,16 @@ public fun DataFrame.max(vararg columns: String): Comparable = @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.max(vararg columns: ColumnReference): C & Any = +public fun ?> DataFrame.max(vararg columns: ColumnReference): C = max(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.max(vararg columns: KProperty): C & Any = +public fun ?> DataFrame.max(vararg columns: KProperty): C = max(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.maxOrNull(columns: ColumnsSelector): C? = +public fun ?> DataFrame.maxOrNull(columns: ColumnsSelector): C? = maxOrNull(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -543,26 +546,25 @@ public fun DataFrame.maxOrNull(vararg columns: String): Comparable? @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.maxOrNull(vararg columns: ColumnReference): C? = +public fun ?> DataFrame.maxOrNull(vararg columns: ColumnReference): C? = maxOrNull(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.maxOrNull(vararg columns: KProperty): C? = +public fun ?> DataFrame.maxOrNull(vararg columns: KProperty): C? = maxOrNull(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxOf( - crossinline expression: RowExpression, -): C & Any = maxOf(skipNaN = skipNaNDefault, expression = expression) +public inline fun ?> DataFrame.maxOf(crossinline expression: RowExpression): C = + maxOf(skipNaN = skipNaNDefault, expression = expression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxOfOrNull( +public inline fun ?> DataFrame.maxOfOrNull( crossinline expression: RowExpression, ): C? = maxOfOrNull(skipNaN = skipNaNDefault, expression = expression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxBy( +public inline fun ?> DataFrame.maxBy( crossinline expression: RowExpression, ): DataRow = maxBy(skipNaN = skipNaNDefault, expression = expression) @@ -571,16 +573,16 @@ public fun DataFrame.maxBy(column: String): DataRow = maxBy(column, sk @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxBy(column: ColumnReference): DataRow = +public inline fun ?> DataFrame.maxBy(column: ColumnReference): DataRow = maxBy(column, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxBy(column: KProperty): DataRow = +public inline fun ?> DataFrame.maxBy(column: KProperty): DataRow = maxBy(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxByOrNull( +public inline fun ?> DataFrame.maxByOrNull( crossinline expression: RowExpression, ): DataRow? = maxByOrNull(skipNaN = skipNaNDefault, expression = expression) @@ -589,13 +591,12 @@ public fun DataFrame.maxByOrNull(column: String): DataRow? = maxByOrNu @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxByOrNull( - column: ColumnReference, -): DataRow? = maxByOrNull(column, skipNaN = skipNaNDefault) +public inline fun ?> DataFrame.maxByOrNull(column: ColumnReference): DataRow? = + maxByOrNull(column, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxByOrNull(column: KProperty): DataRow? = +public inline fun ?> DataFrame.maxByOrNull(column: KProperty): DataRow? = maxByOrNull(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -620,7 +621,7 @@ public fun ?> Grouped.maxFor(vararg columns: KProperty?> Grouped.max( +public fun ?> Grouped.max( name: String? = null, columns: ColumnsSelector, ): DataFrame = max(name, skipNaN = skipNaNDefault, columns = columns) @@ -631,32 +632,30 @@ public fun Grouped.max(vararg columns: String, name: String? = null): Dat @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Grouped.max( +public fun ?> Grouped.max( vararg columns: ColumnReference, name: String? = null, ): DataFrame = max(columns = columns, name = name, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Grouped.max( - vararg columns: KProperty, - name: String? = null, -): DataFrame = max(columns = columns, name = name, skipNaN = skipNaNDefault) +public fun ?> Grouped.max(vararg columns: KProperty, name: String? = null): DataFrame = + max(columns = columns, name = name, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Grouped.maxOf( +public inline fun ?> Grouped.maxOf( name: String? = null, crossinline expression: RowExpression, ): DataFrame = maxOf(name, skipNaN = skipNaNDefault, expression = expression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( crossinline rowExpression: RowExpression, ): ReducedGroupBy = maxBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( column: ColumnReference, ): ReducedGroupBy = maxBy(column, skipNaN = skipNaNDefault) @@ -665,9 +664,8 @@ public fun GroupBy.maxBy(column: String): ReducedGroupBy = ma @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.maxBy( - column: KProperty, -): ReducedGroupBy = maxBy(column, skipNaN = skipNaNDefault) +public inline fun ?> GroupBy.maxBy(column: KProperty): ReducedGroupBy = + maxBy(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public fun Pivot.max(separate: Boolean = false): DataRow = max(separate, skipNaN = skipNaNDefault) @@ -697,32 +695,32 @@ public fun ?> Pivot.maxFor( ): DataRow = maxFor(columns = columns, separate = separate, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.max(columns: ColumnsSelector): DataRow = +public fun ?> Pivot.max(columns: ColumnsSelector): DataRow = max(skipNaN = skipNaNDefault, columns = columns) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.max(vararg columns: ColumnReference): DataRow = +public fun ?> Pivot.max(vararg columns: ColumnReference): DataRow = max(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.max(vararg columns: KProperty): DataRow = +public fun ?> Pivot.max(vararg columns: KProperty): DataRow = max(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.maxOf( +public inline fun ?> Pivot.maxOf( crossinline rowExpression: RowExpression, ): DataRow = maxOf(skipNaN = skipNaNDefault, rowExpression = rowExpression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.maxBy( +public inline fun ?> Pivot.maxBy( crossinline rowExpression: RowExpression, ): ReducedPivot = maxBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.maxBy(column: ColumnReference): ReducedPivot = +public inline fun ?> Pivot.maxBy(column: ColumnReference): ReducedPivot = maxBy(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -730,7 +728,7 @@ public fun Pivot.maxBy(column: String): ReducedPivot = maxBy(column, s @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.maxBy(column: KProperty): ReducedPivot = +public inline fun ?> Pivot.maxBy(column: KProperty): ReducedPivot = maxBy(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -761,7 +759,7 @@ public fun ?> PivotGroupBy.maxFor( ): DataFrame = maxFor(columns = columns, separate = separate, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.max(columns: ColumnsSelector): DataFrame = +public fun ?> PivotGroupBy.max(columns: ColumnsSelector): DataFrame = max(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -769,27 +767,27 @@ public fun PivotGroupBy.max(vararg columns: String): DataFrame = max(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.max(vararg columns: ColumnReference): DataFrame = +public fun ?> PivotGroupBy.max(vararg columns: ColumnReference): DataFrame = max(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.max(vararg columns: KProperty): DataFrame = +public fun ?> PivotGroupBy.max(vararg columns: KProperty): DataFrame = max(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.maxOf( +public inline fun ?> PivotGroupBy.maxOf( crossinline rowExpression: RowExpression, ): DataFrame = maxOf(skipNaN = skipNaNDefault, rowExpression = rowExpression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = maxBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( column: ColumnReference, ): ReducedPivotGroupBy = maxBy(column, skipNaN = skipNaNDefault) @@ -798,8 +796,7 @@ public fun PivotGroupBy.maxBy(column: String): ReducedPivotGroupBy = m @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.maxBy( - column: KProperty, -): ReducedPivotGroupBy = maxBy(column, skipNaN = skipNaNDefault) +public inline fun ?> PivotGroupBy.maxBy(column: KProperty): ReducedPivotGroupBy = + maxBy(column, skipNaN = skipNaNDefault) // endregion diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/median.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/median.kt index 576a17ea18..e790dece4d 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/median.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/median.kt @@ -15,6 +15,8 @@ import org.jetbrains.kotlinx.dataframe.annotations.Refine import org.jetbrains.kotlinx.dataframe.columns.ColumnReference import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators +import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast +import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast2 import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateByOrNull @@ -47,61 +49,58 @@ import kotlin.reflect.KProperty // region DataColumn -public fun ?> DataColumn.median(): T & Any = medianOrNull().suggestIfNull("median") +public fun ?> DataColumn.median(): T = medianOrNull().suggestIfNull("median") -public fun ?> DataColumn.medianOrNull(): T? = - Aggregators.medianComparables().aggregateSingleColumn(this) +public fun ?> DataColumn.medianOrNull(): T? = + Aggregators.median(skipNaNDefault).cast().aggregateSingleColumn(this) public fun DataColumn.median( skipNaN: Boolean = skipNaNDefault, ): Double - where T : Comparable?, T : Number? = medianOrNull(skipNaN = skipNaN).suggestIfNull("median") + where T : Comparable<*>?, T : Number? = medianOrNull(skipNaN = skipNaN).suggestIfNull("median") public fun DataColumn.medianOrNull( skipNaN: Boolean = skipNaNDefault, ): Double? - where T : Comparable?, T : Number? = - Aggregators.medianNumbers(skipNaN).aggregateSingleColumn(this) + where T : Comparable<*>?, T : Number? = + Aggregators.median(skipNaN).cast2().aggregateSingleColumn(this) @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.medianBy( +public inline fun ?> DataColumn.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T & Any = medianByOrNull(skipNaN, selector).suggestIfNull("medianBy") +): T = medianByOrNull(skipNaN, selector).suggestIfNull("medianBy") @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.medianByOrNull( +public inline fun ?> DataColumn.medianByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T? = Aggregators.medianCommon(skipNaN).aggregateByOrNull(this, selector) +): T? = Aggregators.median(skipNaN).cast().aggregateByOrNull(this, selector) // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.medianOf( - crossinline expression: (T) -> R, -): R & Any = medianOfOrNull(expression).suggestIfNull("medianOf") +public inline fun ?> DataColumn.medianOf(crossinline expression: (T) -> R): R = + medianOfOrNull(expression).suggestIfNull("medianOf") // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.medianOfOrNull( - crossinline expression: (T) -> R, -): R? = Aggregators.medianComparables().aggregateOf(this, expression) +public inline fun ?> DataColumn.medianOfOrNull(crossinline expression: (T) -> R): R? = + Aggregators.median(skipNaNDefault).cast().aggregateOf(this, expression) @OverloadResolutionByLambdaReturnType public inline fun DataColumn.medianOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: (T) -> R, ): Double - where R : Comparable?, R : Number? = - medianOfOrNull(skipNaN, expression).suggestIfNull("medianOf") + where R : Comparable<*>?, R : Number? = medianOfOrNull(skipNaN, expression).suggestIfNull("medianOf") @OverloadResolutionByLambdaReturnType public inline fun DataColumn.medianOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: (T) -> R, ): Double? - where R : Comparable?, R : Number? = - Aggregators.medianNumbers(skipNaN).aggregateOf(this, expression) + where R : Comparable<*>?, R : Number? = + Aggregators.median(skipNaN).cast2().aggregateOf(this, expression) // endregion @@ -164,21 +163,21 @@ public fun ?> DataFrame.medianFor( // TODO, requires explicit type C due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public fun ?> DataFrame.median(columns: ColumnsSelector): C & Any = +public fun ?> DataFrame.median(columns: ColumnsSelector): C = medianOrNull(columns).suggestIfNull("median") // TODO, requires explicit type C due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType @Suppress("UNCHECKED_CAST") -public fun ?> DataFrame.medianOrNull(columns: ColumnsSelector): C? = - Aggregators.medianComparables().aggregateAll(this, columns) +public fun ?> DataFrame.medianOrNull(columns: ColumnsSelector): C? = + Aggregators.median(skipNaNDefault).cast().aggregateAll(this, columns) @OverloadResolutionByLambdaReturnType public fun DataFrame.median( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): Double - where C : Number?, C : Comparable? = medianOrNull(skipNaN, columns).suggestIfNull("median") + where C : Number?, C : Comparable<*>? = medianOrNull(skipNaN, columns).suggestIfNull("median") @OverloadResolutionByLambdaReturnType @Suppress("UNCHECKED_CAST") @@ -186,8 +185,8 @@ public fun DataFrame.medianOrNull( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): Double? - where C : Comparable?, C : Number? = - Aggregators.medianNumbers(skipNaN).aggregateAll(this, columns) + where C : Comparable<*>?, C : Number? = + Aggregators.median(skipNaN).cast2().aggregateAll(this, columns) public fun DataFrame.median(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Any = medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") @@ -197,12 +196,12 @@ public fun DataFrame.medianOrNull(vararg columns: String, skipNaN: Boolea @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.median(vararg columns: ColumnReference): C & Any = +public fun ?> DataFrame.median(vararg columns: ColumnReference): C = medianOrNull(*columns).suggestIfNull("median") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.medianOrNull(vararg columns: ColumnReference): C? = +public fun ?> DataFrame.medianOrNull(vararg columns: ColumnReference): C? = medianOrNull { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @@ -211,8 +210,7 @@ public fun DataFrame.median( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): Double - where C : Comparable?, C : Number? = - medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") + where C : Comparable<*>?, C : Number? = medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload @@ -220,16 +218,16 @@ public fun DataFrame.medianOrNull( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): Double? - where C : Comparable?, C : Number? = medianOrNull(skipNaN) { columns.toColumnSet() } + where C : Comparable<*>?, C : Number? = medianOrNull(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.median(vararg columns: KProperty): C & Any = +public fun ?> DataFrame.median(vararg columns: KProperty): C = medianOrNull(*columns).suggestIfNull("median") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.medianOrNull(vararg columns: KProperty): C? = +public fun ?> DataFrame.medianOrNull(vararg columns: KProperty): C? = medianOrNull { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @@ -238,8 +236,7 @@ public fun DataFrame.median( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): Double - where C : Comparable?, C : Number? = - medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") + where C : Comparable<*>?, C : Number? = medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload @@ -247,37 +244,36 @@ public fun DataFrame.medianOrNull( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): Double? - where C : Comparable?, C : Number? = medianOrNull(skipNaN) { columns.toColumnSet() } + where C : Comparable<*>?, C : Number? = medianOrNull(skipNaN) { columns.toColumnSet() } // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataFrame.medianOf( +public inline fun ?> DataFrame.medianOf( crossinline expression: RowExpression, -): R & Any = medianOfOrNull(expression).suggestIfNull("medianOf") +): R = medianOfOrNull(expression).suggestIfNull("medianOf") // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataFrame.medianOfOrNull( +public inline fun ?> DataFrame.medianOfOrNull( crossinline expression: RowExpression, -): R? = Aggregators.medianComparables().aggregateOf(this, expression) +): R? = Aggregators.median(skipNaNDefault).cast().aggregateOf(this, expression) @OverloadResolutionByLambdaReturnType public inline fun DataFrame.medianOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): Double - where R : Comparable?, R : Number? = - medianOfOrNull(skipNaN, expression).suggestIfNull("medianOf") + where R : Comparable<*>?, R : Number? = medianOfOrNull(skipNaN, expression).suggestIfNull("medianOf") @OverloadResolutionByLambdaReturnType public inline fun DataFrame.medianOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): Double? - where R : Comparable?, R : Number? = - Aggregators.medianNumbers(skipNaN).aggregateOf(this, expression) + where R : Comparable<*>?, R : Number? = + Aggregators.median(skipNaN).cast2().aggregateOf(this, expression) -public inline fun ?> DataFrame.medianBy( +public inline fun ?> DataFrame.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = medianByOrNull(skipNaN, expression).suggestIfNull("medianBy") @@ -287,36 +283,36 @@ public fun DataFrame.medianBy(column: String, skipNaN: Boolean = skipNaND @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.medianBy( +public inline fun ?> DataFrame.medianBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = medianByOrNull(column, skipNaN).suggestIfNull("medianBy") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.medianBy( +public inline fun ?> DataFrame.medianBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = medianByOrNull(column, skipNaN).suggestIfNull("medianBy") -public inline fun ?> DataFrame.medianByOrNull( +public inline fun ?> DataFrame.medianByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataRow? = Aggregators.medianCommon(skipNaN).aggregateByOrNull(this, expression) +): DataRow? = Aggregators.median(skipNaN).cast().aggregateByOrNull(this, expression) public fun DataFrame.medianByOrNull(column: String, skipNaN: Boolean = skipNaNDefault): DataRow? = medianByOrNull(column.toColumnOf?>(), skipNaN) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.medianByOrNull( +public inline fun ?> DataFrame.medianByOrNull( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): DataRow? = Aggregators.medianCommon(skipNaN).aggregateByOrNull(this, column) +): DataRow? = Aggregators.median(skipNaN).cast().aggregateByOrNull(this, column) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.medianByOrNull( +public inline fun ?> DataFrame.medianByOrNull( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow? = medianByOrNull(column.toColumnAccessor(), skipNaN) @@ -358,7 +354,7 @@ public fun ?> Grouped.median( name: String? = null, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.medianCommon(skipNaN).aggregateAll(this, name, columns) +): DataFrame = Aggregators.median(skipNaN).cast().aggregateAll(this, name, columns) public fun Grouped.median( vararg columns: String, @@ -368,7 +364,7 @@ public fun Grouped.median( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.median( +public fun ?> Grouped.median( vararg columns: ColumnReference, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -376,7 +372,7 @@ public fun ?> Grouped.median( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.median( +public fun ?> Grouped.median( vararg columns: KProperty, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -384,21 +380,21 @@ public fun ?> Grouped.median( @Refine @Interpretable("GroupByMedianOf") -public inline fun ?> Grouped.medianOf( +public inline fun ?> Grouped.medianOf( name: String? = null, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.medianCommon(skipNaN).aggregateOf(this, name, expression) +): DataFrame = Aggregators.median(skipNaN).cast().aggregateOf(this, name, expression) @Interpretable("GroupByReduceExpression") // TODO? -public inline fun ?> GroupBy.medianBy( +public inline fun ?> GroupBy.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedGroupBy = reduce { medianByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.medianBy( +public inline fun ?> GroupBy.medianBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = reduce { medianByOrNull(column, skipNaN) } @@ -408,7 +404,7 @@ public fun GroupBy.medianBy(column: String, skipNaN: Boolean = skip @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.medianBy( +public inline fun ?> GroupBy.medianBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = medianBy(column.toColumnAccessor(), skipNaN) @@ -448,7 +444,7 @@ public fun ?> Pivot.medianFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = medianFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> Pivot.median( +public fun ?> Pivot.median( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): DataRow = delegate { median(skipNaN, columns) } @@ -458,31 +454,31 @@ public fun Pivot.median(vararg columns: String, skipNaN: Boolean = skipNa @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.median( +public fun ?> Pivot.median( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = median(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.median( +public fun ?> Pivot.median( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = median(skipNaN) { columns.toColumnSet() } -public inline fun ?> Pivot.medianOf( +public inline fun ?> Pivot.medianOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = delegate { medianOf(skipNaN, expression) } -public inline fun ?> Pivot.medianBy( +public inline fun ?> Pivot.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivot = reduce { medianByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.medianBy( +public inline fun ?> Pivot.medianBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = reduce { medianByOrNull(column, skipNaN) } @@ -492,7 +488,7 @@ public fun Pivot.medianBy(column: String, skipNaN: Boolean = skipNaNDefau @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.medianBy( +public inline fun ?> Pivot.medianBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = medianBy(column.toColumnAccessor(), skipNaN) @@ -531,41 +527,41 @@ public fun ?> PivotGroupBy.medianFor( skipNaN: Boolean = skipNaNDefault, ): DataFrame = medianFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> PivotGroupBy.median( +public fun ?> PivotGroupBy.median( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.medianCommon(skipNaN).aggregateAll(this, columns) +): DataFrame = Aggregators.median(skipNaN).cast().aggregateAll(this, columns) public fun PivotGroupBy.median(vararg columns: String, skipNaN: Boolean = skipNaNDefault): DataFrame = median(skipNaN) { columns.toComparableColumns() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.median( +public fun ?> PivotGroupBy.median( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataFrame = median(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.median( +public fun ?> PivotGroupBy.median( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataFrame = median(skipNaN) { columns.toColumnSet() } -public inline fun ?> PivotGroupBy.medianOf( +public inline fun ?> PivotGroupBy.medianOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.medianCommon(skipNaN).aggregateOf(this, expression) +): DataFrame = Aggregators.median(skipNaN).cast().aggregateOf(this, expression) -public inline fun ?> PivotGroupBy.medianBy( +public inline fun ?> PivotGroupBy.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = reduce { medianByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.medianBy( +public inline fun ?> PivotGroupBy.medianBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = reduce { medianByOrNull(column, skipNaN) } @@ -575,7 +571,7 @@ public fun PivotGroupBy.medianBy(column: String, skipNaN: Boolean = skipN @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.medianBy( +public inline fun ?> PivotGroupBy.medianBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = medianBy(column.toColumnAccessor(), skipNaN) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/min.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/min.kt index 6246e7205c..6621497f27 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/min.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/min.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlinx.dataframe.annotations.Refine import org.jetbrains.kotlinx.dataframe.columns.ColumnReference import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators +import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateByOrNull @@ -35,25 +36,25 @@ public fun > DataColumn.min(skipNaN: Boolean = skipNaNDefa public fun > DataColumn.minOrNull(skipNaN: Boolean = skipNaNDefault): T? = Aggregators.min(skipNaN).aggregateSingleColumn(this) -public inline fun ?> DataColumn.minBy( +public inline fun ?> DataColumn.minBy( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T & Any = minByOrNull(skipNaN, selector).suggestIfNull("minBy") +): T = minByOrNull(skipNaN, selector).suggestIfNull("minBy") -public inline fun ?> DataColumn.minByOrNull( +public inline fun ?> DataColumn.minByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T? = Aggregators.min(skipNaN).aggregateByOrNull(this, selector) +): T? = Aggregators.min.invoke(skipNaN).cast().aggregateByOrNull(this, selector) -public inline fun ?> DataColumn.minOf( +public inline fun ?> DataColumn.minOf( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): R & Any = minOfOrNull(skipNaN, selector).suggestIfNull("minOf") +): R = minOfOrNull(skipNaN, selector).suggestIfNull("minOf") -public inline fun ?> DataColumn.minOfOrNull( +public inline fun ?> DataColumn.minOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): R? = Aggregators.min(skipNaN).aggregateOf(this, selector) +): R? = Aggregators.min.invoke(skipNaN).cast().aggregateOf(this, selector) // endregion @@ -103,61 +104,61 @@ public fun ?> DataFrame.minFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = minFor(skipNaN) { columns.toColumnSet() } -public fun ?> DataFrame.min( +public fun ?> DataFrame.min( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): C & Any = minOrNull(skipNaN, columns).suggestIfNull("min") +): C = minOrNull(skipNaN, columns).suggestIfNull("min") public fun DataFrame.min(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Comparable = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.min( +public fun ?> DataFrame.min( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): C & Any = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") +): C = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.min( +public fun ?> DataFrame.min( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, -): C & Any = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") +): C = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") -public fun ?> DataFrame.minOrNull( +public fun ?> DataFrame.minOrNull( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): C? = Aggregators.min(skipNaN).aggregateAll(this, columns) +): C? = Aggregators.min.invoke(skipNaN).cast().aggregateAll(this, columns) public fun DataFrame.minOrNull(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Comparable? = minOrNull(skipNaN) { columns.toComparableColumns() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.minOrNull( +public fun ?> DataFrame.minOrNull( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): C? = minOrNull(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.minOrNull( +public fun ?> DataFrame.minOrNull( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): C? = minOrNull(skipNaN) { columns.toColumnSet() } -public inline fun ?> DataFrame.minOf( +public inline fun ?> DataFrame.minOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): C & Any = minOfOrNull(skipNaN, expression).suggestIfNull("minOf") +): C = minOfOrNull(skipNaN, expression).suggestIfNull("minOf") -public inline fun ?> DataFrame.minOfOrNull( +public inline fun ?> DataFrame.minOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): C? = Aggregators.min(skipNaN).aggregateOf(this, expression) +): C? = Aggregators.min.invoke(skipNaN).cast().aggregateOf(this, expression) -public inline fun ?> DataFrame.minBy( +public inline fun ?> DataFrame.minBy( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = minByOrNull(skipNaN, expression).suggestIfNull("minBy") @@ -167,36 +168,36 @@ public fun DataFrame.minBy(column: String, skipNaN: Boolean = skipNaNDefa @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.minBy( +public inline fun ?> DataFrame.minBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = minByOrNull(column, skipNaN).suggestIfNull("minBy") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.minBy( +public inline fun ?> DataFrame.minBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = minByOrNull(column, skipNaN).suggestIfNull("minBy") -public inline fun ?> DataFrame.minByOrNull( +public inline fun ?> DataFrame.minByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataRow? = Aggregators.min(skipNaN).aggregateByOrNull(this, expression) +): DataRow? = Aggregators.min.invoke(skipNaN).cast().aggregateByOrNull(this, expression) public fun DataFrame.minByOrNull(column: String, skipNaN: Boolean = skipNaNDefault): DataRow? = minByOrNull(column.toColumnOf?>(), skipNaN) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.minByOrNull( +public inline fun ?> DataFrame.minByOrNull( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): DataRow? = Aggregators.min(skipNaN).aggregateByOrNull(this, column) +): DataRow? = Aggregators.min.invoke(skipNaN).cast().aggregateByOrNull(this, column) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.minByOrNull( +public inline fun ?> DataFrame.minByOrNull( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow? = minByOrNull(column.toColumnAccessor(), skipNaN) @@ -240,7 +241,7 @@ public fun ?> Grouped.min( name: String? = null, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.min(skipNaN).aggregateAll(this, name, columns) +): DataFrame = Aggregators.min.invoke(skipNaN).cast().aggregateAll(this, name, columns) public fun Grouped.min( vararg columns: String, @@ -250,7 +251,7 @@ public fun Grouped.min( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.min( +public fun ?> Grouped.min( vararg columns: ColumnReference, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -258,7 +259,7 @@ public fun ?> Grouped.min( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.min( +public fun ?> Grouped.min( vararg columns: KProperty, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -266,21 +267,21 @@ public fun ?> Grouped.min( @Refine @Interpretable("GroupByMinOf") -public inline fun ?> Grouped.minOf( +public inline fun ?> Grouped.minOf( name: String? = null, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.min(skipNaN).aggregateOf(this, name, expression) +): DataFrame = Aggregators.min.invoke(skipNaN).cast().aggregateOf(this, name, expression) @Interpretable("GroupByReduceExpression") -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedGroupBy = reduce { minByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = reduce { minByOrNull(column, skipNaN) } @@ -290,7 +291,7 @@ public fun GroupBy.minBy(column: String, skipNaN: Boolean = skipNaN @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = minBy(column.toColumnAccessor(), skipNaN) @@ -330,7 +331,7 @@ public fun ?> Pivot.minFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = minFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> Pivot.min( +public fun ?> Pivot.min( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): DataRow = delegate { min(skipNaN, columns) } @@ -340,31 +341,31 @@ public fun Pivot.min(vararg columns: String, skipNaN: Boolean = skipNaNDe @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.min( +public fun ?> Pivot.min( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = min(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.min( +public fun ?> Pivot.min( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = min(skipNaN) { columns.toColumnSet() } -public inline fun ?> Pivot.minOf( +public inline fun ?> Pivot.minOf( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): DataRow = delegate { minOf(skipNaN, rowExpression) } -public inline fun ?> Pivot.minBy( +public inline fun ?> Pivot.minBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivot = reduce { minByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.minBy( +public inline fun ?> Pivot.minBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = reduce { minByOrNull(column, skipNaN) } @@ -374,7 +375,7 @@ public fun Pivot.minBy(column: String, skipNaN: Boolean = skipNaNDefault) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.minBy( +public inline fun ?> Pivot.minBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = minBy(column.toColumnAccessor(), skipNaN) @@ -414,39 +415,39 @@ public fun ?> PivotGroupBy.minFor( skipNaN: Boolean = skipNaNDefault, ): DataFrame = minFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> PivotGroupBy.min( +public fun ?> PivotGroupBy.min( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.min(skipNaN).aggregateAll(this, columns) +): DataFrame = Aggregators.min.invoke(skipNaN).cast().aggregateAll(this, columns) public fun PivotGroupBy.min(vararg columns: String, skipNaN: Boolean = skipNaNDefault): DataFrame = min(skipNaN) { columns.toComparableColumns() } -public fun ?> PivotGroupBy.min( +public fun ?> PivotGroupBy.min( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataFrame = min(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.min( +public fun ?> PivotGroupBy.min( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataFrame = min(skipNaN) { columns.toColumnSet() } -public inline fun ?> PivotGroupBy.minOf( +public inline fun ?> PivotGroupBy.minOf( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): DataFrame = aggregate { minOf(skipNaN, rowExpression) } -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = reduce { minByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = reduce { minByOrNull(column, skipNaN) } @@ -456,7 +457,7 @@ public fun PivotGroupBy.minBy(column: String, skipNaN: Boolean = skipNaND @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = minBy(column.toColumnAccessor(), skipNaN) @@ -473,26 +474,26 @@ public fun > DataColumn.min(): T = min(skipNaN = skipNaNDe public fun > DataColumn.minOrNull(): T? = minOrNull(skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.minBy(noinline selector: (T) -> R): T & Any = +public inline fun ?> DataColumn.minBy(noinline selector: (T) -> R): T = minBy(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.minByOrNull(noinline selector: (T) -> R): T? = +public inline fun ?> DataColumn.minByOrNull(noinline selector: (T) -> R): T? = minByOrNull(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.minOf(crossinline selector: (T) -> R): R & Any = +public inline fun ?> DataColumn.minOf(crossinline selector: (T) -> R): R = minOf(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.minOfOrNull(crossinline selector: (T) -> R): R? = +public inline fun ?> DataColumn.minOfOrNull(crossinline selector: (T) -> R): R? = minOfOrNull(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public inline fun > AnyRow.rowMinOfOrNull(): T? = rowMinOfOrNull(skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> AnyRow.rowMinOf(): T & Any = rowMinOf(skipNaN = skipNaNDefault) +public inline fun > AnyRow.rowMinOf(): T = rowMinOf(skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public fun DataFrame.min(): DataRow = min(skipNaN = skipNaNDefault) @@ -516,7 +517,7 @@ public fun ?> DataFrame.minFor(vararg columns: KProperty minFor(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.min(columns: ColumnsSelector): C & Any = +public fun ?> DataFrame.min(columns: ColumnsSelector): C = min(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -525,16 +526,16 @@ public fun DataFrame.min(vararg columns: String): Comparable = @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.min(vararg columns: ColumnReference): C & Any = +public fun ?> DataFrame.min(vararg columns: ColumnReference): C = min(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.min(vararg columns: KProperty): C & Any = +public fun ?> DataFrame.min(vararg columns: KProperty): C = min(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.minOrNull(columns: ColumnsSelector): C? = +public fun ?> DataFrame.minOrNull(columns: ColumnsSelector): C? = minOrNull(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -543,26 +544,25 @@ public fun DataFrame.minOrNull(vararg columns: String): Comparable? @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.minOrNull(vararg columns: ColumnReference): C? = +public fun ?> DataFrame.minOrNull(vararg columns: ColumnReference): C? = minOrNull(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.minOrNull(vararg columns: KProperty): C? = +public fun ?> DataFrame.minOrNull(vararg columns: KProperty): C? = minOrNull(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minOf( - crossinline expression: RowExpression, -): C & Any = minOf(skipNaN = skipNaNDefault, expression = expression) +public inline fun ?> DataFrame.minOf(crossinline expression: RowExpression): C = + minOf(skipNaN = skipNaNDefault, expression = expression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minOfOrNull( +public inline fun ?> DataFrame.minOfOrNull( crossinline expression: RowExpression, ): C? = minOfOrNull(skipNaN = skipNaNDefault, expression = expression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minBy( +public inline fun ?> DataFrame.minBy( crossinline expression: RowExpression, ): DataRow = minBy(skipNaN = skipNaNDefault, expression = expression) @@ -571,16 +571,16 @@ public fun DataFrame.minBy(column: String): DataRow = minBy(column, sk @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minBy(column: ColumnReference): DataRow = +public inline fun ?> DataFrame.minBy(column: ColumnReference): DataRow = minBy(column, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minBy(column: KProperty): DataRow = +public inline fun ?> DataFrame.minBy(column: KProperty): DataRow = minBy(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minByOrNull( +public inline fun ?> DataFrame.minByOrNull( crossinline expression: RowExpression, ): DataRow? = minByOrNull(skipNaN = skipNaNDefault, expression = expression) @@ -589,13 +589,12 @@ public fun DataFrame.minByOrNull(column: String): DataRow? = minByOrNu @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minByOrNull( - column: ColumnReference, -): DataRow? = minByOrNull(column, skipNaN = skipNaNDefault) +public inline fun ?> DataFrame.minByOrNull(column: ColumnReference): DataRow? = + minByOrNull(column, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minByOrNull(column: KProperty): DataRow? = +public inline fun ?> DataFrame.minByOrNull(column: KProperty): DataRow? = minByOrNull(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -620,7 +619,7 @@ public fun ?> Grouped.minFor(vararg columns: KProperty?> Grouped.min( +public fun ?> Grouped.min( name: String? = null, columns: ColumnsSelector, ): DataFrame = min(name, skipNaN = skipNaNDefault, columns = columns) @@ -631,32 +630,30 @@ public fun Grouped.min(vararg columns: String, name: String? = null): Dat @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Grouped.min( +public fun ?> Grouped.min( vararg columns: ColumnReference, name: String? = null, ): DataFrame = min(columns = columns, name = name, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Grouped.min( - vararg columns: KProperty, - name: String? = null, -): DataFrame = min(columns = columns, name = name, skipNaN = skipNaNDefault) +public fun ?> Grouped.min(vararg columns: KProperty, name: String? = null): DataFrame = + min(columns = columns, name = name, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Grouped.minOf( +public inline fun ?> Grouped.minOf( name: String? = null, crossinline expression: RowExpression, ): DataFrame = minOf(name, skipNaN = skipNaNDefault, expression = expression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( crossinline rowExpression: RowExpression, ): ReducedGroupBy = minBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( column: ColumnReference, ): ReducedGroupBy = minBy(column, skipNaN = skipNaNDefault) @@ -665,9 +662,8 @@ public fun GroupBy.minBy(column: String): ReducedGroupBy = mi @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.minBy( - column: KProperty, -): ReducedGroupBy = minBy(column, skipNaN = skipNaNDefault) +public inline fun ?> GroupBy.minBy(column: KProperty): ReducedGroupBy = + minBy(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public fun Pivot.min(separate: Boolean = false): DataRow = min(separate, skipNaN = skipNaNDefault) @@ -697,32 +693,32 @@ public fun ?> Pivot.minFor( ): DataRow = minFor(columns = columns, separate = separate, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.min(columns: ColumnsSelector): DataRow = +public fun ?> Pivot.min(columns: ColumnsSelector): DataRow = min(skipNaN = skipNaNDefault, columns = columns) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.min(vararg columns: ColumnReference): DataRow = +public fun ?> Pivot.min(vararg columns: ColumnReference): DataRow = min(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.min(vararg columns: KProperty): DataRow = +public fun ?> Pivot.min(vararg columns: KProperty): DataRow = min(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.minOf( +public inline fun ?> Pivot.minOf( crossinline rowExpression: RowExpression, ): DataRow = minOf(skipNaN = skipNaNDefault, rowExpression = rowExpression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.minBy( +public inline fun ?> Pivot.minBy( crossinline rowExpression: RowExpression, ): ReducedPivot = minBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.minBy(column: ColumnReference): ReducedPivot = +public inline fun ?> Pivot.minBy(column: ColumnReference): ReducedPivot = minBy(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -730,7 +726,7 @@ public fun Pivot.minBy(column: String): ReducedPivot = minBy(column, s @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.minBy(column: KProperty): ReducedPivot = +public inline fun ?> Pivot.minBy(column: KProperty): ReducedPivot = minBy(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -761,7 +757,7 @@ public fun ?> PivotGroupBy.minFor( ): DataFrame = minFor(columns = columns, separate = separate, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.min(columns: ColumnsSelector): DataFrame = +public fun ?> PivotGroupBy.min(columns: ColumnsSelector): DataFrame = min(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -769,27 +765,27 @@ public fun PivotGroupBy.min(vararg columns: String): DataFrame = min(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.min(vararg columns: ColumnReference): DataFrame = +public fun ?> PivotGroupBy.min(vararg columns: ColumnReference): DataFrame = min(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.min(vararg columns: KProperty): DataFrame = +public fun ?> PivotGroupBy.min(vararg columns: KProperty): DataFrame = min(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.minOf( +public inline fun ?> PivotGroupBy.minOf( crossinline rowExpression: RowExpression, ): DataFrame = minOf(skipNaN = skipNaNDefault, rowExpression = rowExpression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = minBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( column: ColumnReference, ): ReducedPivotGroupBy = minBy(column, skipNaN = skipNaNDefault) @@ -798,8 +794,7 @@ public fun PivotGroupBy.minBy(column: String): ReducedPivotGroupBy = m @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.minBy( - column: KProperty, -): ReducedPivotGroupBy = minBy(column, skipNaN = skipNaNDefault) +public inline fun ?> PivotGroupBy.minBy(column: KProperty): ReducedPivotGroupBy = + minBy(column, skipNaN = skipNaNDefault) // endregion diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/percentile.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/percentile.kt index be666a8448..76e22c6847 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/percentile.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/percentile.kt @@ -15,6 +15,8 @@ import org.jetbrains.kotlinx.dataframe.annotations.Refine import org.jetbrains.kotlinx.dataframe.columns.ColumnReference import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators +import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast +import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast2 import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateByOrNull @@ -48,53 +50,53 @@ import kotlin.reflect.KProperty // region DataColumn -public fun ?> DataColumn.percentile(percentile: Double): T & Any = +public fun ?> DataColumn.percentile(percentile: Double): T = percentileOrNull(percentile).suggestIfNull("percentile") -public fun ?> DataColumn.percentileOrNull(percentile: Double): T? = - Aggregators.percentileComparables(percentile).aggregateSingleColumn(this) +public fun ?> DataColumn.percentileOrNull(percentile: Double): T? = + Aggregators.percentile(percentile, skipNaNDefault).cast().aggregateSingleColumn(this) public fun DataColumn.percentile( percentile: Double, skipNaN: Boolean = skipNaNDefault, ): Double - where T : Comparable?, T : Number? = + where T : Comparable<*>?, T : Number? = percentileOrNull(percentile = percentile, skipNaN = skipNaN).suggestIfNull("percentile") public fun DataColumn.percentileOrNull( percentile: Double, skipNaN: Boolean = skipNaNDefault, ): Double? - where T : Comparable?, T : Number? = - Aggregators.percentileNumbers(percentile, skipNaN).aggregateSingleColumn(this) + where T : Comparable<*>?, T : Number? = + Aggregators.percentile(percentile, skipNaN).cast2().aggregateSingleColumn(this) @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.percentileBy( +public inline fun ?> DataColumn.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T & Any = percentileByOrNull(percentile, skipNaN, selector).suggestIfNull("percentileBy") +): T = percentileByOrNull(percentile, skipNaN, selector).suggestIfNull("percentileBy") @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.percentileByOrNull( +public inline fun ?> DataColumn.percentileByOrNull( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T? = Aggregators.percentileCommon(percentile, skipNaN).aggregateByOrNull(this, selector) +): T? = Aggregators.percentile(percentile, skipNaN).cast().aggregateByOrNull(this, selector) // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.percentileOf( +public inline fun ?> DataColumn.percentileOf( percentile: Double, crossinline expression: (T) -> R, -): R & Any = percentileOfOrNull(percentile, expression).suggestIfNull("percentileOf") +): R = percentileOfOrNull(percentile, expression).suggestIfNull("percentileOf") // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.percentileOfOrNull( +public inline fun ?> DataColumn.percentileOfOrNull( percentile: Double, crossinline expression: (T) -> R, -): R? = Aggregators.percentileComparables(percentile).aggregateOf(this, expression) +): R? = Aggregators.percentile(percentile, skipNaNDefault).cast().aggregateOf(this, expression) @OverloadResolutionByLambdaReturnType public inline fun DataColumn.percentileOf( @@ -102,7 +104,7 @@ public inline fun DataColumn.percentileOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: (T) -> R, ): Double - where R : Comparable?, R : Number? = + where R : Comparable<*>?, R : Number? = percentileOfOrNull(percentile, skipNaN, expression).suggestIfNull("percentileOf") @OverloadResolutionByLambdaReturnType @@ -111,8 +113,8 @@ public inline fun DataColumn.percentileOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: (T) -> R, ): Double? - where R : Comparable?, R : Number? = - Aggregators.percentileNumbers(percentile, skipNaN).aggregateOf(this, expression) + where R : Comparable<*>?, R : Number? = + Aggregators.percentile(percentile, skipNaN).cast2().aggregateOf(this, expression) // endregion @@ -184,18 +186,16 @@ public fun ?> DataFrame.percentileFor( // TODO, requires explicit type C due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public fun ?> DataFrame.percentile( - percentile: Double, - columns: ColumnsSelector, -): C & Any = percentileOrNull(percentile, columns).suggestIfNull("percentile") +public fun ?> DataFrame.percentile(percentile: Double, columns: ColumnsSelector): C = + percentileOrNull(percentile, columns).suggestIfNull("percentile") // TODO, requires explicit type C due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType @Suppress("UNCHECKED_CAST") -public fun ?> DataFrame.percentileOrNull( +public fun ?> DataFrame.percentileOrNull( percentile: Double, columns: ColumnsSelector, -): C? = Aggregators.percentileComparables(percentile).aggregateAll(this, columns) +): C? = Aggregators.percentile(percentile, skipNaNDefault).cast().aggregateAll(this, columns) @OverloadResolutionByLambdaReturnType public fun DataFrame.percentile( @@ -203,7 +203,7 @@ public fun DataFrame.percentile( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): Double - where C : Number?, C : Comparable? = + where C : Number?, C : Comparable<*>? = percentileOrNull(percentile, skipNaN, columns).suggestIfNull("percentile") @OverloadResolutionByLambdaReturnType @@ -213,8 +213,8 @@ public fun DataFrame.percentileOrNull( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): Double? - where C : Comparable?, C : Number? = - Aggregators.percentileNumbers(percentile, skipNaN).aggregateAll(this, columns) + where C : Comparable<*>?, C : Number? = + Aggregators.percentile(percentile, skipNaN).cast2().aggregateAll(this, columns) public fun DataFrame.percentile( percentile: Double, @@ -231,14 +231,12 @@ public fun DataFrame.percentileOrNull( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.percentile( - percentile: Double, - vararg columns: ColumnReference, -): C & Any = percentileOrNull(percentile, *columns).suggestIfNull("percentile") +public fun ?> DataFrame.percentile(percentile: Double, vararg columns: ColumnReference): C = + percentileOrNull(percentile, *columns).suggestIfNull("percentile") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.percentileOrNull( +public fun ?> DataFrame.percentileOrNull( percentile: Double, vararg columns: ColumnReference, ): C? = percentileOrNull(percentile) { columns.toColumnSet() } @@ -250,7 +248,7 @@ public fun DataFrame.percentile( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): Double - where C : Comparable?, C : Number? = + where C : Comparable<*>?, C : Number? = percentileOrNull(percentile, *columns, skipNaN = skipNaN).suggestIfNull("percentile") @Deprecated(DEPRECATED_ACCESS_API) @@ -260,19 +258,16 @@ public fun DataFrame.percentileOrNull( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): Double? - where C : Comparable?, C : Number? = - percentileOrNull(percentile, skipNaN) { columns.toColumnSet() } + where C : Comparable<*>?, C : Number? = percentileOrNull(percentile, skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.percentile( - percentile: Double, - vararg columns: KProperty, -): C & Any = percentileOrNull(percentile, *columns).suggestIfNull("percentile") +public fun ?> DataFrame.percentile(percentile: Double, vararg columns: KProperty): C = + percentileOrNull(percentile, *columns).suggestIfNull("percentile") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.percentileOrNull( +public fun ?> DataFrame.percentileOrNull( percentile: Double, vararg columns: KProperty, ): C? = percentileOrNull(percentile) { columns.toColumnSet() } @@ -284,7 +279,7 @@ public fun DataFrame.percentile( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): Double - where C : Comparable?, C : Number? = + where C : Comparable<*>?, C : Number? = percentileOrNull(percentile, *columns, skipNaN = skipNaN).suggestIfNull("percentile") @Deprecated(DEPRECATED_ACCESS_API) @@ -294,22 +289,21 @@ public fun DataFrame.percentileOrNull( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): Double? - where C : Comparable?, C : Number? = - percentileOrNull(percentile, skipNaN) { columns.toColumnSet() } + where C : Comparable<*>?, C : Number? = percentileOrNull(percentile, skipNaN) { columns.toColumnSet() } // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataFrame.percentileOf( +public inline fun ?> DataFrame.percentileOf( percentile: Double, crossinline expression: RowExpression, -): R & Any = percentileOfOrNull(percentile, expression).suggestIfNull("percentileOf") +): R = percentileOfOrNull(percentile, expression).suggestIfNull("percentileOf") // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataFrame.percentileOfOrNull( +public inline fun ?> DataFrame.percentileOfOrNull( percentile: Double, crossinline expression: RowExpression, -): R? = Aggregators.percentileComparables(percentile).aggregateOf(this, expression) +): R? = Aggregators.percentile(percentile, skipNaNDefault).cast().aggregateOf(this, expression) @OverloadResolutionByLambdaReturnType public inline fun DataFrame.percentileOf( @@ -317,7 +311,7 @@ public inline fun DataFrame.percentileOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): Double - where R : Comparable?, R : Number? = + where R : Comparable<*>?, R : Number? = percentileOfOrNull(percentile, skipNaN, expression).suggestIfNull("percentileOf") @OverloadResolutionByLambdaReturnType @@ -326,10 +320,10 @@ public inline fun DataFrame.percentileOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): Double? - where R : Comparable?, R : Number? = - Aggregators.percentileNumbers(percentile, skipNaN).aggregateOf(this, expression) + where R : Comparable<*>?, R : Number? = + Aggregators.percentile(percentile, skipNaN).cast2().aggregateOf(this, expression) -public inline fun ?> DataFrame.percentileBy( +public inline fun ?> DataFrame.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, @@ -343,7 +337,7 @@ public fun DataFrame.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.percentileBy( +public inline fun ?> DataFrame.percentileBy( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -351,17 +345,17 @@ public inline fun ?> DataFrame.percentileB @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.percentileBy( +public inline fun ?> DataFrame.percentileBy( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = percentileByOrNull(percentile, column, skipNaN).suggestIfNull("percentileBy") -public inline fun ?> DataFrame.percentileByOrNull( +public inline fun ?> DataFrame.percentileByOrNull( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataRow? = Aggregators.percentileCommon(percentile, skipNaN).aggregateByOrNull(this, expression) +): DataRow? = Aggregators.percentile(percentile, skipNaN).cast().aggregateByOrNull(this, expression) public fun DataFrame.percentileByOrNull( percentile: Double, @@ -371,15 +365,15 @@ public fun DataFrame.percentileByOrNull( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.percentileByOrNull( +public inline fun ?> DataFrame.percentileByOrNull( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): DataRow? = Aggregators.percentileCommon(percentile, skipNaN).aggregateByOrNull(this, column) +): DataRow? = Aggregators.percentile(percentile, skipNaN).cast().aggregateByOrNull(this, column) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.percentileByOrNull( +public inline fun ?> DataFrame.percentileByOrNull( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, @@ -427,7 +421,7 @@ public fun ?> Grouped.percentile( name: String? = null, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.percentileCommon(percentile, skipNaN).aggregateAll(this, name, columns) +): DataFrame = Aggregators.percentile(percentile, skipNaN).cast().aggregateAll(this, name, columns) public fun Grouped.percentile( percentile: Double, @@ -438,7 +432,7 @@ public fun Grouped.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.percentile( +public fun ?> Grouped.percentile( percentile: Double, vararg columns: ColumnReference, name: String? = null, @@ -447,7 +441,7 @@ public fun ?> Grouped.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.percentile( +public fun ?> Grouped.percentile( percentile: Double, vararg columns: KProperty, name: String? = null, @@ -456,15 +450,15 @@ public fun ?> Grouped.percentile( @Refine @Interpretable("GroupByPercentileOf") -public inline fun ?> Grouped.percentileOf( +public inline fun ?> Grouped.percentileOf( percentile: Double, name: String? = null, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.percentileCommon(percentile, skipNaN).aggregateOf(this, name, expression) +): DataFrame = Aggregators.percentile(percentile, skipNaN).cast().aggregateOf(this, name, expression) @Interpretable("GroupByReduceExpression") // TODO? -public inline fun ?> GroupBy.percentileBy( +public inline fun ?> GroupBy.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, @@ -472,7 +466,7 @@ public inline fun ?> GroupBy.percent @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.percentileBy( +public inline fun ?> GroupBy.percentileBy( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -486,7 +480,7 @@ public fun GroupBy.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.percentileBy( +public inline fun ?> GroupBy.percentileBy( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, @@ -534,7 +528,7 @@ public fun ?> Pivot.percentileFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = percentileFor(percentile, separate, skipNaN) { columns.toColumnSet() } -public fun ?> Pivot.percentile( +public fun ?> Pivot.percentile( percentile: Double, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, @@ -548,7 +542,7 @@ public fun Pivot.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.percentile( +public fun ?> Pivot.percentile( percentile: Double, vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -556,19 +550,19 @@ public fun ?> Pivot.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.percentile( +public fun ?> Pivot.percentile( percentile: Double, vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = percentile(percentile, skipNaN) { columns.toColumnSet() } -public inline fun ?> Pivot.percentileOf( +public inline fun ?> Pivot.percentileOf( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = delegate { percentileOf(percentile, skipNaN, expression) } -public inline fun ?> Pivot.percentileBy( +public inline fun ?> Pivot.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, @@ -576,7 +570,7 @@ public inline fun ?> Pivot.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.percentileBy( +public inline fun ?> Pivot.percentileBy( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -590,7 +584,7 @@ public fun Pivot.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.percentileBy( +public inline fun ?> Pivot.percentileBy( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, @@ -637,11 +631,11 @@ public fun ?> PivotGroupBy.percentileFor( skipNaN: Boolean = skipNaNDefault, ): DataFrame = percentileFor(percentile, separate, skipNaN) { columns.toColumnSet() } -public fun ?> PivotGroupBy.percentile( +public fun ?> PivotGroupBy.percentile( percentile: Double, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.percentileCommon(percentile, skipNaN).aggregateAll(this, columns) +): DataFrame = Aggregators.percentile(percentile, skipNaN).cast().aggregateAll(this, columns) public fun PivotGroupBy.percentile( percentile: Double, @@ -651,7 +645,7 @@ public fun PivotGroupBy.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.percentile( +public fun ?> PivotGroupBy.percentile( percentile: Double, vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -659,19 +653,19 @@ public fun ?> PivotGroupBy.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.percentile( +public fun ?> PivotGroupBy.percentile( percentile: Double, vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataFrame = percentile(percentile, skipNaN) { columns.toColumnSet() } -public inline fun ?> PivotGroupBy.percentileOf( +public inline fun ?> PivotGroupBy.percentileOf( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.percentileCommon(percentile, skipNaN).aggregateOf(this, expression) +): DataFrame = Aggregators.percentile(percentile, skipNaN).cast().aggregateOf(this, expression) -public inline fun ?> PivotGroupBy.percentileBy( +public inline fun ?> PivotGroupBy.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, @@ -679,7 +673,7 @@ public inline fun ?> PivotGroupBy.percenti @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.percentileBy( +public inline fun ?> PivotGroupBy.percentileBy( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -693,7 +687,7 @@ public fun PivotGroupBy.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.percentileBy( +public inline fun ?> PivotGroupBy.percentileBy( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, From 421140a43c9ed0ba25ca7cbdca67a1869faf18f3 Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Tue, 25 Nov 2025 17:28:37 +0400 Subject: [PATCH 02/16] Revert "apply DefinitelyNotNullable patch for notebooks only: #1116" This reverts commit 0ae5b3161437b58d37bbe4d1589a678a5092b4cd. --- .../jetbrains/kotlinx/dataframe/api/max.kt | 211 +++++++++--------- .../jetbrains/kotlinx/dataframe/api/median.kt | 148 ++++++------ .../jetbrains/kotlinx/dataframe/api/min.kt | 203 +++++++++-------- .../kotlinx/dataframe/api/percentile.kt | 156 ++++++------- 4 files changed, 368 insertions(+), 350 deletions(-) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/max.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/max.kt index f4ae1ce7db..d1ff0cd1e2 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/max.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/max.kt @@ -13,7 +13,6 @@ import org.jetbrains.kotlinx.dataframe.annotations.Refine import org.jetbrains.kotlinx.dataframe.columns.ColumnReference import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators -import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateByOrNull @@ -36,25 +35,25 @@ public fun > DataColumn.max(skipNaN: Boolean = skipNaNDefa public fun > DataColumn.maxOrNull(skipNaN: Boolean = skipNaNDefault): T? = Aggregators.max(skipNaN).aggregateSingleColumn(this) -public inline fun ?> DataColumn.maxBy( +public inline fun ?> DataColumn.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T = maxByOrNull(skipNaN, selector).suggestIfNull("maxBy") +): T & Any = maxByOrNull(skipNaN, selector).suggestIfNull("maxBy") -public inline fun ?> DataColumn.maxByOrNull( +public inline fun ?> DataColumn.maxByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T? = Aggregators.max.invoke(skipNaN).cast().aggregateByOrNull(this, selector) +): T? = Aggregators.max(skipNaN).aggregateByOrNull(this, selector) -public inline fun ?> DataColumn.maxOf( +public inline fun ?> DataColumn.maxOf( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): R = maxOfOrNull(skipNaN, selector).suggestIfNull("maxOf") +): R & Any = maxOfOrNull(skipNaN, selector).suggestIfNull("maxOf") -public inline fun ?> DataColumn.maxOfOrNull( +public inline fun ?> DataColumn.maxOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): R? = Aggregators.max.invoke(skipNaN).cast().aggregateOf(this, selector) +): R? = Aggregators.max(skipNaN).aggregateOf(this, selector) // endregion @@ -104,61 +103,61 @@ public fun ?> DataFrame.maxFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = maxFor(skipNaN) { columns.toColumnSet() } -public fun ?> DataFrame.max( +public fun ?> DataFrame.max( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): C = maxOrNull(skipNaN, columns).suggestIfNull("max") +): C & Any = maxOrNull(skipNaN, columns).suggestIfNull("max") public fun DataFrame.max(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Comparable = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.max( +public fun ?> DataFrame.max( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): C = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") +): C & Any = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.max( +public fun ?> DataFrame.max( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, -): C = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") +): C & Any = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") -public fun ?> DataFrame.maxOrNull( +public fun ?> DataFrame.maxOrNull( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): C? = Aggregators.max.invoke(skipNaN).cast().aggregateAll(this, columns) +): C? = Aggregators.max(skipNaN).aggregateAll(this, columns) public fun DataFrame.maxOrNull(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Comparable? = maxOrNull(skipNaN) { columns.toComparableColumns() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.maxOrNull( +public fun ?> DataFrame.maxOrNull( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): C? = maxOrNull(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.maxOrNull( +public fun ?> DataFrame.maxOrNull( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): C? = maxOrNull(skipNaN) { columns.toColumnSet() } -public inline fun ?> DataFrame.maxOf( +public inline fun ?> DataFrame.maxOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): C = maxOfOrNull(skipNaN, expression).suggestIfNull("maxOf") +): C & Any = maxOfOrNull(skipNaN, expression).suggestIfNull("maxOf") -public inline fun ?> DataFrame.maxOfOrNull( +public inline fun ?> DataFrame.maxOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): C? = Aggregators.max.invoke(skipNaN).cast().aggregateOf(this, expression) +): C? = Aggregators.max(skipNaN).aggregateOf(this, expression) -public inline fun ?> DataFrame.maxBy( +public inline fun ?> DataFrame.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = maxByOrNull(skipNaN, expression).suggestIfNull("maxBy") @@ -168,36 +167,36 @@ public fun DataFrame.maxBy(column: String, skipNaN: Boolean = skipNaNDefa @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.maxBy( +public inline fun ?> DataFrame.maxBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = maxByOrNull(column, skipNaN).suggestIfNull("maxBy") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.maxBy( +public inline fun ?> DataFrame.maxBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = maxByOrNull(column, skipNaN).suggestIfNull("maxBy") -public inline fun ?> DataFrame.maxByOrNull( +public inline fun ?> DataFrame.maxByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataRow? = Aggregators.max.invoke(skipNaN).cast().aggregateByOrNull(this, expression) +): DataRow? = Aggregators.max(skipNaN).aggregateByOrNull(this, expression) public fun DataFrame.maxByOrNull(column: String, skipNaN: Boolean = skipNaNDefault): DataRow? = maxByOrNull(column.toColumnOf?>(), skipNaN) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.maxByOrNull( +public inline fun ?> DataFrame.maxByOrNull( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): DataRow? = Aggregators.max.invoke(skipNaN).cast().aggregateByOrNull(this, column) +): DataRow? = Aggregators.max(skipNaN).aggregateByOrNull(this, column) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.maxByOrNull( +public inline fun ?> DataFrame.maxByOrNull( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow? = maxByOrNull(column.toColumnAccessor(), skipNaN) @@ -241,7 +240,7 @@ public fun ?> Grouped.max( name: String? = null, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.max.invoke(skipNaN).cast().aggregateAll(this, name, columns) +): DataFrame = Aggregators.max(skipNaN).aggregateAll(this, name, columns) public fun Grouped.max( vararg columns: String, @@ -251,7 +250,7 @@ public fun Grouped.max( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.max( +public fun ?> Grouped.max( vararg columns: ColumnReference, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -259,7 +258,7 @@ public fun ?> Grouped.max( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.max( +public fun ?> Grouped.max( vararg columns: KProperty, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -267,21 +266,21 @@ public fun ?> Grouped.max( @Refine @Interpretable("GroupByMaxOf") -public inline fun ?> Grouped.maxOf( +public inline fun ?> Grouped.maxOf( name: String? = null, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.max.invoke(skipNaN).cast().aggregateOf(this, name, expression) +): DataFrame = Aggregators.max(skipNaN).aggregateOf(this, name, expression) @Interpretable("GroupByReduceExpression") -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedGroupBy = reduce { maxByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = reduce { maxByOrNull(column, skipNaN) } @@ -291,7 +290,7 @@ public fun GroupBy.maxBy(column: String, skipNaN: Boolean = skipNaN @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = maxBy(column.toColumnAccessor(), skipNaN) @@ -331,43 +330,41 @@ public fun ?> Pivot.maxFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = maxFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> Pivot.max( +public fun ?> Pivot.max( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataRow = delegate { maxFor(separate = false, skipNaN, columns) } +): DataRow = delegate { max(skipNaN, columns) } -public fun ?> Pivot.max( - vararg columns: String, - skipNaN: Boolean = skipNaNDefault, -): DataRow = max(skipNaN) { columns.toComparableColumns() } +public fun Pivot.max(vararg columns: String, skipNaN: Boolean = skipNaNDefault): DataRow = + max(skipNaN) { columns.toComparableColumns() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.max( +public fun ?> Pivot.max( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = max(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.max( +public fun ?> Pivot.max( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = max(skipNaN) { columns.toColumnSet() } -public inline fun ?> Pivot.maxOf( +public inline fun ?> Pivot.maxOf( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): DataRow = delegate { maxOf(skipNaN, rowExpression) } -public inline fun ?> Pivot.maxBy( +public inline fun ?> Pivot.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivot = reduce { maxByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.maxBy( +public inline fun ?> Pivot.maxBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = reduce { maxByOrNull(column, skipNaN) } @@ -377,7 +374,7 @@ public fun Pivot.maxBy(column: String, skipNaN: Boolean = skipNaNDefault) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.maxBy( +public inline fun ?> Pivot.maxBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = maxBy(column.toColumnAccessor(), skipNaN) @@ -417,39 +414,39 @@ public fun ?> PivotGroupBy.maxFor( skipNaN: Boolean = skipNaNDefault, ): DataFrame = maxFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> PivotGroupBy.max( +public fun ?> PivotGroupBy.max( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.max.invoke(skipNaN).cast().aggregateAll(this, columns) +): DataFrame = Aggregators.max(skipNaN).aggregateAll(this, columns) public fun PivotGroupBy.max(vararg columns: String, skipNaN: Boolean = skipNaNDefault): DataFrame = max(skipNaN) { columns.toComparableColumns() } -public fun ?> PivotGroupBy.max( +public fun ?> PivotGroupBy.max( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataFrame = max(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.max( +public fun ?> PivotGroupBy.max( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataFrame = max(skipNaN) { columns.toColumnSet() } -public inline fun ?> PivotGroupBy.maxOf( +public inline fun ?> PivotGroupBy.maxOf( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): DataFrame = aggregate { maxOf(skipNaN, rowExpression) } -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = reduce { maxByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = reduce { maxByOrNull(column, skipNaN) } @@ -459,7 +456,7 @@ public fun PivotGroupBy.maxBy(column: String, skipNaN: Boolean = skipNaND @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = maxBy(column.toColumnAccessor(), skipNaN) @@ -476,26 +473,26 @@ public fun > DataColumn.max(): T = max(skipNaN = skipNaNDe public fun > DataColumn.maxOrNull(): T? = maxOrNull(skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.maxBy(noinline selector: (T) -> R): T = +public inline fun ?> DataColumn.maxBy(noinline selector: (T) -> R): T & Any = maxBy(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.maxByOrNull(noinline selector: (T) -> R): T? = +public inline fun ?> DataColumn.maxByOrNull(noinline selector: (T) -> R): T? = maxByOrNull(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.maxOf(crossinline selector: (T) -> R): R = +public inline fun ?> DataColumn.maxOf(crossinline selector: (T) -> R): R & Any = maxOf(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.maxOfOrNull(crossinline selector: (T) -> R): R? = +public inline fun ?> DataColumn.maxOfOrNull(crossinline selector: (T) -> R): R? = maxOfOrNull(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public inline fun > AnyRow.rowMaxOfOrNull(): T? = rowMaxOfOrNull(skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun > AnyRow.rowMaxOf(): T = rowMaxOf(skipNaN = skipNaNDefault) +public inline fun ?> AnyRow.rowMaxOf(): T & Any = rowMaxOf(skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public fun DataFrame.max(): DataRow = max(skipNaN = skipNaNDefault) @@ -519,7 +516,7 @@ public fun ?> DataFrame.maxFor(vararg columns: KProperty maxFor(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.max(columns: ColumnsSelector): C = +public fun ?> DataFrame.max(columns: ColumnsSelector): C & Any = max(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -528,16 +525,16 @@ public fun DataFrame.max(vararg columns: String): Comparable = @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.max(vararg columns: ColumnReference): C = +public fun ?> DataFrame.max(vararg columns: ColumnReference): C & Any = max(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.max(vararg columns: KProperty): C = +public fun ?> DataFrame.max(vararg columns: KProperty): C & Any = max(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.maxOrNull(columns: ColumnsSelector): C? = +public fun ?> DataFrame.maxOrNull(columns: ColumnsSelector): C? = maxOrNull(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -546,25 +543,26 @@ public fun DataFrame.maxOrNull(vararg columns: String): Comparable? @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.maxOrNull(vararg columns: ColumnReference): C? = +public fun ?> DataFrame.maxOrNull(vararg columns: ColumnReference): C? = maxOrNull(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.maxOrNull(vararg columns: KProperty): C? = +public fun ?> DataFrame.maxOrNull(vararg columns: KProperty): C? = maxOrNull(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxOf(crossinline expression: RowExpression): C = - maxOf(skipNaN = skipNaNDefault, expression = expression) +public inline fun ?> DataFrame.maxOf( + crossinline expression: RowExpression, +): C & Any = maxOf(skipNaN = skipNaNDefault, expression = expression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxOfOrNull( +public inline fun ?> DataFrame.maxOfOrNull( crossinline expression: RowExpression, ): C? = maxOfOrNull(skipNaN = skipNaNDefault, expression = expression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxBy( +public inline fun ?> DataFrame.maxBy( crossinline expression: RowExpression, ): DataRow = maxBy(skipNaN = skipNaNDefault, expression = expression) @@ -573,16 +571,16 @@ public fun DataFrame.maxBy(column: String): DataRow = maxBy(column, sk @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxBy(column: ColumnReference): DataRow = +public inline fun ?> DataFrame.maxBy(column: ColumnReference): DataRow = maxBy(column, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxBy(column: KProperty): DataRow = +public inline fun ?> DataFrame.maxBy(column: KProperty): DataRow = maxBy(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxByOrNull( +public inline fun ?> DataFrame.maxByOrNull( crossinline expression: RowExpression, ): DataRow? = maxByOrNull(skipNaN = skipNaNDefault, expression = expression) @@ -591,12 +589,13 @@ public fun DataFrame.maxByOrNull(column: String): DataRow? = maxByOrNu @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxByOrNull(column: ColumnReference): DataRow? = - maxByOrNull(column, skipNaN = skipNaNDefault) +public inline fun ?> DataFrame.maxByOrNull( + column: ColumnReference, +): DataRow? = maxByOrNull(column, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxByOrNull(column: KProperty): DataRow? = +public inline fun ?> DataFrame.maxByOrNull(column: KProperty): DataRow? = maxByOrNull(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -621,7 +620,7 @@ public fun ?> Grouped.maxFor(vararg columns: KProperty?> Grouped.max( +public fun ?> Grouped.max( name: String? = null, columns: ColumnsSelector, ): DataFrame = max(name, skipNaN = skipNaNDefault, columns = columns) @@ -632,30 +631,32 @@ public fun Grouped.max(vararg columns: String, name: String? = null): Dat @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Grouped.max( +public fun ?> Grouped.max( vararg columns: ColumnReference, name: String? = null, ): DataFrame = max(columns = columns, name = name, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Grouped.max(vararg columns: KProperty, name: String? = null): DataFrame = - max(columns = columns, name = name, skipNaN = skipNaNDefault) +public fun ?> Grouped.max( + vararg columns: KProperty, + name: String? = null, +): DataFrame = max(columns = columns, name = name, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Grouped.maxOf( +public inline fun ?> Grouped.maxOf( name: String? = null, crossinline expression: RowExpression, ): DataFrame = maxOf(name, skipNaN = skipNaNDefault, expression = expression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( crossinline rowExpression: RowExpression, ): ReducedGroupBy = maxBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( column: ColumnReference, ): ReducedGroupBy = maxBy(column, skipNaN = skipNaNDefault) @@ -664,8 +665,9 @@ public fun GroupBy.maxBy(column: String): ReducedGroupBy = ma @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.maxBy(column: KProperty): ReducedGroupBy = - maxBy(column, skipNaN = skipNaNDefault) +public inline fun ?> GroupBy.maxBy( + column: KProperty, +): ReducedGroupBy = maxBy(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public fun Pivot.max(separate: Boolean = false): DataRow = max(separate, skipNaN = skipNaNDefault) @@ -695,32 +697,32 @@ public fun ?> Pivot.maxFor( ): DataRow = maxFor(columns = columns, separate = separate, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.max(columns: ColumnsSelector): DataRow = +public fun ?> Pivot.max(columns: ColumnsSelector): DataRow = max(skipNaN = skipNaNDefault, columns = columns) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.max(vararg columns: ColumnReference): DataRow = +public fun ?> Pivot.max(vararg columns: ColumnReference): DataRow = max(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.max(vararg columns: KProperty): DataRow = +public fun ?> Pivot.max(vararg columns: KProperty): DataRow = max(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.maxOf( +public inline fun ?> Pivot.maxOf( crossinline rowExpression: RowExpression, ): DataRow = maxOf(skipNaN = skipNaNDefault, rowExpression = rowExpression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.maxBy( +public inline fun ?> Pivot.maxBy( crossinline rowExpression: RowExpression, ): ReducedPivot = maxBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.maxBy(column: ColumnReference): ReducedPivot = +public inline fun ?> Pivot.maxBy(column: ColumnReference): ReducedPivot = maxBy(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -728,7 +730,7 @@ public fun Pivot.maxBy(column: String): ReducedPivot = maxBy(column, s @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.maxBy(column: KProperty): ReducedPivot = +public inline fun ?> Pivot.maxBy(column: KProperty): ReducedPivot = maxBy(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -759,7 +761,7 @@ public fun ?> PivotGroupBy.maxFor( ): DataFrame = maxFor(columns = columns, separate = separate, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.max(columns: ColumnsSelector): DataFrame = +public fun ?> PivotGroupBy.max(columns: ColumnsSelector): DataFrame = max(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -767,27 +769,27 @@ public fun PivotGroupBy.max(vararg columns: String): DataFrame = max(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.max(vararg columns: ColumnReference): DataFrame = +public fun ?> PivotGroupBy.max(vararg columns: ColumnReference): DataFrame = max(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.max(vararg columns: KProperty): DataFrame = +public fun ?> PivotGroupBy.max(vararg columns: KProperty): DataFrame = max(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.maxOf( +public inline fun ?> PivotGroupBy.maxOf( crossinline rowExpression: RowExpression, ): DataFrame = maxOf(skipNaN = skipNaNDefault, rowExpression = rowExpression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = maxBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( column: ColumnReference, ): ReducedPivotGroupBy = maxBy(column, skipNaN = skipNaNDefault) @@ -796,7 +798,8 @@ public fun PivotGroupBy.maxBy(column: String): ReducedPivotGroupBy = m @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.maxBy(column: KProperty): ReducedPivotGroupBy = - maxBy(column, skipNaN = skipNaNDefault) +public inline fun ?> PivotGroupBy.maxBy( + column: KProperty, +): ReducedPivotGroupBy = maxBy(column, skipNaN = skipNaNDefault) // endregion diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/median.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/median.kt index e790dece4d..576a17ea18 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/median.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/median.kt @@ -15,8 +15,6 @@ import org.jetbrains.kotlinx.dataframe.annotations.Refine import org.jetbrains.kotlinx.dataframe.columns.ColumnReference import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators -import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast -import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast2 import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateByOrNull @@ -49,58 +47,61 @@ import kotlin.reflect.KProperty // region DataColumn -public fun ?> DataColumn.median(): T = medianOrNull().suggestIfNull("median") +public fun ?> DataColumn.median(): T & Any = medianOrNull().suggestIfNull("median") -public fun ?> DataColumn.medianOrNull(): T? = - Aggregators.median(skipNaNDefault).cast().aggregateSingleColumn(this) +public fun ?> DataColumn.medianOrNull(): T? = + Aggregators.medianComparables().aggregateSingleColumn(this) public fun DataColumn.median( skipNaN: Boolean = skipNaNDefault, ): Double - where T : Comparable<*>?, T : Number? = medianOrNull(skipNaN = skipNaN).suggestIfNull("median") + where T : Comparable?, T : Number? = medianOrNull(skipNaN = skipNaN).suggestIfNull("median") public fun DataColumn.medianOrNull( skipNaN: Boolean = skipNaNDefault, ): Double? - where T : Comparable<*>?, T : Number? = - Aggregators.median(skipNaN).cast2().aggregateSingleColumn(this) + where T : Comparable?, T : Number? = + Aggregators.medianNumbers(skipNaN).aggregateSingleColumn(this) @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.medianBy( +public inline fun ?> DataColumn.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T = medianByOrNull(skipNaN, selector).suggestIfNull("medianBy") +): T & Any = medianByOrNull(skipNaN, selector).suggestIfNull("medianBy") @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.medianByOrNull( +public inline fun ?> DataColumn.medianByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T? = Aggregators.median(skipNaN).cast().aggregateByOrNull(this, selector) +): T? = Aggregators.medianCommon(skipNaN).aggregateByOrNull(this, selector) // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.medianOf(crossinline expression: (T) -> R): R = - medianOfOrNull(expression).suggestIfNull("medianOf") +public inline fun ?> DataColumn.medianOf( + crossinline expression: (T) -> R, +): R & Any = medianOfOrNull(expression).suggestIfNull("medianOf") // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.medianOfOrNull(crossinline expression: (T) -> R): R? = - Aggregators.median(skipNaNDefault).cast().aggregateOf(this, expression) +public inline fun ?> DataColumn.medianOfOrNull( + crossinline expression: (T) -> R, +): R? = Aggregators.medianComparables().aggregateOf(this, expression) @OverloadResolutionByLambdaReturnType public inline fun DataColumn.medianOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: (T) -> R, ): Double - where R : Comparable<*>?, R : Number? = medianOfOrNull(skipNaN, expression).suggestIfNull("medianOf") + where R : Comparable?, R : Number? = + medianOfOrNull(skipNaN, expression).suggestIfNull("medianOf") @OverloadResolutionByLambdaReturnType public inline fun DataColumn.medianOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: (T) -> R, ): Double? - where R : Comparable<*>?, R : Number? = - Aggregators.median(skipNaN).cast2().aggregateOf(this, expression) + where R : Comparable?, R : Number? = + Aggregators.medianNumbers(skipNaN).aggregateOf(this, expression) // endregion @@ -163,21 +164,21 @@ public fun ?> DataFrame.medianFor( // TODO, requires explicit type C due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public fun ?> DataFrame.median(columns: ColumnsSelector): C = +public fun ?> DataFrame.median(columns: ColumnsSelector): C & Any = medianOrNull(columns).suggestIfNull("median") // TODO, requires explicit type C due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType @Suppress("UNCHECKED_CAST") -public fun ?> DataFrame.medianOrNull(columns: ColumnsSelector): C? = - Aggregators.median(skipNaNDefault).cast().aggregateAll(this, columns) +public fun ?> DataFrame.medianOrNull(columns: ColumnsSelector): C? = + Aggregators.medianComparables().aggregateAll(this, columns) @OverloadResolutionByLambdaReturnType public fun DataFrame.median( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): Double - where C : Number?, C : Comparable<*>? = medianOrNull(skipNaN, columns).suggestIfNull("median") + where C : Number?, C : Comparable? = medianOrNull(skipNaN, columns).suggestIfNull("median") @OverloadResolutionByLambdaReturnType @Suppress("UNCHECKED_CAST") @@ -185,8 +186,8 @@ public fun DataFrame.medianOrNull( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): Double? - where C : Comparable<*>?, C : Number? = - Aggregators.median(skipNaN).cast2().aggregateAll(this, columns) + where C : Comparable?, C : Number? = + Aggregators.medianNumbers(skipNaN).aggregateAll(this, columns) public fun DataFrame.median(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Any = medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") @@ -196,12 +197,12 @@ public fun DataFrame.medianOrNull(vararg columns: String, skipNaN: Boolea @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.median(vararg columns: ColumnReference): C = +public fun ?> DataFrame.median(vararg columns: ColumnReference): C & Any = medianOrNull(*columns).suggestIfNull("median") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.medianOrNull(vararg columns: ColumnReference): C? = +public fun ?> DataFrame.medianOrNull(vararg columns: ColumnReference): C? = medianOrNull { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @@ -210,7 +211,8 @@ public fun DataFrame.median( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): Double - where C : Comparable<*>?, C : Number? = medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") + where C : Comparable?, C : Number? = + medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload @@ -218,16 +220,16 @@ public fun DataFrame.medianOrNull( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): Double? - where C : Comparable<*>?, C : Number? = medianOrNull(skipNaN) { columns.toColumnSet() } + where C : Comparable?, C : Number? = medianOrNull(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.median(vararg columns: KProperty): C = +public fun ?> DataFrame.median(vararg columns: KProperty): C & Any = medianOrNull(*columns).suggestIfNull("median") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.medianOrNull(vararg columns: KProperty): C? = +public fun ?> DataFrame.medianOrNull(vararg columns: KProperty): C? = medianOrNull { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @@ -236,7 +238,8 @@ public fun DataFrame.median( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): Double - where C : Comparable<*>?, C : Number? = medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") + where C : Comparable?, C : Number? = + medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload @@ -244,36 +247,37 @@ public fun DataFrame.medianOrNull( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): Double? - where C : Comparable<*>?, C : Number? = medianOrNull(skipNaN) { columns.toColumnSet() } + where C : Comparable?, C : Number? = medianOrNull(skipNaN) { columns.toColumnSet() } // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataFrame.medianOf( +public inline fun ?> DataFrame.medianOf( crossinline expression: RowExpression, -): R = medianOfOrNull(expression).suggestIfNull("medianOf") +): R & Any = medianOfOrNull(expression).suggestIfNull("medianOf") // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataFrame.medianOfOrNull( +public inline fun ?> DataFrame.medianOfOrNull( crossinline expression: RowExpression, -): R? = Aggregators.median(skipNaNDefault).cast().aggregateOf(this, expression) +): R? = Aggregators.medianComparables().aggregateOf(this, expression) @OverloadResolutionByLambdaReturnType public inline fun DataFrame.medianOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): Double - where R : Comparable<*>?, R : Number? = medianOfOrNull(skipNaN, expression).suggestIfNull("medianOf") + where R : Comparable?, R : Number? = + medianOfOrNull(skipNaN, expression).suggestIfNull("medianOf") @OverloadResolutionByLambdaReturnType public inline fun DataFrame.medianOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): Double? - where R : Comparable<*>?, R : Number? = - Aggregators.median(skipNaN).cast2().aggregateOf(this, expression) + where R : Comparable?, R : Number? = + Aggregators.medianNumbers(skipNaN).aggregateOf(this, expression) -public inline fun ?> DataFrame.medianBy( +public inline fun ?> DataFrame.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = medianByOrNull(skipNaN, expression).suggestIfNull("medianBy") @@ -283,36 +287,36 @@ public fun DataFrame.medianBy(column: String, skipNaN: Boolean = skipNaND @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.medianBy( +public inline fun ?> DataFrame.medianBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = medianByOrNull(column, skipNaN).suggestIfNull("medianBy") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.medianBy( +public inline fun ?> DataFrame.medianBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = medianByOrNull(column, skipNaN).suggestIfNull("medianBy") -public inline fun ?> DataFrame.medianByOrNull( +public inline fun ?> DataFrame.medianByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataRow? = Aggregators.median(skipNaN).cast().aggregateByOrNull(this, expression) +): DataRow? = Aggregators.medianCommon(skipNaN).aggregateByOrNull(this, expression) public fun DataFrame.medianByOrNull(column: String, skipNaN: Boolean = skipNaNDefault): DataRow? = medianByOrNull(column.toColumnOf?>(), skipNaN) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.medianByOrNull( +public inline fun ?> DataFrame.medianByOrNull( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): DataRow? = Aggregators.median(skipNaN).cast().aggregateByOrNull(this, column) +): DataRow? = Aggregators.medianCommon(skipNaN).aggregateByOrNull(this, column) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.medianByOrNull( +public inline fun ?> DataFrame.medianByOrNull( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow? = medianByOrNull(column.toColumnAccessor(), skipNaN) @@ -354,7 +358,7 @@ public fun ?> Grouped.median( name: String? = null, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.median(skipNaN).cast().aggregateAll(this, name, columns) +): DataFrame = Aggregators.medianCommon(skipNaN).aggregateAll(this, name, columns) public fun Grouped.median( vararg columns: String, @@ -364,7 +368,7 @@ public fun Grouped.median( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.median( +public fun ?> Grouped.median( vararg columns: ColumnReference, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -372,7 +376,7 @@ public fun ?> Grouped.median( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.median( +public fun ?> Grouped.median( vararg columns: KProperty, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -380,21 +384,21 @@ public fun ?> Grouped.median( @Refine @Interpretable("GroupByMedianOf") -public inline fun ?> Grouped.medianOf( +public inline fun ?> Grouped.medianOf( name: String? = null, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.median(skipNaN).cast().aggregateOf(this, name, expression) +): DataFrame = Aggregators.medianCommon(skipNaN).aggregateOf(this, name, expression) @Interpretable("GroupByReduceExpression") // TODO? -public inline fun ?> GroupBy.medianBy( +public inline fun ?> GroupBy.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedGroupBy = reduce { medianByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.medianBy( +public inline fun ?> GroupBy.medianBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = reduce { medianByOrNull(column, skipNaN) } @@ -404,7 +408,7 @@ public fun GroupBy.medianBy(column: String, skipNaN: Boolean = skip @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.medianBy( +public inline fun ?> GroupBy.medianBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = medianBy(column.toColumnAccessor(), skipNaN) @@ -444,7 +448,7 @@ public fun ?> Pivot.medianFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = medianFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> Pivot.median( +public fun ?> Pivot.median( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): DataRow = delegate { median(skipNaN, columns) } @@ -454,31 +458,31 @@ public fun Pivot.median(vararg columns: String, skipNaN: Boolean = skipNa @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.median( +public fun ?> Pivot.median( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = median(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.median( +public fun ?> Pivot.median( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = median(skipNaN) { columns.toColumnSet() } -public inline fun ?> Pivot.medianOf( +public inline fun ?> Pivot.medianOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = delegate { medianOf(skipNaN, expression) } -public inline fun ?> Pivot.medianBy( +public inline fun ?> Pivot.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivot = reduce { medianByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.medianBy( +public inline fun ?> Pivot.medianBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = reduce { medianByOrNull(column, skipNaN) } @@ -488,7 +492,7 @@ public fun Pivot.medianBy(column: String, skipNaN: Boolean = skipNaNDefau @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.medianBy( +public inline fun ?> Pivot.medianBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = medianBy(column.toColumnAccessor(), skipNaN) @@ -527,41 +531,41 @@ public fun ?> PivotGroupBy.medianFor( skipNaN: Boolean = skipNaNDefault, ): DataFrame = medianFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> PivotGroupBy.median( +public fun ?> PivotGroupBy.median( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.median(skipNaN).cast().aggregateAll(this, columns) +): DataFrame = Aggregators.medianCommon(skipNaN).aggregateAll(this, columns) public fun PivotGroupBy.median(vararg columns: String, skipNaN: Boolean = skipNaNDefault): DataFrame = median(skipNaN) { columns.toComparableColumns() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.median( +public fun ?> PivotGroupBy.median( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataFrame = median(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.median( +public fun ?> PivotGroupBy.median( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataFrame = median(skipNaN) { columns.toColumnSet() } -public inline fun ?> PivotGroupBy.medianOf( +public inline fun ?> PivotGroupBy.medianOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.median(skipNaN).cast().aggregateOf(this, expression) +): DataFrame = Aggregators.medianCommon(skipNaN).aggregateOf(this, expression) -public inline fun ?> PivotGroupBy.medianBy( +public inline fun ?> PivotGroupBy.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = reduce { medianByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.medianBy( +public inline fun ?> PivotGroupBy.medianBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = reduce { medianByOrNull(column, skipNaN) } @@ -571,7 +575,7 @@ public fun PivotGroupBy.medianBy(column: String, skipNaN: Boolean = skipN @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.medianBy( +public inline fun ?> PivotGroupBy.medianBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = medianBy(column.toColumnAccessor(), skipNaN) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/min.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/min.kt index 6621497f27..6246e7205c 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/min.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/min.kt @@ -13,7 +13,6 @@ import org.jetbrains.kotlinx.dataframe.annotations.Refine import org.jetbrains.kotlinx.dataframe.columns.ColumnReference import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators -import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateByOrNull @@ -36,25 +35,25 @@ public fun > DataColumn.min(skipNaN: Boolean = skipNaNDefa public fun > DataColumn.minOrNull(skipNaN: Boolean = skipNaNDefault): T? = Aggregators.min(skipNaN).aggregateSingleColumn(this) -public inline fun ?> DataColumn.minBy( +public inline fun ?> DataColumn.minBy( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T = minByOrNull(skipNaN, selector).suggestIfNull("minBy") +): T & Any = minByOrNull(skipNaN, selector).suggestIfNull("minBy") -public inline fun ?> DataColumn.minByOrNull( +public inline fun ?> DataColumn.minByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T? = Aggregators.min.invoke(skipNaN).cast().aggregateByOrNull(this, selector) +): T? = Aggregators.min(skipNaN).aggregateByOrNull(this, selector) -public inline fun ?> DataColumn.minOf( +public inline fun ?> DataColumn.minOf( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): R = minOfOrNull(skipNaN, selector).suggestIfNull("minOf") +): R & Any = minOfOrNull(skipNaN, selector).suggestIfNull("minOf") -public inline fun ?> DataColumn.minOfOrNull( +public inline fun ?> DataColumn.minOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): R? = Aggregators.min.invoke(skipNaN).cast().aggregateOf(this, selector) +): R? = Aggregators.min(skipNaN).aggregateOf(this, selector) // endregion @@ -104,61 +103,61 @@ public fun ?> DataFrame.minFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = minFor(skipNaN) { columns.toColumnSet() } -public fun ?> DataFrame.min( +public fun ?> DataFrame.min( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): C = minOrNull(skipNaN, columns).suggestIfNull("min") +): C & Any = minOrNull(skipNaN, columns).suggestIfNull("min") public fun DataFrame.min(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Comparable = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.min( +public fun ?> DataFrame.min( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): C = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") +): C & Any = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.min( +public fun ?> DataFrame.min( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, -): C = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") +): C & Any = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") -public fun ?> DataFrame.minOrNull( +public fun ?> DataFrame.minOrNull( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): C? = Aggregators.min.invoke(skipNaN).cast().aggregateAll(this, columns) +): C? = Aggregators.min(skipNaN).aggregateAll(this, columns) public fun DataFrame.minOrNull(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Comparable? = minOrNull(skipNaN) { columns.toComparableColumns() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.minOrNull( +public fun ?> DataFrame.minOrNull( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): C? = minOrNull(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.minOrNull( +public fun ?> DataFrame.minOrNull( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): C? = minOrNull(skipNaN) { columns.toColumnSet() } -public inline fun ?> DataFrame.minOf( +public inline fun ?> DataFrame.minOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): C = minOfOrNull(skipNaN, expression).suggestIfNull("minOf") +): C & Any = minOfOrNull(skipNaN, expression).suggestIfNull("minOf") -public inline fun ?> DataFrame.minOfOrNull( +public inline fun ?> DataFrame.minOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): C? = Aggregators.min.invoke(skipNaN).cast().aggregateOf(this, expression) +): C? = Aggregators.min(skipNaN).aggregateOf(this, expression) -public inline fun ?> DataFrame.minBy( +public inline fun ?> DataFrame.minBy( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = minByOrNull(skipNaN, expression).suggestIfNull("minBy") @@ -168,36 +167,36 @@ public fun DataFrame.minBy(column: String, skipNaN: Boolean = skipNaNDefa @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.minBy( +public inline fun ?> DataFrame.minBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = minByOrNull(column, skipNaN).suggestIfNull("minBy") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.minBy( +public inline fun ?> DataFrame.minBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = minByOrNull(column, skipNaN).suggestIfNull("minBy") -public inline fun ?> DataFrame.minByOrNull( +public inline fun ?> DataFrame.minByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataRow? = Aggregators.min.invoke(skipNaN).cast().aggregateByOrNull(this, expression) +): DataRow? = Aggregators.min(skipNaN).aggregateByOrNull(this, expression) public fun DataFrame.minByOrNull(column: String, skipNaN: Boolean = skipNaNDefault): DataRow? = minByOrNull(column.toColumnOf?>(), skipNaN) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.minByOrNull( +public inline fun ?> DataFrame.minByOrNull( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): DataRow? = Aggregators.min.invoke(skipNaN).cast().aggregateByOrNull(this, column) +): DataRow? = Aggregators.min(skipNaN).aggregateByOrNull(this, column) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.minByOrNull( +public inline fun ?> DataFrame.minByOrNull( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow? = minByOrNull(column.toColumnAccessor(), skipNaN) @@ -241,7 +240,7 @@ public fun ?> Grouped.min( name: String? = null, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.min.invoke(skipNaN).cast().aggregateAll(this, name, columns) +): DataFrame = Aggregators.min(skipNaN).aggregateAll(this, name, columns) public fun Grouped.min( vararg columns: String, @@ -251,7 +250,7 @@ public fun Grouped.min( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.min( +public fun ?> Grouped.min( vararg columns: ColumnReference, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -259,7 +258,7 @@ public fun ?> Grouped.min( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.min( +public fun ?> Grouped.min( vararg columns: KProperty, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -267,21 +266,21 @@ public fun ?> Grouped.min( @Refine @Interpretable("GroupByMinOf") -public inline fun ?> Grouped.minOf( +public inline fun ?> Grouped.minOf( name: String? = null, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.min.invoke(skipNaN).cast().aggregateOf(this, name, expression) +): DataFrame = Aggregators.min(skipNaN).aggregateOf(this, name, expression) @Interpretable("GroupByReduceExpression") -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedGroupBy = reduce { minByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = reduce { minByOrNull(column, skipNaN) } @@ -291,7 +290,7 @@ public fun GroupBy.minBy(column: String, skipNaN: Boolean = skipNaN @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = minBy(column.toColumnAccessor(), skipNaN) @@ -331,7 +330,7 @@ public fun ?> Pivot.minFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = minFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> Pivot.min( +public fun ?> Pivot.min( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): DataRow = delegate { min(skipNaN, columns) } @@ -341,31 +340,31 @@ public fun Pivot.min(vararg columns: String, skipNaN: Boolean = skipNaNDe @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.min( +public fun ?> Pivot.min( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = min(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.min( +public fun ?> Pivot.min( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = min(skipNaN) { columns.toColumnSet() } -public inline fun ?> Pivot.minOf( +public inline fun ?> Pivot.minOf( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): DataRow = delegate { minOf(skipNaN, rowExpression) } -public inline fun ?> Pivot.minBy( +public inline fun ?> Pivot.minBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivot = reduce { minByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.minBy( +public inline fun ?> Pivot.minBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = reduce { minByOrNull(column, skipNaN) } @@ -375,7 +374,7 @@ public fun Pivot.minBy(column: String, skipNaN: Boolean = skipNaNDefault) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.minBy( +public inline fun ?> Pivot.minBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = minBy(column.toColumnAccessor(), skipNaN) @@ -415,39 +414,39 @@ public fun ?> PivotGroupBy.minFor( skipNaN: Boolean = skipNaNDefault, ): DataFrame = minFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> PivotGroupBy.min( +public fun ?> PivotGroupBy.min( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.min.invoke(skipNaN).cast().aggregateAll(this, columns) +): DataFrame = Aggregators.min(skipNaN).aggregateAll(this, columns) public fun PivotGroupBy.min(vararg columns: String, skipNaN: Boolean = skipNaNDefault): DataFrame = min(skipNaN) { columns.toComparableColumns() } -public fun ?> PivotGroupBy.min( +public fun ?> PivotGroupBy.min( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataFrame = min(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.min( +public fun ?> PivotGroupBy.min( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataFrame = min(skipNaN) { columns.toColumnSet() } -public inline fun ?> PivotGroupBy.minOf( +public inline fun ?> PivotGroupBy.minOf( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): DataFrame = aggregate { minOf(skipNaN, rowExpression) } -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = reduce { minByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = reduce { minByOrNull(column, skipNaN) } @@ -457,7 +456,7 @@ public fun PivotGroupBy.minBy(column: String, skipNaN: Boolean = skipNaND @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = minBy(column.toColumnAccessor(), skipNaN) @@ -474,26 +473,26 @@ public fun > DataColumn.min(): T = min(skipNaN = skipNaNDe public fun > DataColumn.minOrNull(): T? = minOrNull(skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.minBy(noinline selector: (T) -> R): T = +public inline fun ?> DataColumn.minBy(noinline selector: (T) -> R): T & Any = minBy(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.minByOrNull(noinline selector: (T) -> R): T? = +public inline fun ?> DataColumn.minByOrNull(noinline selector: (T) -> R): T? = minByOrNull(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.minOf(crossinline selector: (T) -> R): R = +public inline fun ?> DataColumn.minOf(crossinline selector: (T) -> R): R & Any = minOf(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.minOfOrNull(crossinline selector: (T) -> R): R? = +public inline fun ?> DataColumn.minOfOrNull(crossinline selector: (T) -> R): R? = minOfOrNull(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public inline fun > AnyRow.rowMinOfOrNull(): T? = rowMinOfOrNull(skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun > AnyRow.rowMinOf(): T = rowMinOf(skipNaN = skipNaNDefault) +public inline fun ?> AnyRow.rowMinOf(): T & Any = rowMinOf(skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public fun DataFrame.min(): DataRow = min(skipNaN = skipNaNDefault) @@ -517,7 +516,7 @@ public fun ?> DataFrame.minFor(vararg columns: KProperty minFor(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.min(columns: ColumnsSelector): C = +public fun ?> DataFrame.min(columns: ColumnsSelector): C & Any = min(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -526,16 +525,16 @@ public fun DataFrame.min(vararg columns: String): Comparable = @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.min(vararg columns: ColumnReference): C = +public fun ?> DataFrame.min(vararg columns: ColumnReference): C & Any = min(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.min(vararg columns: KProperty): C = +public fun ?> DataFrame.min(vararg columns: KProperty): C & Any = min(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.minOrNull(columns: ColumnsSelector): C? = +public fun ?> DataFrame.minOrNull(columns: ColumnsSelector): C? = minOrNull(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -544,25 +543,26 @@ public fun DataFrame.minOrNull(vararg columns: String): Comparable? @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.minOrNull(vararg columns: ColumnReference): C? = +public fun ?> DataFrame.minOrNull(vararg columns: ColumnReference): C? = minOrNull(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.minOrNull(vararg columns: KProperty): C? = +public fun ?> DataFrame.minOrNull(vararg columns: KProperty): C? = minOrNull(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minOf(crossinline expression: RowExpression): C = - minOf(skipNaN = skipNaNDefault, expression = expression) +public inline fun ?> DataFrame.minOf( + crossinline expression: RowExpression, +): C & Any = minOf(skipNaN = skipNaNDefault, expression = expression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minOfOrNull( +public inline fun ?> DataFrame.minOfOrNull( crossinline expression: RowExpression, ): C? = minOfOrNull(skipNaN = skipNaNDefault, expression = expression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minBy( +public inline fun ?> DataFrame.minBy( crossinline expression: RowExpression, ): DataRow = minBy(skipNaN = skipNaNDefault, expression = expression) @@ -571,16 +571,16 @@ public fun DataFrame.minBy(column: String): DataRow = minBy(column, sk @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minBy(column: ColumnReference): DataRow = +public inline fun ?> DataFrame.minBy(column: ColumnReference): DataRow = minBy(column, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minBy(column: KProperty): DataRow = +public inline fun ?> DataFrame.minBy(column: KProperty): DataRow = minBy(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minByOrNull( +public inline fun ?> DataFrame.minByOrNull( crossinline expression: RowExpression, ): DataRow? = minByOrNull(skipNaN = skipNaNDefault, expression = expression) @@ -589,12 +589,13 @@ public fun DataFrame.minByOrNull(column: String): DataRow? = minByOrNu @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minByOrNull(column: ColumnReference): DataRow? = - minByOrNull(column, skipNaN = skipNaNDefault) +public inline fun ?> DataFrame.minByOrNull( + column: ColumnReference, +): DataRow? = minByOrNull(column, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minByOrNull(column: KProperty): DataRow? = +public inline fun ?> DataFrame.minByOrNull(column: KProperty): DataRow? = minByOrNull(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -619,7 +620,7 @@ public fun ?> Grouped.minFor(vararg columns: KProperty?> Grouped.min( +public fun ?> Grouped.min( name: String? = null, columns: ColumnsSelector, ): DataFrame = min(name, skipNaN = skipNaNDefault, columns = columns) @@ -630,30 +631,32 @@ public fun Grouped.min(vararg columns: String, name: String? = null): Dat @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Grouped.min( +public fun ?> Grouped.min( vararg columns: ColumnReference, name: String? = null, ): DataFrame = min(columns = columns, name = name, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Grouped.min(vararg columns: KProperty, name: String? = null): DataFrame = - min(columns = columns, name = name, skipNaN = skipNaNDefault) +public fun ?> Grouped.min( + vararg columns: KProperty, + name: String? = null, +): DataFrame = min(columns = columns, name = name, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Grouped.minOf( +public inline fun ?> Grouped.minOf( name: String? = null, crossinline expression: RowExpression, ): DataFrame = minOf(name, skipNaN = skipNaNDefault, expression = expression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( crossinline rowExpression: RowExpression, ): ReducedGroupBy = minBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( column: ColumnReference, ): ReducedGroupBy = minBy(column, skipNaN = skipNaNDefault) @@ -662,8 +665,9 @@ public fun GroupBy.minBy(column: String): ReducedGroupBy = mi @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.minBy(column: KProperty): ReducedGroupBy = - minBy(column, skipNaN = skipNaNDefault) +public inline fun ?> GroupBy.minBy( + column: KProperty, +): ReducedGroupBy = minBy(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public fun Pivot.min(separate: Boolean = false): DataRow = min(separate, skipNaN = skipNaNDefault) @@ -693,32 +697,32 @@ public fun ?> Pivot.minFor( ): DataRow = minFor(columns = columns, separate = separate, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.min(columns: ColumnsSelector): DataRow = +public fun ?> Pivot.min(columns: ColumnsSelector): DataRow = min(skipNaN = skipNaNDefault, columns = columns) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.min(vararg columns: ColumnReference): DataRow = +public fun ?> Pivot.min(vararg columns: ColumnReference): DataRow = min(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.min(vararg columns: KProperty): DataRow = +public fun ?> Pivot.min(vararg columns: KProperty): DataRow = min(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.minOf( +public inline fun ?> Pivot.minOf( crossinline rowExpression: RowExpression, ): DataRow = minOf(skipNaN = skipNaNDefault, rowExpression = rowExpression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.minBy( +public inline fun ?> Pivot.minBy( crossinline rowExpression: RowExpression, ): ReducedPivot = minBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.minBy(column: ColumnReference): ReducedPivot = +public inline fun ?> Pivot.minBy(column: ColumnReference): ReducedPivot = minBy(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -726,7 +730,7 @@ public fun Pivot.minBy(column: String): ReducedPivot = minBy(column, s @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.minBy(column: KProperty): ReducedPivot = +public inline fun ?> Pivot.minBy(column: KProperty): ReducedPivot = minBy(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -757,7 +761,7 @@ public fun ?> PivotGroupBy.minFor( ): DataFrame = minFor(columns = columns, separate = separate, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.min(columns: ColumnsSelector): DataFrame = +public fun ?> PivotGroupBy.min(columns: ColumnsSelector): DataFrame = min(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -765,27 +769,27 @@ public fun PivotGroupBy.min(vararg columns: String): DataFrame = min(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.min(vararg columns: ColumnReference): DataFrame = +public fun ?> PivotGroupBy.min(vararg columns: ColumnReference): DataFrame = min(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.min(vararg columns: KProperty): DataFrame = +public fun ?> PivotGroupBy.min(vararg columns: KProperty): DataFrame = min(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.minOf( +public inline fun ?> PivotGroupBy.minOf( crossinline rowExpression: RowExpression, ): DataFrame = minOf(skipNaN = skipNaNDefault, rowExpression = rowExpression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = minBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( column: ColumnReference, ): ReducedPivotGroupBy = minBy(column, skipNaN = skipNaNDefault) @@ -794,7 +798,8 @@ public fun PivotGroupBy.minBy(column: String): ReducedPivotGroupBy = m @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.minBy(column: KProperty): ReducedPivotGroupBy = - minBy(column, skipNaN = skipNaNDefault) +public inline fun ?> PivotGroupBy.minBy( + column: KProperty, +): ReducedPivotGroupBy = minBy(column, skipNaN = skipNaNDefault) // endregion diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/percentile.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/percentile.kt index 76e22c6847..be666a8448 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/percentile.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/percentile.kt @@ -15,8 +15,6 @@ import org.jetbrains.kotlinx.dataframe.annotations.Refine import org.jetbrains.kotlinx.dataframe.columns.ColumnReference import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators -import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast -import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast2 import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateByOrNull @@ -50,53 +48,53 @@ import kotlin.reflect.KProperty // region DataColumn -public fun ?> DataColumn.percentile(percentile: Double): T = +public fun ?> DataColumn.percentile(percentile: Double): T & Any = percentileOrNull(percentile).suggestIfNull("percentile") -public fun ?> DataColumn.percentileOrNull(percentile: Double): T? = - Aggregators.percentile(percentile, skipNaNDefault).cast().aggregateSingleColumn(this) +public fun ?> DataColumn.percentileOrNull(percentile: Double): T? = + Aggregators.percentileComparables(percentile).aggregateSingleColumn(this) public fun DataColumn.percentile( percentile: Double, skipNaN: Boolean = skipNaNDefault, ): Double - where T : Comparable<*>?, T : Number? = + where T : Comparable?, T : Number? = percentileOrNull(percentile = percentile, skipNaN = skipNaN).suggestIfNull("percentile") public fun DataColumn.percentileOrNull( percentile: Double, skipNaN: Boolean = skipNaNDefault, ): Double? - where T : Comparable<*>?, T : Number? = - Aggregators.percentile(percentile, skipNaN).cast2().aggregateSingleColumn(this) + where T : Comparable?, T : Number? = + Aggregators.percentileNumbers(percentile, skipNaN).aggregateSingleColumn(this) @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.percentileBy( +public inline fun ?> DataColumn.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T = percentileByOrNull(percentile, skipNaN, selector).suggestIfNull("percentileBy") +): T & Any = percentileByOrNull(percentile, skipNaN, selector).suggestIfNull("percentileBy") @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.percentileByOrNull( +public inline fun ?> DataColumn.percentileByOrNull( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T? = Aggregators.percentile(percentile, skipNaN).cast().aggregateByOrNull(this, selector) +): T? = Aggregators.percentileCommon(percentile, skipNaN).aggregateByOrNull(this, selector) // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.percentileOf( +public inline fun ?> DataColumn.percentileOf( percentile: Double, crossinline expression: (T) -> R, -): R = percentileOfOrNull(percentile, expression).suggestIfNull("percentileOf") +): R & Any = percentileOfOrNull(percentile, expression).suggestIfNull("percentileOf") // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.percentileOfOrNull( +public inline fun ?> DataColumn.percentileOfOrNull( percentile: Double, crossinline expression: (T) -> R, -): R? = Aggregators.percentile(percentile, skipNaNDefault).cast().aggregateOf(this, expression) +): R? = Aggregators.percentileComparables(percentile).aggregateOf(this, expression) @OverloadResolutionByLambdaReturnType public inline fun DataColumn.percentileOf( @@ -104,7 +102,7 @@ public inline fun DataColumn.percentileOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: (T) -> R, ): Double - where R : Comparable<*>?, R : Number? = + where R : Comparable?, R : Number? = percentileOfOrNull(percentile, skipNaN, expression).suggestIfNull("percentileOf") @OverloadResolutionByLambdaReturnType @@ -113,8 +111,8 @@ public inline fun DataColumn.percentileOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: (T) -> R, ): Double? - where R : Comparable<*>?, R : Number? = - Aggregators.percentile(percentile, skipNaN).cast2().aggregateOf(this, expression) + where R : Comparable?, R : Number? = + Aggregators.percentileNumbers(percentile, skipNaN).aggregateOf(this, expression) // endregion @@ -186,16 +184,18 @@ public fun ?> DataFrame.percentileFor( // TODO, requires explicit type C due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public fun ?> DataFrame.percentile(percentile: Double, columns: ColumnsSelector): C = - percentileOrNull(percentile, columns).suggestIfNull("percentile") +public fun ?> DataFrame.percentile( + percentile: Double, + columns: ColumnsSelector, +): C & Any = percentileOrNull(percentile, columns).suggestIfNull("percentile") // TODO, requires explicit type C due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType @Suppress("UNCHECKED_CAST") -public fun ?> DataFrame.percentileOrNull( +public fun ?> DataFrame.percentileOrNull( percentile: Double, columns: ColumnsSelector, -): C? = Aggregators.percentile(percentile, skipNaNDefault).cast().aggregateAll(this, columns) +): C? = Aggregators.percentileComparables(percentile).aggregateAll(this, columns) @OverloadResolutionByLambdaReturnType public fun DataFrame.percentile( @@ -203,7 +203,7 @@ public fun DataFrame.percentile( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): Double - where C : Number?, C : Comparable<*>? = + where C : Number?, C : Comparable? = percentileOrNull(percentile, skipNaN, columns).suggestIfNull("percentile") @OverloadResolutionByLambdaReturnType @@ -213,8 +213,8 @@ public fun DataFrame.percentileOrNull( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): Double? - where C : Comparable<*>?, C : Number? = - Aggregators.percentile(percentile, skipNaN).cast2().aggregateAll(this, columns) + where C : Comparable?, C : Number? = + Aggregators.percentileNumbers(percentile, skipNaN).aggregateAll(this, columns) public fun DataFrame.percentile( percentile: Double, @@ -231,12 +231,14 @@ public fun DataFrame.percentileOrNull( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.percentile(percentile: Double, vararg columns: ColumnReference): C = - percentileOrNull(percentile, *columns).suggestIfNull("percentile") +public fun ?> DataFrame.percentile( + percentile: Double, + vararg columns: ColumnReference, +): C & Any = percentileOrNull(percentile, *columns).suggestIfNull("percentile") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.percentileOrNull( +public fun ?> DataFrame.percentileOrNull( percentile: Double, vararg columns: ColumnReference, ): C? = percentileOrNull(percentile) { columns.toColumnSet() } @@ -248,7 +250,7 @@ public fun DataFrame.percentile( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): Double - where C : Comparable<*>?, C : Number? = + where C : Comparable?, C : Number? = percentileOrNull(percentile, *columns, skipNaN = skipNaN).suggestIfNull("percentile") @Deprecated(DEPRECATED_ACCESS_API) @@ -258,16 +260,19 @@ public fun DataFrame.percentileOrNull( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): Double? - where C : Comparable<*>?, C : Number? = percentileOrNull(percentile, skipNaN) { columns.toColumnSet() } + where C : Comparable?, C : Number? = + percentileOrNull(percentile, skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.percentile(percentile: Double, vararg columns: KProperty): C = - percentileOrNull(percentile, *columns).suggestIfNull("percentile") +public fun ?> DataFrame.percentile( + percentile: Double, + vararg columns: KProperty, +): C & Any = percentileOrNull(percentile, *columns).suggestIfNull("percentile") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.percentileOrNull( +public fun ?> DataFrame.percentileOrNull( percentile: Double, vararg columns: KProperty, ): C? = percentileOrNull(percentile) { columns.toColumnSet() } @@ -279,7 +284,7 @@ public fun DataFrame.percentile( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): Double - where C : Comparable<*>?, C : Number? = + where C : Comparable?, C : Number? = percentileOrNull(percentile, *columns, skipNaN = skipNaN).suggestIfNull("percentile") @Deprecated(DEPRECATED_ACCESS_API) @@ -289,21 +294,22 @@ public fun DataFrame.percentileOrNull( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): Double? - where C : Comparable<*>?, C : Number? = percentileOrNull(percentile, skipNaN) { columns.toColumnSet() } + where C : Comparable?, C : Number? = + percentileOrNull(percentile, skipNaN) { columns.toColumnSet() } // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataFrame.percentileOf( +public inline fun ?> DataFrame.percentileOf( percentile: Double, crossinline expression: RowExpression, -): R = percentileOfOrNull(percentile, expression).suggestIfNull("percentileOf") +): R & Any = percentileOfOrNull(percentile, expression).suggestIfNull("percentileOf") // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataFrame.percentileOfOrNull( +public inline fun ?> DataFrame.percentileOfOrNull( percentile: Double, crossinline expression: RowExpression, -): R? = Aggregators.percentile(percentile, skipNaNDefault).cast().aggregateOf(this, expression) +): R? = Aggregators.percentileComparables(percentile).aggregateOf(this, expression) @OverloadResolutionByLambdaReturnType public inline fun DataFrame.percentileOf( @@ -311,7 +317,7 @@ public inline fun DataFrame.percentileOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): Double - where R : Comparable<*>?, R : Number? = + where R : Comparable?, R : Number? = percentileOfOrNull(percentile, skipNaN, expression).suggestIfNull("percentileOf") @OverloadResolutionByLambdaReturnType @@ -320,10 +326,10 @@ public inline fun DataFrame.percentileOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): Double? - where R : Comparable<*>?, R : Number? = - Aggregators.percentile(percentile, skipNaN).cast2().aggregateOf(this, expression) + where R : Comparable?, R : Number? = + Aggregators.percentileNumbers(percentile, skipNaN).aggregateOf(this, expression) -public inline fun ?> DataFrame.percentileBy( +public inline fun ?> DataFrame.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, @@ -337,7 +343,7 @@ public fun DataFrame.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.percentileBy( +public inline fun ?> DataFrame.percentileBy( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -345,17 +351,17 @@ public inline fun ?> DataFrame.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.percentileBy( +public inline fun ?> DataFrame.percentileBy( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = percentileByOrNull(percentile, column, skipNaN).suggestIfNull("percentileBy") -public inline fun ?> DataFrame.percentileByOrNull( +public inline fun ?> DataFrame.percentileByOrNull( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataRow? = Aggregators.percentile(percentile, skipNaN).cast().aggregateByOrNull(this, expression) +): DataRow? = Aggregators.percentileCommon(percentile, skipNaN).aggregateByOrNull(this, expression) public fun DataFrame.percentileByOrNull( percentile: Double, @@ -365,15 +371,15 @@ public fun DataFrame.percentileByOrNull( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.percentileByOrNull( +public inline fun ?> DataFrame.percentileByOrNull( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): DataRow? = Aggregators.percentile(percentile, skipNaN).cast().aggregateByOrNull(this, column) +): DataRow? = Aggregators.percentileCommon(percentile, skipNaN).aggregateByOrNull(this, column) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.percentileByOrNull( +public inline fun ?> DataFrame.percentileByOrNull( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, @@ -421,7 +427,7 @@ public fun ?> Grouped.percentile( name: String? = null, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.percentile(percentile, skipNaN).cast().aggregateAll(this, name, columns) +): DataFrame = Aggregators.percentileCommon(percentile, skipNaN).aggregateAll(this, name, columns) public fun Grouped.percentile( percentile: Double, @@ -432,7 +438,7 @@ public fun Grouped.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.percentile( +public fun ?> Grouped.percentile( percentile: Double, vararg columns: ColumnReference, name: String? = null, @@ -441,7 +447,7 @@ public fun ?> Grouped.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.percentile( +public fun ?> Grouped.percentile( percentile: Double, vararg columns: KProperty, name: String? = null, @@ -450,15 +456,15 @@ public fun ?> Grouped.percentile( @Refine @Interpretable("GroupByPercentileOf") -public inline fun ?> Grouped.percentileOf( +public inline fun ?> Grouped.percentileOf( percentile: Double, name: String? = null, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.percentile(percentile, skipNaN).cast().aggregateOf(this, name, expression) +): DataFrame = Aggregators.percentileCommon(percentile, skipNaN).aggregateOf(this, name, expression) @Interpretable("GroupByReduceExpression") // TODO? -public inline fun ?> GroupBy.percentileBy( +public inline fun ?> GroupBy.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, @@ -466,7 +472,7 @@ public inline fun ?> GroupBy.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.percentileBy( +public inline fun ?> GroupBy.percentileBy( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -480,7 +486,7 @@ public fun GroupBy.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.percentileBy( +public inline fun ?> GroupBy.percentileBy( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, @@ -528,7 +534,7 @@ public fun ?> Pivot.percentileFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = percentileFor(percentile, separate, skipNaN) { columns.toColumnSet() } -public fun ?> Pivot.percentile( +public fun ?> Pivot.percentile( percentile: Double, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, @@ -542,7 +548,7 @@ public fun Pivot.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.percentile( +public fun ?> Pivot.percentile( percentile: Double, vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -550,19 +556,19 @@ public fun ?> Pivot.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.percentile( +public fun ?> Pivot.percentile( percentile: Double, vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = percentile(percentile, skipNaN) { columns.toColumnSet() } -public inline fun ?> Pivot.percentileOf( +public inline fun ?> Pivot.percentileOf( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = delegate { percentileOf(percentile, skipNaN, expression) } -public inline fun ?> Pivot.percentileBy( +public inline fun ?> Pivot.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, @@ -570,7 +576,7 @@ public inline fun ?> Pivot.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.percentileBy( +public inline fun ?> Pivot.percentileBy( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -584,7 +590,7 @@ public fun Pivot.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.percentileBy( +public inline fun ?> Pivot.percentileBy( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, @@ -631,11 +637,11 @@ public fun ?> PivotGroupBy.percentileFor( skipNaN: Boolean = skipNaNDefault, ): DataFrame = percentileFor(percentile, separate, skipNaN) { columns.toColumnSet() } -public fun ?> PivotGroupBy.percentile( +public fun ?> PivotGroupBy.percentile( percentile: Double, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.percentile(percentile, skipNaN).cast().aggregateAll(this, columns) +): DataFrame = Aggregators.percentileCommon(percentile, skipNaN).aggregateAll(this, columns) public fun PivotGroupBy.percentile( percentile: Double, @@ -645,7 +651,7 @@ public fun PivotGroupBy.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.percentile( +public fun ?> PivotGroupBy.percentile( percentile: Double, vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -653,19 +659,19 @@ public fun ?> PivotGroupBy.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.percentile( +public fun ?> PivotGroupBy.percentile( percentile: Double, vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataFrame = percentile(percentile, skipNaN) { columns.toColumnSet() } -public inline fun ?> PivotGroupBy.percentileOf( +public inline fun ?> PivotGroupBy.percentileOf( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.percentile(percentile, skipNaN).cast().aggregateOf(this, expression) +): DataFrame = Aggregators.percentileCommon(percentile, skipNaN).aggregateOf(this, expression) -public inline fun ?> PivotGroupBy.percentileBy( +public inline fun ?> PivotGroupBy.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, @@ -673,7 +679,7 @@ public inline fun ?> PivotGroupBy.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.percentileBy( +public inline fun ?> PivotGroupBy.percentileBy( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -687,7 +693,7 @@ public fun PivotGroupBy.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.percentileBy( +public inline fun ?> PivotGroupBy.percentileBy( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, From a1dca1624588253deb8af74dc98a98151c7ffe49 Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Tue, 25 Nov 2025 17:28:48 +0400 Subject: [PATCH 03/16] apply DefinitelyNotNullable patch for notebooks only: #1116 --- .../jetbrains/kotlinx/dataframe/api/max.kt | 213 +++++++++--------- .../jetbrains/kotlinx/dataframe/api/median.kt | 150 ++++++------ .../jetbrains/kotlinx/dataframe/api/min.kt | 205 ++++++++--------- .../kotlinx/dataframe/api/percentile.kt | 158 +++++++------ 4 files changed, 354 insertions(+), 372 deletions(-) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/max.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/max.kt index d1ff0cd1e2..75d0827220 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/max.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/max.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlinx.dataframe.annotations.Refine import org.jetbrains.kotlinx.dataframe.columns.ColumnReference import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators +import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateByOrNull @@ -35,25 +36,25 @@ public fun > DataColumn.max(skipNaN: Boolean = skipNaNDefa public fun > DataColumn.maxOrNull(skipNaN: Boolean = skipNaNDefault): T? = Aggregators.max(skipNaN).aggregateSingleColumn(this) -public inline fun ?> DataColumn.maxBy( +public inline fun ?> DataColumn.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T & Any = maxByOrNull(skipNaN, selector).suggestIfNull("maxBy") +): T = maxByOrNull(skipNaN, selector).suggestIfNull("maxBy") -public inline fun ?> DataColumn.maxByOrNull( +public inline fun ?> DataColumn.maxByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T? = Aggregators.max(skipNaN).aggregateByOrNull(this, selector) +): T? = Aggregators.max.invoke(skipNaN).cast().aggregateByOrNull(this, selector) -public inline fun ?> DataColumn.maxOf( +public inline fun ?> DataColumn.maxOf( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): R & Any = maxOfOrNull(skipNaN, selector).suggestIfNull("maxOf") +): R = maxOfOrNull(skipNaN, selector).suggestIfNull("maxOf") -public inline fun ?> DataColumn.maxOfOrNull( +public inline fun ?> DataColumn.maxOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): R? = Aggregators.max(skipNaN).aggregateOf(this, selector) +): R? = Aggregators.max.invoke(skipNaN).cast().aggregateOf(this, selector) // endregion @@ -103,61 +104,61 @@ public fun ?> DataFrame.maxFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = maxFor(skipNaN) { columns.toColumnSet() } -public fun ?> DataFrame.max( +public fun ?> DataFrame.max( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): C & Any = maxOrNull(skipNaN, columns).suggestIfNull("max") +): C = maxOrNull(skipNaN, columns).suggestIfNull("max") public fun DataFrame.max(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Comparable = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.max( +public fun ?> DataFrame.max( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): C & Any = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") +): C = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.max( +public fun ?> DataFrame.max( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, -): C & Any = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") +): C = maxOrNull(*columns, skipNaN = skipNaN).suggestIfNull("max") -public fun ?> DataFrame.maxOrNull( +public fun ?> DataFrame.maxOrNull( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): C? = Aggregators.max(skipNaN).aggregateAll(this, columns) +): C? = Aggregators.max.invoke(skipNaN).cast().aggregateAll(this, columns) public fun DataFrame.maxOrNull(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Comparable? = maxOrNull(skipNaN) { columns.toComparableColumns() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.maxOrNull( +public fun ?> DataFrame.maxOrNull( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): C? = maxOrNull(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.maxOrNull( +public fun ?> DataFrame.maxOrNull( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): C? = maxOrNull(skipNaN) { columns.toColumnSet() } -public inline fun ?> DataFrame.maxOf( +public inline fun ?> DataFrame.maxOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): C & Any = maxOfOrNull(skipNaN, expression).suggestIfNull("maxOf") +): C = maxOfOrNull(skipNaN, expression).suggestIfNull("maxOf") -public inline fun ?> DataFrame.maxOfOrNull( +public inline fun ?> DataFrame.maxOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): C? = Aggregators.max(skipNaN).aggregateOf(this, expression) +): C? = Aggregators.max.invoke(skipNaN).cast().aggregateOf(this, expression) -public inline fun ?> DataFrame.maxBy( +public inline fun ?> DataFrame.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = maxByOrNull(skipNaN, expression).suggestIfNull("maxBy") @@ -167,36 +168,36 @@ public fun DataFrame.maxBy(column: String, skipNaN: Boolean = skipNaNDefa @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.maxBy( +public inline fun ?> DataFrame.maxBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = maxByOrNull(column, skipNaN).suggestIfNull("maxBy") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.maxBy( +public inline fun ?> DataFrame.maxBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = maxByOrNull(column, skipNaN).suggestIfNull("maxBy") -public inline fun ?> DataFrame.maxByOrNull( +public inline fun ?> DataFrame.maxByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataRow? = Aggregators.max(skipNaN).aggregateByOrNull(this, expression) +): DataRow? = Aggregators.max.invoke(skipNaN).cast().aggregateByOrNull(this, expression) public fun DataFrame.maxByOrNull(column: String, skipNaN: Boolean = skipNaNDefault): DataRow? = maxByOrNull(column.toColumnOf?>(), skipNaN) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.maxByOrNull( +public inline fun ?> DataFrame.maxByOrNull( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): DataRow? = Aggregators.max(skipNaN).aggregateByOrNull(this, column) +): DataRow? = Aggregators.max.invoke(skipNaN).cast().aggregateByOrNull(this, column) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.maxByOrNull( +public inline fun ?> DataFrame.maxByOrNull( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow? = maxByOrNull(column.toColumnAccessor(), skipNaN) @@ -236,11 +237,11 @@ public fun ?> Grouped.maxFor( @Refine @Interpretable("GroupByMax2") -public fun ?> Grouped.max( +public fun ?> Grouped.max( name: String? = null, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.max(skipNaN).aggregateAll(this, name, columns) +): DataFrame = Aggregators.max.invoke(skipNaN).cast().aggregateAll(this, name, columns) public fun Grouped.max( vararg columns: String, @@ -250,7 +251,7 @@ public fun Grouped.max( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.max( +public fun ?> Grouped.max( vararg columns: ColumnReference, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -258,7 +259,7 @@ public fun ?> Grouped.max( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.max( +public fun ?> Grouped.max( vararg columns: KProperty, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -266,21 +267,21 @@ public fun ?> Grouped.max( @Refine @Interpretable("GroupByMaxOf") -public inline fun ?> Grouped.maxOf( +public inline fun ?> Grouped.maxOf( name: String? = null, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.max(skipNaN).aggregateOf(this, name, expression) +): DataFrame = Aggregators.max.invoke(skipNaN).cast().aggregateOf(this, name, expression) @Interpretable("GroupByReduceExpression") -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedGroupBy = reduce { maxByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = reduce { maxByOrNull(column, skipNaN) } @@ -290,7 +291,7 @@ public fun GroupBy.maxBy(column: String, skipNaN: Boolean = skipNaN @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = maxBy(column.toColumnAccessor(), skipNaN) @@ -330,41 +331,43 @@ public fun ?> Pivot.maxFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = maxFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> Pivot.max( +public fun ?> Pivot.max( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataRow = delegate { max(skipNaN, columns) } +): DataRow = delegate { maxFor(separate = false, skipNaN, columns) } -public fun Pivot.max(vararg columns: String, skipNaN: Boolean = skipNaNDefault): DataRow = - max(skipNaN) { columns.toComparableColumns() } +public fun ?> Pivot.max( + vararg columns: String, + skipNaN: Boolean = skipNaNDefault, +): DataRow = max(skipNaN) { columns.toComparableColumns() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.max( +public fun ?> Pivot.max( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = max(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.max( +public fun ?> Pivot.max( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = max(skipNaN) { columns.toColumnSet() } -public inline fun ?> Pivot.maxOf( +public inline fun ?> Pivot.maxOf( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): DataRow = delegate { maxOf(skipNaN, rowExpression) } -public inline fun ?> Pivot.maxBy( +public inline fun ?> Pivot.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivot = reduce { maxByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.maxBy( +public inline fun ?> Pivot.maxBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = reduce { maxByOrNull(column, skipNaN) } @@ -374,7 +377,7 @@ public fun Pivot.maxBy(column: String, skipNaN: Boolean = skipNaNDefault) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.maxBy( +public inline fun ?> Pivot.maxBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = maxBy(column.toColumnAccessor(), skipNaN) @@ -414,39 +417,39 @@ public fun ?> PivotGroupBy.maxFor( skipNaN: Boolean = skipNaNDefault, ): DataFrame = maxFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> PivotGroupBy.max( +public fun ?> PivotGroupBy.max( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.max(skipNaN).aggregateAll(this, columns) +): DataFrame = Aggregators.max.invoke(skipNaN).cast().aggregateAll(this, columns) public fun PivotGroupBy.max(vararg columns: String, skipNaN: Boolean = skipNaNDefault): DataFrame = max(skipNaN) { columns.toComparableColumns() } -public fun ?> PivotGroupBy.max( +public fun ?> PivotGroupBy.max( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataFrame = max(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.max( +public fun ?> PivotGroupBy.max( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataFrame = max(skipNaN) { columns.toColumnSet() } -public inline fun ?> PivotGroupBy.maxOf( +public inline fun ?> PivotGroupBy.maxOf( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): DataFrame = aggregate { maxOf(skipNaN, rowExpression) } -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = reduce { maxByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = reduce { maxByOrNull(column, skipNaN) } @@ -456,7 +459,7 @@ public fun PivotGroupBy.maxBy(column: String, skipNaN: Boolean = skipNaND @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = maxBy(column.toColumnAccessor(), skipNaN) @@ -473,26 +476,26 @@ public fun > DataColumn.max(): T = max(skipNaN = skipNaNDe public fun > DataColumn.maxOrNull(): T? = maxOrNull(skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.maxBy(noinline selector: (T) -> R): T & Any = +public inline fun ?> DataColumn.maxBy(noinline selector: (T) -> R): T = maxBy(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.maxByOrNull(noinline selector: (T) -> R): T? = +public inline fun ?> DataColumn.maxByOrNull(noinline selector: (T) -> R): T? = maxByOrNull(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.maxOf(crossinline selector: (T) -> R): R & Any = +public inline fun ?> DataColumn.maxOf(crossinline selector: (T) -> R): R = maxOf(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.maxOfOrNull(crossinline selector: (T) -> R): R? = +public inline fun ?> DataColumn.maxOfOrNull(crossinline selector: (T) -> R): R? = maxOfOrNull(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public inline fun > AnyRow.rowMaxOfOrNull(): T? = rowMaxOfOrNull(skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> AnyRow.rowMaxOf(): T & Any = rowMaxOf(skipNaN = skipNaNDefault) +public inline fun > AnyRow.rowMaxOf(): T = rowMaxOf(skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public fun DataFrame.max(): DataRow = max(skipNaN = skipNaNDefault) @@ -516,7 +519,7 @@ public fun ?> DataFrame.maxFor(vararg columns: KProperty maxFor(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.max(columns: ColumnsSelector): C & Any = +public fun ?> DataFrame.max(columns: ColumnsSelector): C = max(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -525,16 +528,16 @@ public fun DataFrame.max(vararg columns: String): Comparable = @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.max(vararg columns: ColumnReference): C & Any = +public fun ?> DataFrame.max(vararg columns: ColumnReference): C = max(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.max(vararg columns: KProperty): C & Any = +public fun ?> DataFrame.max(vararg columns: KProperty): C = max(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.maxOrNull(columns: ColumnsSelector): C? = +public fun ?> DataFrame.maxOrNull(columns: ColumnsSelector): C? = maxOrNull(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -543,26 +546,25 @@ public fun DataFrame.maxOrNull(vararg columns: String): Comparable? @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.maxOrNull(vararg columns: ColumnReference): C? = +public fun ?> DataFrame.maxOrNull(vararg columns: ColumnReference): C? = maxOrNull(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.maxOrNull(vararg columns: KProperty): C? = +public fun ?> DataFrame.maxOrNull(vararg columns: KProperty): C? = maxOrNull(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxOf( - crossinline expression: RowExpression, -): C & Any = maxOf(skipNaN = skipNaNDefault, expression = expression) +public inline fun ?> DataFrame.maxOf(crossinline expression: RowExpression): C = + maxOf(skipNaN = skipNaNDefault, expression = expression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxOfOrNull( +public inline fun ?> DataFrame.maxOfOrNull( crossinline expression: RowExpression, ): C? = maxOfOrNull(skipNaN = skipNaNDefault, expression = expression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxBy( +public inline fun ?> DataFrame.maxBy( crossinline expression: RowExpression, ): DataRow = maxBy(skipNaN = skipNaNDefault, expression = expression) @@ -571,16 +573,16 @@ public fun DataFrame.maxBy(column: String): DataRow = maxBy(column, sk @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxBy(column: ColumnReference): DataRow = +public inline fun ?> DataFrame.maxBy(column: ColumnReference): DataRow = maxBy(column, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxBy(column: KProperty): DataRow = +public inline fun ?> DataFrame.maxBy(column: KProperty): DataRow = maxBy(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxByOrNull( +public inline fun ?> DataFrame.maxByOrNull( crossinline expression: RowExpression, ): DataRow? = maxByOrNull(skipNaN = skipNaNDefault, expression = expression) @@ -589,13 +591,12 @@ public fun DataFrame.maxByOrNull(column: String): DataRow? = maxByOrNu @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxByOrNull( - column: ColumnReference, -): DataRow? = maxByOrNull(column, skipNaN = skipNaNDefault) +public inline fun ?> DataFrame.maxByOrNull(column: ColumnReference): DataRow? = + maxByOrNull(column, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.maxByOrNull(column: KProperty): DataRow? = +public inline fun ?> DataFrame.maxByOrNull(column: KProperty): DataRow? = maxByOrNull(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -620,7 +621,7 @@ public fun ?> Grouped.maxFor(vararg columns: KProperty?> Grouped.max( +public fun ?> Grouped.max( name: String? = null, columns: ColumnsSelector, ): DataFrame = max(name, skipNaN = skipNaNDefault, columns = columns) @@ -631,32 +632,30 @@ public fun Grouped.max(vararg columns: String, name: String? = null): Dat @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Grouped.max( +public fun ?> Grouped.max( vararg columns: ColumnReference, name: String? = null, ): DataFrame = max(columns = columns, name = name, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Grouped.max( - vararg columns: KProperty, - name: String? = null, -): DataFrame = max(columns = columns, name = name, skipNaN = skipNaNDefault) +public fun ?> Grouped.max(vararg columns: KProperty, name: String? = null): DataFrame = + max(columns = columns, name = name, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Grouped.maxOf( +public inline fun ?> Grouped.maxOf( name: String? = null, crossinline expression: RowExpression, ): DataFrame = maxOf(name, skipNaN = skipNaNDefault, expression = expression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( crossinline rowExpression: RowExpression, ): ReducedGroupBy = maxBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.maxBy( +public inline fun ?> GroupBy.maxBy( column: ColumnReference, ): ReducedGroupBy = maxBy(column, skipNaN = skipNaNDefault) @@ -665,9 +664,8 @@ public fun GroupBy.maxBy(column: String): ReducedGroupBy = ma @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.maxBy( - column: KProperty, -): ReducedGroupBy = maxBy(column, skipNaN = skipNaNDefault) +public inline fun ?> GroupBy.maxBy(column: KProperty): ReducedGroupBy = + maxBy(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public fun Pivot.max(separate: Boolean = false): DataRow = max(separate, skipNaN = skipNaNDefault) @@ -697,32 +695,32 @@ public fun ?> Pivot.maxFor( ): DataRow = maxFor(columns = columns, separate = separate, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.max(columns: ColumnsSelector): DataRow = +public fun ?> Pivot.max(columns: ColumnsSelector): DataRow = max(skipNaN = skipNaNDefault, columns = columns) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.max(vararg columns: ColumnReference): DataRow = +public fun ?> Pivot.max(vararg columns: ColumnReference): DataRow = max(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.max(vararg columns: KProperty): DataRow = +public fun ?> Pivot.max(vararg columns: KProperty): DataRow = max(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.maxOf( +public inline fun ?> Pivot.maxOf( crossinline rowExpression: RowExpression, ): DataRow = maxOf(skipNaN = skipNaNDefault, rowExpression = rowExpression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.maxBy( +public inline fun ?> Pivot.maxBy( crossinline rowExpression: RowExpression, ): ReducedPivot = maxBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.maxBy(column: ColumnReference): ReducedPivot = +public inline fun ?> Pivot.maxBy(column: ColumnReference): ReducedPivot = maxBy(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -730,7 +728,7 @@ public fun Pivot.maxBy(column: String): ReducedPivot = maxBy(column, s @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.maxBy(column: KProperty): ReducedPivot = +public inline fun ?> Pivot.maxBy(column: KProperty): ReducedPivot = maxBy(column, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -761,7 +759,7 @@ public fun ?> PivotGroupBy.maxFor( ): DataFrame = maxFor(columns = columns, separate = separate, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.max(columns: ColumnsSelector): DataFrame = +public fun ?> PivotGroupBy.max(columns: ColumnsSelector): DataFrame = max(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -769,27 +767,27 @@ public fun PivotGroupBy.max(vararg columns: String): DataFrame = max(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.max(vararg columns: ColumnReference): DataFrame = +public fun ?> PivotGroupBy.max(vararg columns: ColumnReference): DataFrame = max(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.max(vararg columns: KProperty): DataFrame = +public fun ?> PivotGroupBy.max(vararg columns: KProperty): DataFrame = max(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.maxOf( +public inline fun ?> PivotGroupBy.maxOf( crossinline rowExpression: RowExpression, ): DataFrame = maxOf(skipNaN = skipNaNDefault, rowExpression = rowExpression) @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = maxBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.maxBy( +public inline fun ?> PivotGroupBy.maxBy( column: ColumnReference, ): ReducedPivotGroupBy = maxBy(column, skipNaN = skipNaNDefault) @@ -798,8 +796,7 @@ public fun PivotGroupBy.maxBy(column: String): ReducedPivotGroupBy = m @AccessApiOverload @Deprecated(MAX_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.maxBy( - column: KProperty, -): ReducedPivotGroupBy = maxBy(column, skipNaN = skipNaNDefault) +public inline fun ?> PivotGroupBy.maxBy(column: KProperty): ReducedPivotGroupBy = + maxBy(column, skipNaN = skipNaNDefault) // endregion diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/median.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/median.kt index 576a17ea18..610d123a8c 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/median.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/median.kt @@ -15,6 +15,8 @@ import org.jetbrains.kotlinx.dataframe.annotations.Refine import org.jetbrains.kotlinx.dataframe.columns.ColumnReference import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators +import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast +import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast2 import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateByOrNull @@ -47,61 +49,58 @@ import kotlin.reflect.KProperty // region DataColumn -public fun ?> DataColumn.median(): T & Any = medianOrNull().suggestIfNull("median") +public fun ?> DataColumn.median(): T = medianOrNull().suggestIfNull("median") -public fun ?> DataColumn.medianOrNull(): T? = - Aggregators.medianComparables().aggregateSingleColumn(this) +public fun ?> DataColumn.medianOrNull(): T? = + Aggregators.median(skipNaNDefault).cast().aggregateSingleColumn(this) public fun DataColumn.median( skipNaN: Boolean = skipNaNDefault, ): Double - where T : Comparable?, T : Number? = medianOrNull(skipNaN = skipNaN).suggestIfNull("median") + where T : Comparable<*>?, T : Number? = medianOrNull(skipNaN = skipNaN).suggestIfNull("median") public fun DataColumn.medianOrNull( skipNaN: Boolean = skipNaNDefault, ): Double? - where T : Comparable?, T : Number? = - Aggregators.medianNumbers(skipNaN).aggregateSingleColumn(this) + where T : Comparable<*>?, T : Number? = + Aggregators.median(skipNaN).cast2().aggregateSingleColumn(this) @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.medianBy( +public inline fun ?> DataColumn.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T & Any = medianByOrNull(skipNaN, selector).suggestIfNull("medianBy") +): T = medianByOrNull(skipNaN, selector).suggestIfNull("medianBy") @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.medianByOrNull( +public inline fun ?> DataColumn.medianByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T? = Aggregators.medianCommon(skipNaN).aggregateByOrNull(this, selector) +): T? = Aggregators.median(skipNaN).cast().aggregateByOrNull(this, selector) // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.medianOf( - crossinline expression: (T) -> R, -): R & Any = medianOfOrNull(expression).suggestIfNull("medianOf") +public inline fun ?> DataColumn.medianOf(crossinline expression: (T) -> R): R = + medianOfOrNull(expression).suggestIfNull("medianOf") // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.medianOfOrNull( - crossinline expression: (T) -> R, -): R? = Aggregators.medianComparables().aggregateOf(this, expression) +public inline fun ?> DataColumn.medianOfOrNull(crossinline expression: (T) -> R): R? = + Aggregators.median(skipNaNDefault).cast().aggregateOf(this, expression) @OverloadResolutionByLambdaReturnType public inline fun DataColumn.medianOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: (T) -> R, ): Double - where R : Comparable?, R : Number? = - medianOfOrNull(skipNaN, expression).suggestIfNull("medianOf") + where R : Comparable<*>?, R : Number? = medianOfOrNull(skipNaN, expression).suggestIfNull("medianOf") @OverloadResolutionByLambdaReturnType public inline fun DataColumn.medianOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: (T) -> R, ): Double? - where R : Comparable?, R : Number? = - Aggregators.medianNumbers(skipNaN).aggregateOf(this, expression) + where R : Comparable<*>?, R : Number? = + Aggregators.median(skipNaN).cast2().aggregateOf(this, expression) // endregion @@ -164,21 +163,21 @@ public fun ?> DataFrame.medianFor( // TODO, requires explicit type C due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public fun ?> DataFrame.median(columns: ColumnsSelector): C & Any = +public fun ?> DataFrame.median(columns: ColumnsSelector): C = medianOrNull(columns).suggestIfNull("median") // TODO, requires explicit type C due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType @Suppress("UNCHECKED_CAST") -public fun ?> DataFrame.medianOrNull(columns: ColumnsSelector): C? = - Aggregators.medianComparables().aggregateAll(this, columns) +public fun ?> DataFrame.medianOrNull(columns: ColumnsSelector): C? = + Aggregators.median(skipNaNDefault).cast().aggregateAll(this, columns) @OverloadResolutionByLambdaReturnType public fun DataFrame.median( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): Double - where C : Number?, C : Comparable? = medianOrNull(skipNaN, columns).suggestIfNull("median") + where C : Number?, C : Comparable<*>? = medianOrNull(skipNaN, columns).suggestIfNull("median") @OverloadResolutionByLambdaReturnType @Suppress("UNCHECKED_CAST") @@ -186,8 +185,8 @@ public fun DataFrame.medianOrNull( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): Double? - where C : Comparable?, C : Number? = - Aggregators.medianNumbers(skipNaN).aggregateAll(this, columns) + where C : Comparable<*>?, C : Number? = + Aggregators.median(skipNaN).cast2().aggregateAll(this, columns) public fun DataFrame.median(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Any = medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") @@ -197,12 +196,12 @@ public fun DataFrame.medianOrNull(vararg columns: String, skipNaN: Boolea @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.median(vararg columns: ColumnReference): C & Any = +public fun ?> DataFrame.median(vararg columns: ColumnReference): C = medianOrNull(*columns).suggestIfNull("median") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.medianOrNull(vararg columns: ColumnReference): C? = +public fun ?> DataFrame.medianOrNull(vararg columns: ColumnReference): C? = medianOrNull { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @@ -211,8 +210,7 @@ public fun DataFrame.median( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): Double - where C : Comparable?, C : Number? = - medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") + where C : Comparable<*>?, C : Number? = medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload @@ -220,16 +218,16 @@ public fun DataFrame.medianOrNull( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): Double? - where C : Comparable?, C : Number? = medianOrNull(skipNaN) { columns.toColumnSet() } + where C : Comparable<*>?, C : Number? = medianOrNull(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.median(vararg columns: KProperty): C & Any = +public fun ?> DataFrame.median(vararg columns: KProperty): C = medianOrNull(*columns).suggestIfNull("median") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.medianOrNull(vararg columns: KProperty): C? = +public fun ?> DataFrame.medianOrNull(vararg columns: KProperty): C? = medianOrNull { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @@ -238,8 +236,7 @@ public fun DataFrame.median( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): Double - where C : Comparable?, C : Number? = - medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") + where C : Comparable<*>?, C : Number? = medianOrNull(*columns, skipNaN = skipNaN).suggestIfNull("median") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload @@ -247,37 +244,36 @@ public fun DataFrame.medianOrNull( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): Double? - where C : Comparable?, C : Number? = medianOrNull(skipNaN) { columns.toColumnSet() } + where C : Comparable<*>?, C : Number? = medianOrNull(skipNaN) { columns.toColumnSet() } // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataFrame.medianOf( +public inline fun ?> DataFrame.medianOf( crossinline expression: RowExpression, -): R & Any = medianOfOrNull(expression).suggestIfNull("medianOf") +): R = medianOfOrNull(expression).suggestIfNull("medianOf") // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataFrame.medianOfOrNull( +public inline fun ?> DataFrame.medianOfOrNull( crossinline expression: RowExpression, -): R? = Aggregators.medianComparables().aggregateOf(this, expression) +): R? = Aggregators.median(skipNaNDefault).cast().aggregateOf(this, expression) @OverloadResolutionByLambdaReturnType public inline fun DataFrame.medianOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): Double - where R : Comparable?, R : Number? = - medianOfOrNull(skipNaN, expression).suggestIfNull("medianOf") + where R : Comparable<*>?, R : Number? = medianOfOrNull(skipNaN, expression).suggestIfNull("medianOf") @OverloadResolutionByLambdaReturnType public inline fun DataFrame.medianOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): Double? - where R : Comparable?, R : Number? = - Aggregators.medianNumbers(skipNaN).aggregateOf(this, expression) + where R : Comparable<*>?, R : Number? = + Aggregators.median(skipNaN).cast2().aggregateOf(this, expression) -public inline fun ?> DataFrame.medianBy( +public inline fun ?> DataFrame.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = medianByOrNull(skipNaN, expression).suggestIfNull("medianBy") @@ -287,36 +283,36 @@ public fun DataFrame.medianBy(column: String, skipNaN: Boolean = skipNaND @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.medianBy( +public inline fun ?> DataFrame.medianBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = medianByOrNull(column, skipNaN).suggestIfNull("medianBy") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.medianBy( +public inline fun ?> DataFrame.medianBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = medianByOrNull(column, skipNaN).suggestIfNull("medianBy") -public inline fun ?> DataFrame.medianByOrNull( +public inline fun ?> DataFrame.medianByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataRow? = Aggregators.medianCommon(skipNaN).aggregateByOrNull(this, expression) +): DataRow? = Aggregators.median(skipNaN).cast().aggregateByOrNull(this, expression) public fun DataFrame.medianByOrNull(column: String, skipNaN: Boolean = skipNaNDefault): DataRow? = medianByOrNull(column.toColumnOf?>(), skipNaN) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.medianByOrNull( +public inline fun ?> DataFrame.medianByOrNull( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): DataRow? = Aggregators.medianCommon(skipNaN).aggregateByOrNull(this, column) +): DataRow? = Aggregators.median(skipNaN).cast().aggregateByOrNull(this, column) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.medianByOrNull( +public inline fun ?> DataFrame.medianByOrNull( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow? = medianByOrNull(column.toColumnAccessor(), skipNaN) @@ -354,11 +350,11 @@ public fun ?> Grouped.medianFor( @Refine @Interpretable("GroupByMedian2") -public fun ?> Grouped.median( +public fun ?> Grouped.median( name: String? = null, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.medianCommon(skipNaN).aggregateAll(this, name, columns) +): DataFrame = Aggregators.median(skipNaN).cast().aggregateAll(this, name, columns) public fun Grouped.median( vararg columns: String, @@ -368,7 +364,7 @@ public fun Grouped.median( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.median( +public fun ?> Grouped.median( vararg columns: ColumnReference, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -376,7 +372,7 @@ public fun ?> Grouped.median( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.median( +public fun ?> Grouped.median( vararg columns: KProperty, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -384,21 +380,21 @@ public fun ?> Grouped.median( @Refine @Interpretable("GroupByMedianOf") -public inline fun ?> Grouped.medianOf( +public inline fun ?> Grouped.medianOf( name: String? = null, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.medianCommon(skipNaN).aggregateOf(this, name, expression) +): DataFrame = Aggregators.median(skipNaN).cast().aggregateOf(this, name, expression) @Interpretable("GroupByReduceExpression") // TODO? -public inline fun ?> GroupBy.medianBy( +public inline fun ?> GroupBy.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedGroupBy = reduce { medianByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.medianBy( +public inline fun ?> GroupBy.medianBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = reduce { medianByOrNull(column, skipNaN) } @@ -408,7 +404,7 @@ public fun GroupBy.medianBy(column: String, skipNaN: Boolean = skip @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.medianBy( +public inline fun ?> GroupBy.medianBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = medianBy(column.toColumnAccessor(), skipNaN) @@ -448,7 +444,7 @@ public fun ?> Pivot.medianFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = medianFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> Pivot.median( +public fun ?> Pivot.median( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): DataRow = delegate { median(skipNaN, columns) } @@ -458,31 +454,31 @@ public fun Pivot.median(vararg columns: String, skipNaN: Boolean = skipNa @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.median( +public fun ?> Pivot.median( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = median(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.median( +public fun ?> Pivot.median( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = median(skipNaN) { columns.toColumnSet() } -public inline fun ?> Pivot.medianOf( +public inline fun ?> Pivot.medianOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = delegate { medianOf(skipNaN, expression) } -public inline fun ?> Pivot.medianBy( +public inline fun ?> Pivot.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivot = reduce { medianByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.medianBy( +public inline fun ?> Pivot.medianBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = reduce { medianByOrNull(column, skipNaN) } @@ -492,7 +488,7 @@ public fun Pivot.medianBy(column: String, skipNaN: Boolean = skipNaNDefau @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.medianBy( +public inline fun ?> Pivot.medianBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = medianBy(column.toColumnAccessor(), skipNaN) @@ -531,41 +527,41 @@ public fun ?> PivotGroupBy.medianFor( skipNaN: Boolean = skipNaNDefault, ): DataFrame = medianFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> PivotGroupBy.median( +public fun ?> PivotGroupBy.median( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.medianCommon(skipNaN).aggregateAll(this, columns) +): DataFrame = Aggregators.median(skipNaN).cast().aggregateAll(this, columns) public fun PivotGroupBy.median(vararg columns: String, skipNaN: Boolean = skipNaNDefault): DataFrame = median(skipNaN) { columns.toComparableColumns() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.median( +public fun ?> PivotGroupBy.median( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataFrame = median(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.median( +public fun ?> PivotGroupBy.median( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataFrame = median(skipNaN) { columns.toColumnSet() } -public inline fun ?> PivotGroupBy.medianOf( +public inline fun ?> PivotGroupBy.medianOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.medianCommon(skipNaN).aggregateOf(this, expression) +): DataFrame = Aggregators.median(skipNaN).cast().aggregateOf(this, expression) -public inline fun ?> PivotGroupBy.medianBy( +public inline fun ?> PivotGroupBy.medianBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = reduce { medianByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.medianBy( +public inline fun ?> PivotGroupBy.medianBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = reduce { medianByOrNull(column, skipNaN) } @@ -575,7 +571,7 @@ public fun PivotGroupBy.medianBy(column: String, skipNaN: Boolean = skipN @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.medianBy( +public inline fun ?> PivotGroupBy.medianBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = medianBy(column.toColumnAccessor(), skipNaN) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/min.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/min.kt index 6246e7205c..ebd30a44e5 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/min.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/min.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlinx.dataframe.annotations.Refine import org.jetbrains.kotlinx.dataframe.columns.ColumnReference import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators +import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateByOrNull @@ -35,25 +36,25 @@ public fun > DataColumn.min(skipNaN: Boolean = skipNaNDefa public fun > DataColumn.minOrNull(skipNaN: Boolean = skipNaNDefault): T? = Aggregators.min(skipNaN).aggregateSingleColumn(this) -public inline fun ?> DataColumn.minBy( +public inline fun ?> DataColumn.minBy( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T & Any = minByOrNull(skipNaN, selector).suggestIfNull("minBy") +): T = minByOrNull(skipNaN, selector).suggestIfNull("minBy") -public inline fun ?> DataColumn.minByOrNull( +public inline fun ?> DataColumn.minByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T? = Aggregators.min(skipNaN).aggregateByOrNull(this, selector) +): T? = Aggregators.min.invoke(skipNaN).cast().aggregateByOrNull(this, selector) -public inline fun ?> DataColumn.minOf( +public inline fun ?> DataColumn.minOf( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): R & Any = minOfOrNull(skipNaN, selector).suggestIfNull("minOf") +): R = minOfOrNull(skipNaN, selector).suggestIfNull("minOf") -public inline fun ?> DataColumn.minOfOrNull( +public inline fun ?> DataColumn.minOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): R? = Aggregators.min(skipNaN).aggregateOf(this, selector) +): R? = Aggregators.min.invoke(skipNaN).cast().aggregateOf(this, selector) // endregion @@ -103,61 +104,61 @@ public fun ?> DataFrame.minFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = minFor(skipNaN) { columns.toColumnSet() } -public fun ?> DataFrame.min( +public fun ?> DataFrame.min( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): C & Any = minOrNull(skipNaN, columns).suggestIfNull("min") +): C = minOrNull(skipNaN, columns).suggestIfNull("min") public fun DataFrame.min(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Comparable = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.min( +public fun ?> DataFrame.min( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): C & Any = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") +): C = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.min( +public fun ?> DataFrame.min( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, -): C & Any = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") +): C = minOrNull(*columns, skipNaN = skipNaN).suggestIfNull("min") -public fun ?> DataFrame.minOrNull( +public fun ?> DataFrame.minOrNull( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): C? = Aggregators.min(skipNaN).aggregateAll(this, columns) +): C? = Aggregators.min.invoke(skipNaN).cast().aggregateAll(this, columns) public fun DataFrame.minOrNull(vararg columns: String, skipNaN: Boolean = skipNaNDefault): Comparable? = minOrNull(skipNaN) { columns.toComparableColumns() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.minOrNull( +public fun ?> DataFrame.minOrNull( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): C? = minOrNull(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.minOrNull( +public fun ?> DataFrame.minOrNull( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): C? = minOrNull(skipNaN) { columns.toColumnSet() } -public inline fun ?> DataFrame.minOf( +public inline fun ?> DataFrame.minOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): C & Any = minOfOrNull(skipNaN, expression).suggestIfNull("minOf") +): C = minOfOrNull(skipNaN, expression).suggestIfNull("minOf") -public inline fun ?> DataFrame.minOfOrNull( +public inline fun ?> DataFrame.minOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): C? = Aggregators.min(skipNaN).aggregateOf(this, expression) +): C? = Aggregators.min.invoke(skipNaN).cast().aggregateOf(this, expression) -public inline fun ?> DataFrame.minBy( +public inline fun ?> DataFrame.minBy( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = minByOrNull(skipNaN, expression).suggestIfNull("minBy") @@ -167,36 +168,36 @@ public fun DataFrame.minBy(column: String, skipNaN: Boolean = skipNaNDefa @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.minBy( +public inline fun ?> DataFrame.minBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = minByOrNull(column, skipNaN).suggestIfNull("minBy") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.minBy( +public inline fun ?> DataFrame.minBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = minByOrNull(column, skipNaN).suggestIfNull("minBy") -public inline fun ?> DataFrame.minByOrNull( +public inline fun ?> DataFrame.minByOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataRow? = Aggregators.min(skipNaN).aggregateByOrNull(this, expression) +): DataRow? = Aggregators.min.invoke(skipNaN).cast().aggregateByOrNull(this, expression) public fun DataFrame.minByOrNull(column: String, skipNaN: Boolean = skipNaNDefault): DataRow? = minByOrNull(column.toColumnOf?>(), skipNaN) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.minByOrNull( +public inline fun ?> DataFrame.minByOrNull( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): DataRow? = Aggregators.min(skipNaN).aggregateByOrNull(this, column) +): DataRow? = Aggregators.min.invoke(skipNaN).cast().aggregateByOrNull(this, column) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.minByOrNull( +public inline fun ?> DataFrame.minByOrNull( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow? = minByOrNull(column.toColumnAccessor(), skipNaN) @@ -236,11 +237,11 @@ public fun ?> Grouped.minFor( @Refine @Interpretable("GroupByMin2") -public fun ?> Grouped.min( +public fun ?> Grouped.min( name: String? = null, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.min(skipNaN).aggregateAll(this, name, columns) +): DataFrame = Aggregators.min.invoke(skipNaN).cast().aggregateAll(this, name, columns) public fun Grouped.min( vararg columns: String, @@ -250,7 +251,7 @@ public fun Grouped.min( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.min( +public fun ?> Grouped.min( vararg columns: ColumnReference, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -258,7 +259,7 @@ public fun ?> Grouped.min( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.min( +public fun ?> Grouped.min( vararg columns: KProperty, name: String? = null, skipNaN: Boolean = skipNaNDefault, @@ -266,21 +267,21 @@ public fun ?> Grouped.min( @Refine @Interpretable("GroupByMinOf") -public inline fun ?> Grouped.minOf( +public inline fun ?> Grouped.minOf( name: String? = null, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.min(skipNaN).aggregateOf(this, name, expression) +): DataFrame = Aggregators.min.invoke(skipNaN).cast().aggregateOf(this, name, expression) @Interpretable("GroupByReduceExpression") -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedGroupBy = reduce { minByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = reduce { minByOrNull(column, skipNaN) } @@ -290,7 +291,7 @@ public fun GroupBy.minBy(column: String, skipNaN: Boolean = skipNaN @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedGroupBy = minBy(column.toColumnAccessor(), skipNaN) @@ -330,7 +331,7 @@ public fun ?> Pivot.minFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = minFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> Pivot.min( +public fun ?> Pivot.min( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): DataRow = delegate { min(skipNaN, columns) } @@ -340,31 +341,31 @@ public fun Pivot.min(vararg columns: String, skipNaN: Boolean = skipNaNDe @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.min( +public fun ?> Pivot.min( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataRow = min(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.min( +public fun ?> Pivot.min( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = min(skipNaN) { columns.toColumnSet() } -public inline fun ?> Pivot.minOf( +public inline fun ?> Pivot.minOf( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): DataRow = delegate { minOf(skipNaN, rowExpression) } -public inline fun ?> Pivot.minBy( +public inline fun ?> Pivot.minBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivot = reduce { minByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.minBy( +public inline fun ?> Pivot.minBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = reduce { minByOrNull(column, skipNaN) } @@ -374,7 +375,7 @@ public fun Pivot.minBy(column: String, skipNaN: Boolean = skipNaNDefault) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.minBy( +public inline fun ?> Pivot.minBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivot = minBy(column.toColumnAccessor(), skipNaN) @@ -414,39 +415,39 @@ public fun ?> PivotGroupBy.minFor( skipNaN: Boolean = skipNaNDefault, ): DataFrame = minFor(separate, skipNaN) { columns.toColumnSet() } -public fun ?> PivotGroupBy.min( +public fun ?> PivotGroupBy.min( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.min(skipNaN).aggregateAll(this, columns) +): DataFrame = Aggregators.min.invoke(skipNaN).cast().aggregateAll(this, columns) public fun PivotGroupBy.min(vararg columns: String, skipNaN: Boolean = skipNaNDefault): DataFrame = min(skipNaN) { columns.toComparableColumns() } -public fun ?> PivotGroupBy.min( +public fun ?> PivotGroupBy.min( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): DataFrame = min(skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.min( +public fun ?> PivotGroupBy.min( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataFrame = min(skipNaN) { columns.toColumnSet() } -public inline fun ?> PivotGroupBy.minOf( +public inline fun ?> PivotGroupBy.minOf( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): DataFrame = aggregate { minOf(skipNaN, rowExpression) } -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = reduce { minByOrNull(skipNaN, rowExpression) } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( column: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = reduce { minByOrNull(column, skipNaN) } @@ -456,7 +457,7 @@ public fun PivotGroupBy.minBy(column: String, skipNaN: Boolean = skipNaND @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( column: KProperty, skipNaN: Boolean = skipNaNDefault, ): ReducedPivotGroupBy = minBy(column.toColumnAccessor(), skipNaN) @@ -473,26 +474,26 @@ public fun > DataColumn.min(): T = min(skipNaN = skipNaNDe public fun > DataColumn.minOrNull(): T? = minOrNull(skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.minBy(noinline selector: (T) -> R): T & Any = +public inline fun ?> DataColumn.minBy(noinline selector: (T) -> R): T = minBy(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.minByOrNull(noinline selector: (T) -> R): T? = +public inline fun ?> DataColumn.minByOrNull(noinline selector: (T) -> R): T? = minByOrNull(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.minOf(crossinline selector: (T) -> R): R & Any = +public inline fun ?> DataColumn.minOf(crossinline selector: (T) -> R): R = minOf(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataColumn.minOfOrNull(crossinline selector: (T) -> R): R? = +public inline fun ?> DataColumn.minOfOrNull(crossinline selector: (T) -> R): R? = minOfOrNull(skipNaN = skipNaNDefault, selector = selector) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public inline fun > AnyRow.rowMinOfOrNull(): T? = rowMinOfOrNull(skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> AnyRow.rowMinOf(): T & Any = rowMinOf(skipNaN = skipNaNDefault) +public inline fun > AnyRow.rowMinOf(): T = rowMinOf(skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public fun DataFrame.min(): DataRow = min(skipNaN = skipNaNDefault) @@ -516,7 +517,7 @@ public fun ?> DataFrame.minFor(vararg columns: KProperty minFor(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.min(columns: ColumnsSelector): C & Any = +public fun ?> DataFrame.min(columns: ColumnsSelector): C = min(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -525,16 +526,16 @@ public fun DataFrame.min(vararg columns: String): Comparable = @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.min(vararg columns: ColumnReference): C & Any = +public fun ?> DataFrame.min(vararg columns: ColumnReference): C = min(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.min(vararg columns: KProperty): C & Any = +public fun ?> DataFrame.min(vararg columns: KProperty): C = min(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.minOrNull(columns: ColumnsSelector): C? = +public fun ?> DataFrame.minOrNull(columns: ColumnsSelector): C? = minOrNull(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -543,26 +544,25 @@ public fun DataFrame.minOrNull(vararg columns: String): Comparable? @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.minOrNull(vararg columns: ColumnReference): C? = +public fun ?> DataFrame.minOrNull(vararg columns: ColumnReference): C? = minOrNull(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> DataFrame.minOrNull(vararg columns: KProperty): C? = +public fun ?> DataFrame.minOrNull(vararg columns: KProperty): C? = minOrNull(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minOf( - crossinline expression: RowExpression, -): C & Any = minOf(skipNaN = skipNaNDefault, expression = expression) +public inline fun ?> DataFrame.minOf(crossinline expression: RowExpression): C = + minOf(skipNaN = skipNaNDefault, expression = expression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minOfOrNull( +public inline fun ?> DataFrame.minOfOrNull( crossinline expression: RowExpression, ): C? = minOfOrNull(skipNaN = skipNaNDefault, expression = expression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minBy( +public inline fun ?> DataFrame.minBy( crossinline expression: RowExpression, ): DataRow = minBy(skipNaN = skipNaNDefault, expression = expression) @@ -571,16 +571,16 @@ public fun DataFrame.minBy(column: String): DataRow = minBy(column, sk @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minBy(column: ColumnReference): DataRow = +public inline fun ?> DataFrame.minBy(column: ColumnReference): DataRow = minBy(column, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minBy(column: KProperty): DataRow = +public inline fun ?> DataFrame.minBy(column: KProperty): DataRow = minBy(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minByOrNull( +public inline fun ?> DataFrame.minByOrNull( crossinline expression: RowExpression, ): DataRow? = minByOrNull(skipNaN = skipNaNDefault, expression = expression) @@ -589,13 +589,12 @@ public fun DataFrame.minByOrNull(column: String): DataRow? = minByOrNu @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minByOrNull( - column: ColumnReference, -): DataRow? = minByOrNull(column, skipNaN = skipNaNDefault) +public inline fun ?> DataFrame.minByOrNull(column: ColumnReference): DataRow? = + minByOrNull(column, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> DataFrame.minByOrNull(column: KProperty): DataRow? = +public inline fun ?> DataFrame.minByOrNull(column: KProperty): DataRow? = minByOrNull(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -620,7 +619,7 @@ public fun ?> Grouped.minFor(vararg columns: KProperty?> Grouped.min( +public fun ?> Grouped.min( name: String? = null, columns: ColumnsSelector, ): DataFrame = min(name, skipNaN = skipNaNDefault, columns = columns) @@ -631,32 +630,30 @@ public fun Grouped.min(vararg columns: String, name: String? = null): Dat @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Grouped.min( +public fun ?> Grouped.min( vararg columns: ColumnReference, name: String? = null, ): DataFrame = min(columns = columns, name = name, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Grouped.min( - vararg columns: KProperty, - name: String? = null, -): DataFrame = min(columns = columns, name = name, skipNaN = skipNaNDefault) +public fun ?> Grouped.min(vararg columns: KProperty, name: String? = null): DataFrame = + min(columns = columns, name = name, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Grouped.minOf( +public inline fun ?> Grouped.minOf( name: String? = null, crossinline expression: RowExpression, ): DataFrame = minOf(name, skipNaN = skipNaNDefault, expression = expression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( crossinline rowExpression: RowExpression, ): ReducedGroupBy = minBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.minBy( +public inline fun ?> GroupBy.minBy( column: ColumnReference, ): ReducedGroupBy = minBy(column, skipNaN = skipNaNDefault) @@ -665,9 +662,8 @@ public fun GroupBy.minBy(column: String): ReducedGroupBy = mi @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> GroupBy.minBy( - column: KProperty, -): ReducedGroupBy = minBy(column, skipNaN = skipNaNDefault) +public inline fun ?> GroupBy.minBy(column: KProperty): ReducedGroupBy = + minBy(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) public fun Pivot.min(separate: Boolean = false): DataRow = min(separate, skipNaN = skipNaNDefault) @@ -697,32 +693,32 @@ public fun ?> Pivot.minFor( ): DataRow = minFor(columns = columns, separate = separate, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.min(columns: ColumnsSelector): DataRow = +public fun ?> Pivot.min(columns: ColumnsSelector): DataRow = min(skipNaN = skipNaNDefault, columns = columns) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.min(vararg columns: ColumnReference): DataRow = +public fun ?> Pivot.min(vararg columns: ColumnReference): DataRow = min(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> Pivot.min(vararg columns: KProperty): DataRow = +public fun ?> Pivot.min(vararg columns: KProperty): DataRow = min(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.minOf( +public inline fun ?> Pivot.minOf( crossinline rowExpression: RowExpression, ): DataRow = minOf(skipNaN = skipNaNDefault, rowExpression = rowExpression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.minBy( +public inline fun ?> Pivot.minBy( crossinline rowExpression: RowExpression, ): ReducedPivot = minBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.minBy(column: ColumnReference): ReducedPivot = +public inline fun ?> Pivot.minBy(column: ColumnReference): ReducedPivot = minBy(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -730,7 +726,7 @@ public fun Pivot.minBy(column: String): ReducedPivot = minBy(column, s @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> Pivot.minBy(column: KProperty): ReducedPivot = +public inline fun ?> Pivot.minBy(column: KProperty): ReducedPivot = minBy(column, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -761,7 +757,7 @@ public fun ?> PivotGroupBy.minFor( ): DataFrame = minFor(columns = columns, separate = separate, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.min(columns: ColumnsSelector): DataFrame = +public fun ?> PivotGroupBy.min(columns: ColumnsSelector): DataFrame = min(skipNaN = skipNaNDefault, columns = columns) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) @@ -769,27 +765,27 @@ public fun PivotGroupBy.min(vararg columns: String): DataFrame = min(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.min(vararg columns: ColumnReference): DataFrame = +public fun ?> PivotGroupBy.min(vararg columns: ColumnReference): DataFrame = min(columns = columns, skipNaN = skipNaNDefault) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public fun ?> PivotGroupBy.min(vararg columns: KProperty): DataFrame = +public fun ?> PivotGroupBy.min(vararg columns: KProperty): DataFrame = min(columns = columns, skipNaN = skipNaNDefault) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.minOf( +public inline fun ?> PivotGroupBy.minOf( crossinline rowExpression: RowExpression, ): DataFrame = minOf(skipNaN = skipNaNDefault, rowExpression = rowExpression) @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( crossinline rowExpression: RowExpression, ): ReducedPivotGroupBy = minBy(skipNaN = skipNaNDefault, rowExpression = rowExpression) @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.minBy( +public inline fun ?> PivotGroupBy.minBy( column: ColumnReference, ): ReducedPivotGroupBy = minBy(column, skipNaN = skipNaNDefault) @@ -798,8 +794,7 @@ public fun PivotGroupBy.minBy(column: String): ReducedPivotGroupBy = m @AccessApiOverload @Deprecated(MIN_NO_SKIPNAN, level = DeprecationLevel.HIDDEN) -public inline fun ?> PivotGroupBy.minBy( - column: KProperty, -): ReducedPivotGroupBy = minBy(column, skipNaN = skipNaNDefault) +public inline fun ?> PivotGroupBy.minBy(column: KProperty): ReducedPivotGroupBy = + minBy(column, skipNaN = skipNaNDefault) // endregion diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/percentile.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/percentile.kt index be666a8448..3809746da6 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/percentile.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/percentile.kt @@ -15,6 +15,8 @@ import org.jetbrains.kotlinx.dataframe.annotations.Refine import org.jetbrains.kotlinx.dataframe.columns.ColumnReference import org.jetbrains.kotlinx.dataframe.columns.toColumnSet import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators +import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast +import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast2 import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateByOrNull @@ -48,53 +50,53 @@ import kotlin.reflect.KProperty // region DataColumn -public fun ?> DataColumn.percentile(percentile: Double): T & Any = +public fun ?> DataColumn.percentile(percentile: Double): T = percentileOrNull(percentile).suggestIfNull("percentile") -public fun ?> DataColumn.percentileOrNull(percentile: Double): T? = - Aggregators.percentileComparables(percentile).aggregateSingleColumn(this) +public fun ?> DataColumn.percentileOrNull(percentile: Double): T? = + Aggregators.percentile(percentile, skipNaNDefault).cast().aggregateSingleColumn(this) public fun DataColumn.percentile( percentile: Double, skipNaN: Boolean = skipNaNDefault, ): Double - where T : Comparable?, T : Number? = + where T : Comparable<*>?, T : Number? = percentileOrNull(percentile = percentile, skipNaN = skipNaN).suggestIfNull("percentile") public fun DataColumn.percentileOrNull( percentile: Double, skipNaN: Boolean = skipNaNDefault, ): Double? - where T : Comparable?, T : Number? = - Aggregators.percentileNumbers(percentile, skipNaN).aggregateSingleColumn(this) + where T : Comparable<*>?, T : Number? = + Aggregators.percentile(percentile, skipNaN).cast2().aggregateSingleColumn(this) @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.percentileBy( +public inline fun ?> DataColumn.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T & Any = percentileByOrNull(percentile, skipNaN, selector).suggestIfNull("percentileBy") +): T = percentileByOrNull(percentile, skipNaN, selector).suggestIfNull("percentileBy") @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.percentileByOrNull( +public inline fun ?> DataColumn.percentileByOrNull( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline selector: (T) -> R, -): T? = Aggregators.percentileCommon(percentile, skipNaN).aggregateByOrNull(this, selector) +): T? = Aggregators.percentile(percentile, skipNaN).cast().aggregateByOrNull(this, selector) // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.percentileOf( +public inline fun ?> DataColumn.percentileOf( percentile: Double, crossinline expression: (T) -> R, -): R & Any = percentileOfOrNull(percentile, expression).suggestIfNull("percentileOf") +): R = percentileOfOrNull(percentile, expression).suggestIfNull("percentileOf") // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataColumn.percentileOfOrNull( +public inline fun ?> DataColumn.percentileOfOrNull( percentile: Double, crossinline expression: (T) -> R, -): R? = Aggregators.percentileComparables(percentile).aggregateOf(this, expression) +): R? = Aggregators.percentile(percentile, skipNaNDefault).cast().aggregateOf(this, expression) @OverloadResolutionByLambdaReturnType public inline fun DataColumn.percentileOf( @@ -102,7 +104,7 @@ public inline fun DataColumn.percentileOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: (T) -> R, ): Double - where R : Comparable?, R : Number? = + where R : Comparable<*>?, R : Number? = percentileOfOrNull(percentile, skipNaN, expression).suggestIfNull("percentileOf") @OverloadResolutionByLambdaReturnType @@ -111,8 +113,8 @@ public inline fun DataColumn.percentileOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: (T) -> R, ): Double? - where R : Comparable?, R : Number? = - Aggregators.percentileNumbers(percentile, skipNaN).aggregateOf(this, expression) + where R : Comparable<*>?, R : Number? = + Aggregators.percentile(percentile, skipNaN).cast2().aggregateOf(this, expression) // endregion @@ -184,18 +186,16 @@ public fun ?> DataFrame.percentileFor( // TODO, requires explicit type C due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public fun ?> DataFrame.percentile( - percentile: Double, - columns: ColumnsSelector, -): C & Any = percentileOrNull(percentile, columns).suggestIfNull("percentile") +public fun ?> DataFrame.percentile(percentile: Double, columns: ColumnsSelector): C = + percentileOrNull(percentile, columns).suggestIfNull("percentile") // TODO, requires explicit type C due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType @Suppress("UNCHECKED_CAST") -public fun ?> DataFrame.percentileOrNull( +public fun ?> DataFrame.percentileOrNull( percentile: Double, columns: ColumnsSelector, -): C? = Aggregators.percentileComparables(percentile).aggregateAll(this, columns) +): C? = Aggregators.percentile(percentile, skipNaNDefault).cast().aggregateAll(this, columns) @OverloadResolutionByLambdaReturnType public fun DataFrame.percentile( @@ -203,7 +203,7 @@ public fun DataFrame.percentile( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): Double - where C : Number?, C : Comparable? = + where C : Number?, C : Comparable<*>? = percentileOrNull(percentile, skipNaN, columns).suggestIfNull("percentile") @OverloadResolutionByLambdaReturnType @@ -213,8 +213,8 @@ public fun DataFrame.percentileOrNull( skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, ): Double? - where C : Comparable?, C : Number? = - Aggregators.percentileNumbers(percentile, skipNaN).aggregateAll(this, columns) + where C : Comparable<*>?, C : Number? = + Aggregators.percentile(percentile, skipNaN).cast2().aggregateAll(this, columns) public fun DataFrame.percentile( percentile: Double, @@ -231,14 +231,12 @@ public fun DataFrame.percentileOrNull( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.percentile( - percentile: Double, - vararg columns: ColumnReference, -): C & Any = percentileOrNull(percentile, *columns).suggestIfNull("percentile") +public fun ?> DataFrame.percentile(percentile: Double, vararg columns: ColumnReference): C = + percentileOrNull(percentile, *columns).suggestIfNull("percentile") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.percentileOrNull( +public fun ?> DataFrame.percentileOrNull( percentile: Double, vararg columns: ColumnReference, ): C? = percentileOrNull(percentile) { columns.toColumnSet() } @@ -250,7 +248,7 @@ public fun DataFrame.percentile( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): Double - where C : Comparable?, C : Number? = + where C : Comparable<*>?, C : Number? = percentileOrNull(percentile, *columns, skipNaN = skipNaN).suggestIfNull("percentile") @Deprecated(DEPRECATED_ACCESS_API) @@ -260,19 +258,16 @@ public fun DataFrame.percentileOrNull( vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, ): Double? - where C : Comparable?, C : Number? = - percentileOrNull(percentile, skipNaN) { columns.toColumnSet() } + where C : Comparable<*>?, C : Number? = percentileOrNull(percentile, skipNaN) { columns.toColumnSet() } @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.percentile( - percentile: Double, - vararg columns: KProperty, -): C & Any = percentileOrNull(percentile, *columns).suggestIfNull("percentile") +public fun ?> DataFrame.percentile(percentile: Double, vararg columns: KProperty): C = + percentileOrNull(percentile, *columns).suggestIfNull("percentile") @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> DataFrame.percentileOrNull( +public fun ?> DataFrame.percentileOrNull( percentile: Double, vararg columns: KProperty, ): C? = percentileOrNull(percentile) { columns.toColumnSet() } @@ -284,7 +279,7 @@ public fun DataFrame.percentile( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): Double - where C : Comparable?, C : Number? = + where C : Comparable<*>?, C : Number? = percentileOrNull(percentile, *columns, skipNaN = skipNaN).suggestIfNull("percentile") @Deprecated(DEPRECATED_ACCESS_API) @@ -294,22 +289,21 @@ public fun DataFrame.percentileOrNull( vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): Double? - where C : Comparable?, C : Number? = - percentileOrNull(percentile, skipNaN) { columns.toColumnSet() } + where C : Comparable<*>?, C : Number? = percentileOrNull(percentile, skipNaN) { columns.toColumnSet() } // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataFrame.percentileOf( +public inline fun ?> DataFrame.percentileOf( percentile: Double, crossinline expression: RowExpression, -): R & Any = percentileOfOrNull(percentile, expression).suggestIfNull("percentileOf") +): R = percentileOfOrNull(percentile, expression).suggestIfNull("percentileOf") // TODO, requires explicit type R due to https://youtrack.jetbrains.com/issue/KT-76683 @OverloadResolutionByLambdaReturnType -public inline fun ?> DataFrame.percentileOfOrNull( +public inline fun ?> DataFrame.percentileOfOrNull( percentile: Double, crossinline expression: RowExpression, -): R? = Aggregators.percentileComparables(percentile).aggregateOf(this, expression) +): R? = Aggregators.percentile(percentile, skipNaNDefault).cast().aggregateOf(this, expression) @OverloadResolutionByLambdaReturnType public inline fun DataFrame.percentileOf( @@ -317,7 +311,7 @@ public inline fun DataFrame.percentileOf( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): Double - where R : Comparable?, R : Number? = + where R : Comparable<*>?, R : Number? = percentileOfOrNull(percentile, skipNaN, expression).suggestIfNull("percentileOf") @OverloadResolutionByLambdaReturnType @@ -326,10 +320,10 @@ public inline fun DataFrame.percentileOfOrNull( skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): Double? - where R : Comparable?, R : Number? = - Aggregators.percentileNumbers(percentile, skipNaN).aggregateOf(this, expression) + where R : Comparable<*>?, R : Number? = + Aggregators.percentile(percentile, skipNaN).cast2().aggregateOf(this, expression) -public inline fun ?> DataFrame.percentileBy( +public inline fun ?> DataFrame.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, @@ -343,7 +337,7 @@ public fun DataFrame.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.percentileBy( +public inline fun ?> DataFrame.percentileBy( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -351,17 +345,17 @@ public inline fun ?> DataFrame.percentileB @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.percentileBy( +public inline fun ?> DataFrame.percentileBy( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = percentileByOrNull(percentile, column, skipNaN).suggestIfNull("percentileBy") -public inline fun ?> DataFrame.percentileByOrNull( +public inline fun ?> DataFrame.percentileByOrNull( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataRow? = Aggregators.percentileCommon(percentile, skipNaN).aggregateByOrNull(this, expression) +): DataRow? = Aggregators.percentile(percentile, skipNaN).cast().aggregateByOrNull(this, expression) public fun DataFrame.percentileByOrNull( percentile: Double, @@ -371,15 +365,15 @@ public fun DataFrame.percentileByOrNull( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.percentileByOrNull( +public inline fun ?> DataFrame.percentileByOrNull( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, -): DataRow? = Aggregators.percentileCommon(percentile, skipNaN).aggregateByOrNull(this, column) +): DataRow? = Aggregators.percentile(percentile, skipNaN).cast().aggregateByOrNull(this, column) @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> DataFrame.percentileByOrNull( +public inline fun ?> DataFrame.percentileByOrNull( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, @@ -422,12 +416,12 @@ public fun ?> Grouped.percentileFor( @Refine @Interpretable("GroupByPercentile2") -public fun ?> Grouped.percentile( +public fun ?> Grouped.percentile( percentile: Double, name: String? = null, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.percentileCommon(percentile, skipNaN).aggregateAll(this, name, columns) +): DataFrame = Aggregators.percentile(percentile, skipNaN).cast().aggregateAll(this, name, columns) public fun Grouped.percentile( percentile: Double, @@ -438,7 +432,7 @@ public fun Grouped.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.percentile( +public fun ?> Grouped.percentile( percentile: Double, vararg columns: ColumnReference, name: String? = null, @@ -447,7 +441,7 @@ public fun ?> Grouped.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Grouped.percentile( +public fun ?> Grouped.percentile( percentile: Double, vararg columns: KProperty, name: String? = null, @@ -456,15 +450,15 @@ public fun ?> Grouped.percentile( @Refine @Interpretable("GroupByPercentileOf") -public inline fun ?> Grouped.percentileOf( +public inline fun ?> Grouped.percentileOf( percentile: Double, name: String? = null, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.percentileCommon(percentile, skipNaN).aggregateOf(this, name, expression) +): DataFrame = Aggregators.percentile(percentile, skipNaN).cast().aggregateOf(this, name, expression) @Interpretable("GroupByReduceExpression") // TODO? -public inline fun ?> GroupBy.percentileBy( +public inline fun ?> GroupBy.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, @@ -472,7 +466,7 @@ public inline fun ?> GroupBy.percent @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.percentileBy( +public inline fun ?> GroupBy.percentileBy( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -486,7 +480,7 @@ public fun GroupBy.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> GroupBy.percentileBy( +public inline fun ?> GroupBy.percentileBy( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, @@ -534,7 +528,7 @@ public fun ?> Pivot.percentileFor( skipNaN: Boolean = skipNaNDefault, ): DataRow = percentileFor(percentile, separate, skipNaN) { columns.toColumnSet() } -public fun ?> Pivot.percentile( +public fun ?> Pivot.percentile( percentile: Double, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, @@ -548,7 +542,7 @@ public fun Pivot.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.percentile( +public fun ?> Pivot.percentile( percentile: Double, vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -556,19 +550,19 @@ public fun ?> Pivot.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> Pivot.percentile( +public fun ?> Pivot.percentile( percentile: Double, vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataRow = percentile(percentile, skipNaN) { columns.toColumnSet() } -public inline fun ?> Pivot.percentileOf( +public inline fun ?> Pivot.percentileOf( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, ): DataRow = delegate { percentileOf(percentile, skipNaN, expression) } -public inline fun ?> Pivot.percentileBy( +public inline fun ?> Pivot.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, @@ -576,7 +570,7 @@ public inline fun ?> Pivot.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.percentileBy( +public inline fun ?> Pivot.percentileBy( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -590,7 +584,7 @@ public fun Pivot.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> Pivot.percentileBy( +public inline fun ?> Pivot.percentileBy( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, @@ -637,11 +631,11 @@ public fun ?> PivotGroupBy.percentileFor( skipNaN: Boolean = skipNaNDefault, ): DataFrame = percentileFor(percentile, separate, skipNaN) { columns.toColumnSet() } -public fun ?> PivotGroupBy.percentile( +public fun ?> PivotGroupBy.percentile( percentile: Double, skipNaN: Boolean = skipNaNDefault, columns: ColumnsSelector, -): DataFrame = Aggregators.percentileCommon(percentile, skipNaN).aggregateAll(this, columns) +): DataFrame = Aggregators.percentile(percentile, skipNaN).cast().aggregateAll(this, columns) public fun PivotGroupBy.percentile( percentile: Double, @@ -651,7 +645,7 @@ public fun PivotGroupBy.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.percentile( +public fun ?> PivotGroupBy.percentile( percentile: Double, vararg columns: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -659,19 +653,19 @@ public fun ?> PivotGroupBy.percentile( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public fun ?> PivotGroupBy.percentile( +public fun ?> PivotGroupBy.percentile( percentile: Double, vararg columns: KProperty, skipNaN: Boolean = skipNaNDefault, ): DataFrame = percentile(percentile, skipNaN) { columns.toColumnSet() } -public inline fun ?> PivotGroupBy.percentileOf( +public inline fun ?> PivotGroupBy.percentileOf( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline expression: RowExpression, -): DataFrame = Aggregators.percentileCommon(percentile, skipNaN).aggregateOf(this, expression) +): DataFrame = Aggregators.percentile(percentile, skipNaN).cast().aggregateOf(this, expression) -public inline fun ?> PivotGroupBy.percentileBy( +public inline fun ?> PivotGroupBy.percentileBy( percentile: Double, skipNaN: Boolean = skipNaNDefault, crossinline rowExpression: RowExpression, @@ -679,7 +673,7 @@ public inline fun ?> PivotGroupBy.percenti @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.percentileBy( +public inline fun ?> PivotGroupBy.percentileBy( percentile: Double, column: ColumnReference, skipNaN: Boolean = skipNaNDefault, @@ -693,7 +687,7 @@ public fun PivotGroupBy.percentileBy( @Deprecated(DEPRECATED_ACCESS_API) @AccessApiOverload -public inline fun ?> PivotGroupBy.percentileBy( +public inline fun ?> PivotGroupBy.percentileBy( percentile: Double, column: KProperty, skipNaN: Boolean = skipNaNDefault, From 378ae5bc6585c91e40d08607c24debe349c39f4e Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Tue, 25 Nov 2025 18:17:57 +0400 Subject: [PATCH 04/16] increase Gradle JVM heap size to 32G --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 532fc3a057..464306775d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ projectName=dataframe version=1.0.0 jupyterApiTCRepo= kotlin.jupyter.add.scanner=false -org.gradle.jvmargs=-Xmx16G -Duser.language=en -Duser.country=US -Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Xmx32G -Duser.language=en -Duser.country=US -Dfile.encoding=UTF-8 # build.number.detection=false # build.number=0.8.0 From 057598817a9da26f372e156cd6c22882ffe71a70 Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Tue, 25 Nov 2025 18:44:31 +0400 Subject: [PATCH 05/16] Revert "increase Gradle JVM heap size to 32G" This reverts commit 378ae5bc6585c91e40d08607c24debe349c39f4e. --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 464306775d..532fc3a057 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ projectName=dataframe version=1.0.0 jupyterApiTCRepo= kotlin.jupyter.add.scanner=false -org.gradle.jvmargs=-Xmx32G -Duser.language=en -Duser.country=US -Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Xmx16G -Duser.language=en -Duser.country=US -Dfile.encoding=UTF-8 # build.number.detection=false # build.number=0.8.0 From 49d1d983960f50937d35883ae69d55d241f44ae0 Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Tue, 25 Nov 2025 18:44:57 +0400 Subject: [PATCH 06/16] temporary ignore notebooks tests --- .../jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt index d935473f3f..7cad1033cf 100644 --- a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt +++ b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlinx.jupyter.repl.result.EvalResultEx import org.junit.Assume import org.junit.AssumptionViolatedException import org.junit.Before +import org.junit.Ignore import org.junit.Test import java.io.File import java.util.Locale @@ -18,6 +19,7 @@ import java.util.Locale * debug mode is on: * `kotlin.dataframe.debug=true` */ +@Ignore class SampleNotebooksTests : DataFrameJupyterTest() { /** From b2c652819c1b275ba8f645574bbfae68abe87dbd Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Wed, 26 Nov 2025 12:53:23 +0400 Subject: [PATCH 07/16] add kandy geo to dataframe-jupyter tests --- dataframe-jupyter/build.gradle.kts | 6 +++++- .../dataframe/jupyter/SampleNotebooksTests.kt | 1 - gradle/libs.versions.toml | 16 ++++------------ 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/dataframe-jupyter/build.gradle.kts b/dataframe-jupyter/build.gradle.kts index 00723fc9c1..4c41463267 100644 --- a/dataframe-jupyter/build.gradle.kts +++ b/dataframe-jupyter/build.gradle.kts @@ -36,7 +36,11 @@ dependencies { testImplementation(projects.dataframeJupyter) testImplementation(projects.dataframeGeoJupyter) - testImplementation(libs.kandy.notebook) { + + testImplementation(libs.kandy) { + exclude("org.jetbrains.kotlinx", "dataframe") + } + testImplementation(libs.kandy.geo) { exclude("org.jetbrains.kotlinx", "dataframe") } testImplementation(libs.kandy.stats) { diff --git a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt index 7cad1033cf..dfc87e7a5e 100644 --- a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt +++ b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt @@ -19,7 +19,6 @@ import java.util.Locale * debug mode is on: * `kotlin.dataframe.debug=true` */ -@Ignore class SampleNotebooksTests : DataFrameJupyterTest() { /** diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 152eca7023..cf2f637c51 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -62,12 +62,8 @@ geotools = "33.2" jai-core = "1.1.3" jts = "1.20.0" -# Normal examples Kandy versions -kandy = "0.8.2-dev-90" - -# Example notebooks Kandy versions -kandy-notebook = "0.8.1n" -kandy-stats-notebook = "0.5.0n" +kandy = "0.8.3-dev-91" +kandy-stats= "0.5.0n" exposed = "1.0.0-beta-2" hibernate = "6.5.2.Final" @@ -106,14 +102,10 @@ mysql = { group = "com.mysql", name = "mysql-connector-j", version.ref = "mysql" postgresql = { group = "org.postgresql", name = "postgresql", version.ref = "postgresql" } sqlite = { group = "org.xerial", name = "sqlite-jdbc", version.ref = "sqlite" } -# Example notebooks Kandy versions -kandy-notebook = { group = "org.jetbrains.kotlinx", name = "kandy-lets-plot", version.ref = "kandy-notebook" } -# -- Requires repo: https://packages.jetbrains.team/maven/p/kds/kotlin-ds-maven -kandy-stats = { group = "org.jetbrains.kotlinx", name = "kotlin-statistics-jvm", version.ref = "kandy-stats-notebook" } - -# Normal examples Kandy versions kandy = { group = "org.jetbrains.kotlinx", name = "kandy-lets-plot", version.ref = "kandy" } +kandy-geo = { group = "org.jetbrains.kotlinx", name = "kandy-geo", version.ref = "kandy" } kandy-samples-utils = { group = "org.jetbrains.kotlinx", name = "kandy-samples-utils", version.ref = "kandy" } +kandy-stats = { group = "org.jetbrains.kotlinx", name = "kotlin-statistics-jvm", version.ref = "kandy-stats" } poi-ooxml = { group = "org.apache.poi", name = "poi-ooxml", version.ref = "poi" } kotlin-datetimeJvm = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime-jvm", version.ref = "kotlinDatetime" } From 2c6324cb65a52f15be8dc8994cecf3012772f048 Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Wed, 26 Nov 2025 12:54:31 +0400 Subject: [PATCH 08/16] ktlint format --- .../jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt index dfc87e7a5e..d935473f3f 100644 --- a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt +++ b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlinx.jupyter.repl.result.EvalResultEx import org.junit.Assume import org.junit.AssumptionViolatedException import org.junit.Before -import org.junit.Ignore import org.junit.Test import java.io.File import java.util.Locale From 07fcff99109f850c40f9582c5e5205c925d49ad0 Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Wed, 26 Nov 2025 13:23:17 +0400 Subject: [PATCH 09/16] ignore netflix notebook --- .../jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt index d935473f3f..e4ab2de87d 100644 --- a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt +++ b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlinx.jupyter.repl.result.EvalResultEx import org.junit.Assume import org.junit.AssumptionViolatedException import org.junit.Before +import org.junit.Ignore import org.junit.Test import java.io.File import java.util.Locale @@ -62,6 +63,7 @@ class SampleNotebooksTests : DataFrameJupyterTest() { ), ) + @Ignore @Test fun netflix() { val currentLocale = Locale.getDefault() From b84920dbb59565e8f00d0b999848133942817b9a Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Wed, 26 Nov 2025 16:29:52 +0400 Subject: [PATCH 10/16] increase tests heap size --- dataframe-jupyter/build.gradle.kts | 2 +- .../jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt | 1 - gradle/libs.versions.toml | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/dataframe-jupyter/build.gradle.kts b/dataframe-jupyter/build.gradle.kts index 4c41463267..517442e38d 100644 --- a/dataframe-jupyter/build.gradle.kts +++ b/dataframe-jupyter/build.gradle.kts @@ -65,7 +65,7 @@ tasks.processJupyterApiResources { } tasks.test { - maxHeapSize = "2048m" + maxHeapSize = "8192m" } kotlinPublications { diff --git a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt index e4ab2de87d..dfc87e7a5e 100644 --- a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt +++ b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt @@ -63,7 +63,6 @@ class SampleNotebooksTests : DataFrameJupyterTest() { ), ) - @Ignore @Test fun netflix() { val currentLocale = Locale.getDefault() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cf2f637c51..72d4b3f743 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -63,7 +63,7 @@ jai-core = "1.1.3" jts = "1.20.0" kandy = "0.8.3-dev-91" -kandy-stats= "0.5.0n" +kandy-stats= "0.5.1-dev-1" exposed = "1.0.0-beta-2" hibernate = "6.5.2.Final" From 6376365599654a082a5d272327703f6de78a63ae Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Wed, 26 Nov 2025 16:36:41 +0400 Subject: [PATCH 11/16] ktlint format --- .../jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt index dfc87e7a5e..d935473f3f 100644 --- a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt +++ b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlinx.jupyter.repl.result.EvalResultEx import org.junit.Assume import org.junit.AssumptionViolatedException import org.junit.Before -import org.junit.Ignore import org.junit.Test import java.io.File import java.util.Locale From 495b54c002feceb7f32cac5139c8f247f5fbfe1b Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Tue, 2 Dec 2025 18:33:44 +0400 Subject: [PATCH 12/16] ignore notebook tests --- .../jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt index d935473f3f..7cad1033cf 100644 --- a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt +++ b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlinx.jupyter.repl.result.EvalResultEx import org.junit.Assume import org.junit.AssumptionViolatedException import org.junit.Before +import org.junit.Ignore import org.junit.Test import java.io.File import java.util.Locale @@ -18,6 +19,7 @@ import java.util.Locale * debug mode is on: * `kotlin.dataframe.debug=true` */ +@Ignore class SampleNotebooksTests : DataFrameJupyterTest() { /** From 3fe1eeb45b4a2be10e128eb9f6d927c12607c72e Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Wed, 3 Dec 2025 13:11:55 +0400 Subject: [PATCH 13/16] unignore notebook tests --- .../jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt index 7cad1033cf..dfc87e7a5e 100644 --- a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt +++ b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt @@ -19,7 +19,6 @@ import java.util.Locale * debug mode is on: * `kotlin.dataframe.debug=true` */ -@Ignore class SampleNotebooksTests : DataFrameJupyterTest() { /** From 1517c57a123d50ad58ac0ea32f5d31365bc1dd18 Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Wed, 3 Dec 2025 13:13:36 +0400 Subject: [PATCH 14/16] remove unused import --- .../jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt index dfc87e7a5e..d935473f3f 100644 --- a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt +++ b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlinx.jupyter.repl.result.EvalResultEx import org.junit.Assume import org.junit.AssumptionViolatedException import org.junit.Before -import org.junit.Ignore import org.junit.Test import java.io.File import java.util.Locale From 63736072db1dc6b9635a0a933183d8807fcb5c61 Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Wed, 3 Dec 2025 13:45:22 +0400 Subject: [PATCH 15/16] ignore notebook tests --- .../jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt index d935473f3f..7cad1033cf 100644 --- a/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt +++ b/dataframe-jupyter/src/test/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/SampleNotebooksTests.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlinx.jupyter.repl.result.EvalResultEx import org.junit.Assume import org.junit.AssumptionViolatedException import org.junit.Before +import org.junit.Ignore import org.junit.Test import java.io.File import java.util.Locale @@ -18,6 +19,7 @@ import java.util.Locale * debug mode is on: * `kotlin.dataframe.debug=true` */ +@Ignore class SampleNotebooksTests : DataFrameJupyterTest() { /** From 681c34aa95ed8c888e052d60427c330d83c7732e Mon Sep 17 00:00:00 2001 From: "andrei.kislitsyn" Date: Wed, 3 Dec 2025 20:42:25 +0400 Subject: [PATCH 16/16] update version to 1.0.0-Beta4n --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 532fc3a057..5612ca868c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ projectName=dataframe -version=1.0.0 +version=1.0.0-Beta4n jupyterApiTCRepo= kotlin.jupyter.add.scanner=false org.gradle.jvmargs=-Xmx16G -Duser.language=en -Duser.country=US -Dfile.encoding=UTF-8