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 ee74961f1e..d602bfe00d 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("GroupByMax0") -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) @Refine @@ -626,7 +627,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) @@ -637,35 +638,33 @@ 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) @Refine @Interpretable("GroupByMaxOf") @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) @Interpretable("GroupByReduceExpression") @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) @@ -674,9 +673,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) @@ -706,32 +704,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) @@ -739,7 +737,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) @@ -770,7 +768,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) @@ -778,27 +776,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) @@ -807,8 +805,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 6a1b29daff..20e302c8e7 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 @@ -45,61 +47,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 @@ -162,21 +161,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") @@ -184,8 +183,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") @@ -195,12 +194,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) @@ -209,8 +208,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 @@ -218,16 +216,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) @@ -236,8 +234,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 @@ -245,37 +242,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") @@ -285,36 +281,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) @@ -352,11 +348,11 @@ public fun ?> Grouped.medianFor( @Refine @Interpretable("GroupByMedian0") -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, @@ -366,7 +362,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, @@ -374,7 +370,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, @@ -382,21 +378,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) } @@ -406,7 +402,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) @@ -446,7 +442,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) } @@ -456,31 +452,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) } @@ -490,7 +486,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) @@ -529,41 +525,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) } @@ -573,7 +569,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 a0c8603a7a..c70862a648 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("GroupByMin0") -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) @Refine @@ -626,7 +625,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) @@ -637,35 +636,33 @@ 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) @Refine @Interpretable("GroupByMinOf") @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) @Interpretable("GroupByReduceExpression") @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) @@ -674,9 +671,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) @@ -706,32 +702,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) @@ -739,7 +735,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) @@ -770,7 +766,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) @@ -778,27 +774,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) @@ -807,8 +803,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 b57bf16a3d..d768c67c22 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 @@ -46,53 +48,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( @@ -100,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 @@ -109,8 +111,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 @@ -182,18 +184,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( @@ -201,7 +201,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 @@ -211,8 +211,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, @@ -229,14 +229,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() } @@ -248,7 +246,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,19 +256,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() } @@ -282,7 +277,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) @@ -292,22 +287,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( @@ -315,7 +309,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 @@ -324,10 +318,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, @@ -341,7 +335,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, @@ -349,17 +343,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, @@ -369,15 +363,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, @@ -420,12 +414,12 @@ public fun ?> Grouped.percentileFor( @Refine @Interpretable("GroupByPercentile0") -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, @@ -436,7 +430,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, @@ -445,7 +439,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, @@ -454,15 +448,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, @@ -470,7 +464,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, @@ -484,7 +478,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, @@ -532,7 +526,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, @@ -546,7 +540,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, @@ -554,19 +548,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, @@ -574,7 +568,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, @@ -588,7 +582,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, @@ -635,11 +629,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, @@ -649,7 +643,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, @@ -657,19 +651,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, @@ -677,7 +671,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, @@ -691,7 +685,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,