Skip to content

Commit 966447d

Browse files
committed
renamed isComparable to isInterComparable to better reflect what it does. (It kept confusing me)
1 parent 563d367 commit 966447d

File tree

10 files changed

+54
-36
lines changed

10 files changed

+54
-36
lines changed

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

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ import org.jetbrains.kotlinx.dataframe.impl.isNothing
1111
import org.jetbrains.kotlinx.dataframe.impl.projectTo
1212
import org.jetbrains.kotlinx.dataframe.type
1313
import org.jetbrains.kotlinx.dataframe.typeClass
14+
import org.jetbrains.kotlinx.dataframe.util.IS_COMPARABLE
15+
import org.jetbrains.kotlinx.dataframe.util.IS_COMPARABLE_REPLACE
16+
import org.jetbrains.kotlinx.dataframe.util.IS_INTER_COMPARABLE_IMPORT
1417
import java.math.BigDecimal
1518
import java.math.BigInteger
1619
import kotlin.contracts.ExperimentalContracts
@@ -50,11 +53,22 @@ public fun AnyCol.isBigNumber(): Boolean = isSubtypeOf<BigInteger?>() || isSubty
5053

5154
public fun AnyCol.isList(): Boolean = typeClass == List::class
5255

56+
/** @include [isInterComparable] */
57+
@Deprecated(
58+
message = IS_COMPARABLE,
59+
replaceWith = ReplaceWith(IS_COMPARABLE_REPLACE, IS_INTER_COMPARABLE_IMPORT),
60+
level = DeprecationLevel.WARNING,
61+
)
62+
public fun AnyCol.isComparable(): Boolean = isInterComparable()
63+
5364
/**
54-
* Returns `true` if [this] column is comparable, i.e. its type is a subtype of [Comparable] and its
55-
* type argument is not [Nothing].
65+
* Returns `true` if [this] column is inter-comparable, i.e.
66+
* its elements can be compared with each other.
67+
*
68+
* Technically, this means the elements' common type is a subtype of [Comparable] with
69+
* the type argument not being [Nothing].
5670
*/
57-
public fun AnyCol.isComparable(): Boolean =
71+
public fun AnyCol.isInterComparable(): Boolean =
5872
isSubtypeOf<Comparable<*>?>() &&
5973
type().projectTo(Comparable::class).arguments[0].let {
6074
it != KTypeProjection.STAR &&

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

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

5353
// region DataFrame
5454

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

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

122122
// region GroupBy
123123

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

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

219219
// region PivotGroupBy
220220

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

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

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

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

5454
// region DataFrame
5555

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

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

9797
// region GroupBy
9898

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

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

135135
// region Pivot
136136

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

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

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

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

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

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

5353
// region DataFrame
5454

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

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

122122
// region GroupBy
123123

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

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

220220
// region PivotGroupBy
221221

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

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

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

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

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

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/aggregation/getColumns.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import org.jetbrains.kotlinx.dataframe.ColumnsSelector
55
import org.jetbrains.kotlinx.dataframe.aggregation.Aggregatable
66
import org.jetbrains.kotlinx.dataframe.aggregation.NamedValue
77
import org.jetbrains.kotlinx.dataframe.api.filter
8-
import org.jetbrains.kotlinx.dataframe.api.isComparable
8+
import org.jetbrains.kotlinx.dataframe.api.isInterComparable
99
import org.jetbrains.kotlinx.dataframe.api.isNumber
1010
import org.jetbrains.kotlinx.dataframe.columns.TypeSuggestion
1111
import org.jetbrains.kotlinx.dataframe.impl.columns.createColumnGuessingType
@@ -14,8 +14,8 @@ internal inline fun <T> Aggregatable<T>.remainingColumns(
1414
crossinline predicate: (AnyCol) -> Boolean,
1515
): ColumnsSelector<T, Any?> = remainingColumnsSelector().filter { predicate(it.data) }
1616

17-
internal fun <T> Aggregatable<T>.comparableColumns() =
18-
remainingColumns { it.isComparable() } as ColumnsSelector<T, Comparable<Any?>>
17+
internal fun <T> Aggregatable<T>.interComparableColumns() =
18+
remainingColumns { it.isInterComparable() } as ColumnsSelector<T, Comparable<Any?>>
1919

2020
internal fun <T> Aggregatable<T>.numberColumns() = remainingColumns { it.isNumber() } as ColumnsSelector<T, Number?>
2121

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/api/describe.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import org.jetbrains.kotlinx.dataframe.api.asComparable
1111
import org.jetbrains.kotlinx.dataframe.api.asNumbers
1212
import org.jetbrains.kotlinx.dataframe.api.cast
1313
import org.jetbrains.kotlinx.dataframe.api.concat
14-
import org.jetbrains.kotlinx.dataframe.api.isComparable
14+
import org.jetbrains.kotlinx.dataframe.api.isInterComparable
1515
import org.jetbrains.kotlinx.dataframe.api.isNumber
1616
import org.jetbrains.kotlinx.dataframe.api.map
1717
import org.jetbrains.kotlinx.dataframe.api.maxOrNull
@@ -62,7 +62,7 @@ internal fun describeImpl(cols: List<AnyCol>): DataFrame<ColumnDescription> {
6262
val allCols = cols.collectAll(false)
6363

6464
val hasNumericCols = allCols.any { it.isNumber() }
65-
val hasInterComparableCols = allCols.any { it.isComparable() }
65+
val hasInterComparableCols = allCols.any { it.isInterComparable() }
6666
val hasLongPaths = allCols.any { it.path().size > 1 }
6767
var df = allCols.toDataFrame {
6868
ColumnDescription::name from { it.name() }
@@ -85,7 +85,7 @@ internal fun describeImpl(cols: List<AnyCol>): DataFrame<ColumnDescription> {
8585
if (hasInterComparableCols || hasNumericCols) {
8686
ColumnDescription::min from inferType {
8787
when {
88-
it.isComparable() ->
88+
it.isInterComparable() ->
8989
it.asComparable().minOrNull()
9090

9191
// Found incomparable number types, convert all to Double or BigDecimal first
@@ -101,7 +101,7 @@ internal fun describeImpl(cols: List<AnyCol>): DataFrame<ColumnDescription> {
101101
}
102102
ColumnDescription::median from inferType {
103103
when {
104-
it.isComparable() ->
104+
it.isInterComparable() ->
105105
it.asComparable().medianOrNull()
106106

107107
// Found incomparable number types, convert all to Double or BigDecimal first
@@ -117,7 +117,7 @@ internal fun describeImpl(cols: List<AnyCol>): DataFrame<ColumnDescription> {
117117
}
118118
ColumnDescription::max from inferType {
119119
when {
120-
it.isComparable() -> it.asComparable().maxOrNull()
120+
it.isInterComparable() -> it.asComparable().maxOrNull()
121121

122122
// Found incomparable number types, convert all to Double or BigDecimal first
123123
it.isNumber() ->

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/jupyter/KotlinNotebookPluginUtils.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import org.jetbrains.kotlinx.dataframe.api.dataFrameOf
2828
import org.jetbrains.kotlinx.dataframe.api.frames
2929
import org.jetbrains.kotlinx.dataframe.api.getColumn
3030
import org.jetbrains.kotlinx.dataframe.api.into
31-
import org.jetbrains.kotlinx.dataframe.api.isComparable
31+
import org.jetbrains.kotlinx.dataframe.api.isInterComparable
3232
import org.jetbrains.kotlinx.dataframe.api.sortWith
3333
import org.jetbrains.kotlinx.dataframe.api.toDataFrame
3434
import org.jetbrains.kotlinx.dataframe.api.values
@@ -107,7 +107,7 @@ public object KotlinNotebookPluginUtils {
107107
private fun createComparator(sortKeys: List<ColumnPath>, isDesc: List<Boolean>): Comparator<DataRow<*>> {
108108
return Comparator { row1, row2 ->
109109
for ((key, desc) in sortKeys.zip(isDesc)) {
110-
val comparisonResult = if (row1.df().getColumn(key).isComparable()) {
110+
val comparisonResult = if (row1.df().getColumn(key).isInterComparable()) {
111111
compareComparableValues(row1, row2, key, desc)
112112
} else {
113113
compareStringValues(row1, row2, key, desc)

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/util/deprecationMessages.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ package org.jetbrains.kotlinx.dataframe.util
99

1010
// region WARNING in 0.15, ERROR in 0.16
1111

12-
private const val MESSAGE_0_16 = "Will be removed in 0.16."
12+
private const val MESSAGE_0_16 = "Will be ERROR in 0.16."
1313

1414
internal const val DF_READ_NO_CSV = "This function is deprecated and should be replaced with `readCSV`. $MESSAGE_0_16"
1515
internal const val DF_READ_NO_CSV_REPLACE =
@@ -44,11 +44,15 @@ internal const val PARSER_OPTIONS = "This constructor is only here for binary co
4444

4545
internal const val PARSER_OPTIONS_COPY = "This function is only here for binary compatibility. $MESSAGE_0_16"
4646

47+
internal const val IS_COMPARABLE = "This function is replaced by `isInterComparable()` to better reflect its purpose. $MESSAGE_0_16"
48+
internal const val IS_COMPARABLE_REPLACE = "isInterComparable()"
49+
internal const val IS_INTER_COMPARABLE_IMPORT = "org.jetbrains.kotlinx.dataframe.api.isInterComparable"
50+
4751
// endregion
4852

4953
// region WARNING in 0.16, ERROR in 0.17
5054

51-
private const val MESSAGE_0_17 = "Will be removed in 0.17."
55+
private const val MESSAGE_0_17 = "Will be ERROR in 0.17."
5256

5357
// endregion
5458

core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/testSets/person/DataFrameTests.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@ import org.jetbrains.kotlinx.dataframe.api.intoColumns
8181
import org.jetbrains.kotlinx.dataframe.api.intoList
8282
import org.jetbrains.kotlinx.dataframe.api.intoRows
8383
import org.jetbrains.kotlinx.dataframe.api.isColumnGroup
84-
import org.jetbrains.kotlinx.dataframe.api.isComparable
8584
import org.jetbrains.kotlinx.dataframe.api.isEmpty
8685
import org.jetbrains.kotlinx.dataframe.api.isFrameColumn
86+
import org.jetbrains.kotlinx.dataframe.api.isInterComparable
8787
import org.jetbrains.kotlinx.dataframe.api.isNA
8888
import org.jetbrains.kotlinx.dataframe.api.isNumber
8989
import org.jetbrains.kotlinx.dataframe.api.keysInto
@@ -2445,12 +2445,12 @@ class DataFrameTests : BaseTest() {
24452445
ComparableTest(2, 2, "b", "b", "2", "2"),
24462446
).toDataFrame()
24472447

2448-
df.int.isComparable() shouldBe true
2449-
df.comparableInt.isComparable() shouldBe true
2450-
df.string.isComparable() shouldBe true
2451-
df.comparableString.isComparable() shouldBe true
2452-
df.comparableStar.isComparable() shouldBe false
2453-
df.comparableNothing.isComparable() shouldBe false
2448+
df.int.isInterComparable() shouldBe true
2449+
df.comparableInt.isInterComparable() shouldBe true
2450+
df.string.isInterComparable() shouldBe true
2451+
df.comparableString.isInterComparable() shouldBe true
2452+
df.comparableStar.isInterComparable() shouldBe false
2453+
df.comparableNothing.isInterComparable() shouldBe false
24542454
}
24552455

24562456
@Test

0 commit comments

Comments
 (0)