Skip to content

Commit 868b8a1

Browse files
committed
update from master
1 parent 573d8bd commit 868b8a1

File tree

13 files changed

+230
-102
lines changed

13 files changed

+230
-102
lines changed

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

+4-4
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
1414
import org.jetbrains.kotlinx.dataframe.columns.toColumnSet
1515
import org.jetbrains.kotlinx.dataframe.columns.values
1616
import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators
17-
import org.jetbrains.kotlinx.dataframe.impl.aggregation.interComparableColumns
17+
import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns
1818
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll
1919
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateFor
2020
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateOfDelegated
@@ -55,7 +55,7 @@ public inline fun <reified T : Comparable<T>> AnyRow.rowMaxOf(): T = rowMaxOfOrN
5555

5656
// region DataFrame
5757

58-
public fun <T> DataFrame<T>.max(): DataRow<T> = maxFor(interComparableColumns())
58+
public fun <T> DataFrame<T>.max(): DataRow<T> = maxFor(intraComparableColumns())
5959

6060
public fun <T, C : Comparable<C>> DataFrame<T>.maxFor(columns: ColumnsForAggregateSelector<T, C?>): DataRow<T> =
6161
Aggregators.max.aggregateFor(this, columns)
@@ -135,7 +135,7 @@ public fun <T, C : Comparable<C>> DataFrame<T>.maxByOrNull(column: KProperty<C?>
135135
// region GroupBy
136136
@Refine
137137
@Interpretable("GroupByMax1")
138-
public fun <T> Grouped<T>.max(): DataFrame<T> = maxFor(interComparableColumns())
138+
public fun <T> Grouped<T>.max(): DataFrame<T> = maxFor(intraComparableColumns())
139139

140140
@Refine
141141
@Interpretable("GroupByMax0")
@@ -251,7 +251,7 @@ public fun <T, C : Comparable<C>> Pivot<T>.maxBy(column: KProperty<C?>): Reduced
251251

252252
// region PivotGroupBy
253253

254-
public fun <T> PivotGroupBy<T>.max(separate: Boolean = false): DataFrame<T> = maxFor(separate, interComparableColumns())
254+
public fun <T> PivotGroupBy<T>.max(separate: Boolean = false): DataFrame<T> = maxFor(separate, intraComparableColumns())
255255

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

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

+8-7
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
1414
import org.jetbrains.kotlinx.dataframe.columns.toColumnSet
1515
import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators
1616
import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.cast
17-
import org.jetbrains.kotlinx.dataframe.impl.aggregation.interComparableColumns
17+
import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns
1818
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll
1919
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateFor
2020
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateOf
@@ -41,8 +41,9 @@ public inline fun <T, reified R : Comparable<R>> DataColumn<T>.medianOf(noinline
4141
// region DataRow
4242

4343
public fun AnyRow.rowMedianOrNull(): Any? =
44-
Aggregators.median.aggregateMixed(
45-
values().filterIsInstance<Comparable<Any?>>().asIterable(),
44+
Aggregators.median.aggregateCalculatingType(
45+
values = values().filterIsInstance<Comparable<Any?>>().asIterable(),
46+
valueTypes = df().columns().filter { it.valuesAreComparable() }.map { it.type() }.toSet(),
4647
)
4748

4849
public fun AnyRow.rowMedian(): Any = rowMedianOrNull().suggestIfNull("rowMedian")
@@ -56,7 +57,7 @@ public inline fun <reified T : Comparable<T>> AnyRow.rowMedianOf(): T =
5657

5758
// region DataFrame
5859

59-
public fun <T> DataFrame<T>.median(): DataRow<T> = medianFor(interComparableColumns())
60+
public fun <T> DataFrame<T>.median(): DataRow<T> = medianFor(intraComparableColumns())
6061

6162
public fun <T, C : Comparable<C>> DataFrame<T>.medianFor(columns: ColumnsForAggregateSelector<T, C?>): DataRow<T> =
6263
Aggregators.median.aggregateFor(this, columns)
@@ -107,7 +108,7 @@ public inline fun <T, reified R : Comparable<R>> DataFrame<T>.medianOf(
107108
// region GroupBy
108109
@Refine
109110
@Interpretable("GroupByMedian1")
110-
public fun <T> Grouped<T>.median(): DataFrame<T> = medianFor(interComparableColumns())
111+
public fun <T> Grouped<T>.median(): DataFrame<T> = medianFor(intraComparableColumns())
111112

112113
@Refine
113114
@Interpretable("GroupByMedian0")
@@ -155,7 +156,7 @@ public inline fun <T, reified R : Comparable<R>> Grouped<T>.medianOf(
155156

156157
// region Pivot
157158

158-
public fun <T> Pivot<T>.median(separate: Boolean = false): DataRow<T> = medianFor(separate, interComparableColumns())
159+
public fun <T> Pivot<T>.median(separate: Boolean = false): DataRow<T> = medianFor(separate, intraComparableColumns())
159160

160161
public fun <T, C : Comparable<C>> Pivot<T>.medianFor(
161162
separate: Boolean = false,
@@ -199,7 +200,7 @@ public inline fun <T, reified R : Comparable<R>> Pivot<T>.medianOf(
199200
// region PivotGroupBy
200201

201202
public fun <T> PivotGroupBy<T>.median(separate: Boolean = false): DataFrame<T> =
202-
medianFor(separate, interComparableColumns())
203+
medianFor(separate, intraComparableColumns())
203204

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

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

+4-4
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
1414
import org.jetbrains.kotlinx.dataframe.columns.toColumnSet
1515
import org.jetbrains.kotlinx.dataframe.columns.values
1616
import org.jetbrains.kotlinx.dataframe.impl.aggregation.aggregators.Aggregators
17-
import org.jetbrains.kotlinx.dataframe.impl.aggregation.interComparableColumns
17+
import org.jetbrains.kotlinx.dataframe.impl.aggregation.intraComparableColumns
1818
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateAll
1919
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateFor
2020
import org.jetbrains.kotlinx.dataframe.impl.aggregation.modes.aggregateOfDelegated
@@ -55,7 +55,7 @@ public inline fun <reified T : Comparable<T>> AnyRow.rowMinOf(): T = rowMinOfOrN
5555

5656
// region DataFrame
5757

58-
public fun <T> DataFrame<T>.min(): DataRow<T> = minFor(interComparableColumns())
58+
public fun <T> DataFrame<T>.min(): DataRow<T> = minFor(intraComparableColumns())
5959

6060
public fun <T, C : Comparable<C>> DataFrame<T>.minFor(columns: ColumnsForAggregateSelector<T, C?>): DataRow<T> =
6161
Aggregators.min.aggregateFor(this, columns)
@@ -135,7 +135,7 @@ public fun <T, C : Comparable<C>> DataFrame<T>.minByOrNull(column: KProperty<C?>
135135
// region GroupBy
136136
@Refine
137137
@Interpretable("GroupByMin1")
138-
public fun <T> Grouped<T>.min(): DataFrame<T> = minFor(interComparableColumns())
138+
public fun <T> Grouped<T>.min(): DataFrame<T> = minFor(intraComparableColumns())
139139

140140
@Refine
141141
@Interpretable("GroupByMin0")
@@ -252,7 +252,7 @@ public fun <T, C : Comparable<C>> Pivot<T>.minBy(column: KProperty<C?>): Reduced
252252

253253
// region PivotGroupBy
254254

255-
public fun <T> PivotGroupBy<T>.min(separate: Boolean = false): DataFrame<T> = minFor(separate, interComparableColumns())
255+
public fun <T> PivotGroupBy<T>.min(separate: Boolean = false): DataFrame<T> = minFor(separate, intraComparableColumns())
256256

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

core/generated-sources/src/main/kotlin/org/jetbrains/kotlinx/dataframe/documentation/UnifyingNumbers.kt

+15-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.jetbrains.kotlinx.dataframe.documentation
22

3+
import org.jetbrains.kotlinx.dataframe.impl.UnifiedNumberTypeOptions
4+
35
/**
46
* ## Unifying Numbers
57
*
@@ -9,11 +11,11 @@ package org.jetbrains.kotlinx.dataframe.documentation
911
* The order is top-down from the most complex type to the simplest one.
1012
*
1113
* ```
12-
* BigDecimal
14+
* (BigDecimal)
1315
* / \
14-
* BigInteger \
16+
* (BigInteger) \
1517
* / \ \
16-
* ULong Long Double
18+
* <~ ULong Long ~> Double ..
1719
* .. | / | / | \..
1820
* \ | / | / |
1921
* UInt Int Float
@@ -27,16 +29,23 @@ package org.jetbrains.kotlinx.dataframe.documentation
2729
* For each number type in the graph, it holds that a number of that type can be expressed lossless by
2830
* a number of a more complex type (any of its parents).
2931
* This is either because the more complex type has a larger range or higher precision (in terms of bits).
32+
*
33+
* There are variants of this graph that exclude some types, such as `BigDecimal` and `BigInteger`.
34+
* In these cases `Double` could be considered the most complex type.
35+
* `Long`/`ULong` and `Double` could be joined to `Double`,
36+
* potentially losing a little precision, but a warning will be given.
37+
*
38+
* See [UnifiedNumberTypeOptions] for these settings.
3039
*/
3140
internal interface UnifyingNumbers {
3241

3342
/**
3443
* ```
35-
* BigDecimal
44+
* (BigDecimal)
3645
* / \
37-
* BigInteger \
46+
* (BigInteger) \
3847
* / \ \
39-
* ULong Long Double
48+
* <~ ULong Long ~> Double ..
4049
* .. | / | / | \..
4150
* \ | / | / |
4251
* UInt Int Float

0 commit comments

Comments
 (0)