Skip to content

Commit 36fd883

Browse files
committed
renamed isInterComparable to valuesAreComparable based on feedback
1 parent 8889e13 commit 36fd883

File tree

8 files changed

+32
-29
lines changed

8 files changed

+32
-29
lines changed

core/api/core.api

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4150,12 +4150,12 @@ public final class org/jetbrains/kotlinx/dataframe/api/DataColumnTypeKt {
41504150
public static final fun isColumnGroup (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
41514151
public static final fun isComparable (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
41524152
public static final fun isFrameColumn (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
4153-
public static final fun isInterComparable (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
41544153
public static final fun isList (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
41554154
public static final fun isNumber (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
41564155
public static final fun isPrimitive (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
41574156
public static final fun isSubtypeOf (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Lkotlin/reflect/KType;)Z
41584157
public static final fun isValueColumn (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
4158+
public static final fun valuesAreComparable (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Z
41594159
}
41604160

41614161
public final class org/jetbrains/kotlinx/dataframe/api/DataFrameBuilder {

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,22 +53,25 @@ public fun AnyCol.isBigNumber(): Boolean = isSubtypeOf<BigInteger?>() || isSubty
5353

5454
public fun AnyCol.isList(): Boolean = typeClass == List::class
5555

56-
/** @include [isInterComparable] */
56+
/** @include [valuesAreComparable] */
5757
@Deprecated(
5858
message = IS_COMPARABLE,
5959
replaceWith = ReplaceWith(IS_COMPARABLE_REPLACE, IS_INTER_COMPARABLE_IMPORT),
6060
level = DeprecationLevel.WARNING,
6161
)
62-
public fun AnyCol.isComparable(): Boolean = isInterComparable()
62+
public fun AnyCol.isComparable(): Boolean = valuesAreComparable()
6363

6464
/**
6565
* Returns `true` if [this] column is inter-comparable, i.e.
66-
* its elements can be compared with each other.
66+
* its values can be compared with each other and thus ordered.
6767
*
68-
* Technically, this means the elements' common type is a subtype of [Comparable] with
68+
* If true, operations like [`min()`][AnyCol.min], [`max()`][AnyCol.max], [`median()`][AnyCol.median], etc.
69+
* will work.
70+
*
71+
* Technically, this means the values' common type is a subtype of [Comparable] with
6972
* the type argument not being [Nothing].
7073
*/
71-
public fun AnyCol.isInterComparable(): Boolean =
74+
public fun AnyCol.valuesAreComparable(): Boolean =
7275
isSubtypeOf<Comparable<*>?>() &&
7376
type().projectTo(Comparable::class).arguments[0].let {
7477
it != KTypeProjection.STAR &&

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(isInterComparable())
86+
require(valuesAreComparable())
8787
return this as DataColumn<Comparable<T>>
8888
}
8989

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ 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.isInterComparable
98
import org.jetbrains.kotlinx.dataframe.api.isNumber
9+
import org.jetbrains.kotlinx.dataframe.api.valuesAreComparable
1010
import org.jetbrains.kotlinx.dataframe.columns.TypeSuggestion
1111
import org.jetbrains.kotlinx.dataframe.impl.columns.createColumnGuessingType
1212

@@ -15,7 +15,7 @@ internal inline fun <T> Aggregatable<T>.remainingColumns(
1515
): ColumnsSelector<T, Any?> = remainingColumnsSelector().filter { predicate(it.data) }
1616

1717
internal fun <T> Aggregatable<T>.interComparableColumns() =
18-
remainingColumns { it.isInterComparable() } as ColumnsSelector<T, Comparable<Any?>>
18+
remainingColumns { it.valuesAreComparable() } 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: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import org.jetbrains.kotlinx.dataframe.api.asComparable
1212
import org.jetbrains.kotlinx.dataframe.api.asNumbers
1313
import org.jetbrains.kotlinx.dataframe.api.cast
1414
import org.jetbrains.kotlinx.dataframe.api.concat
15-
import org.jetbrains.kotlinx.dataframe.api.isInterComparable
1615
import org.jetbrains.kotlinx.dataframe.api.isNumber
1716
import org.jetbrains.kotlinx.dataframe.api.map
1817
import org.jetbrains.kotlinx.dataframe.api.maxOrNull
@@ -23,6 +22,7 @@ import org.jetbrains.kotlinx.dataframe.api.move
2322
import org.jetbrains.kotlinx.dataframe.api.name
2423
import org.jetbrains.kotlinx.dataframe.api.std
2524
import org.jetbrains.kotlinx.dataframe.api.toDataFrame
25+
import org.jetbrains.kotlinx.dataframe.api.valuesAreComparable
2626
import org.jetbrains.kotlinx.dataframe.columns.ColumnKind
2727
import org.jetbrains.kotlinx.dataframe.columns.size
2828
import org.jetbrains.kotlinx.dataframe.columns.values
@@ -39,7 +39,7 @@ internal fun describeImpl(cols: List<AnyCol>): DataFrame<ColumnDescription> {
3939
val allCols = cols.collectAll(false)
4040

4141
val hasNumericCols = allCols.any { it.isNumber() }
42-
val hasInterComparableCols = allCols.any { it.isInterComparable() }
42+
val hasComparableCols = allCols.any { it.valuesAreComparable() }
4343
val hasLongPaths = allCols.any { it.path().size > 1 }
4444
var df = allCols.toDataFrame {
4545
ColumnDescription::name from { it.name() }
@@ -59,15 +59,15 @@ internal fun describeImpl(cols: List<AnyCol>): DataFrame<ColumnDescription> {
5959
ColumnDescription::mean from { if (it.isNumber()) it.asNumbers().mean() else null }
6060
ColumnDescription::std from { if (it.isNumber()) it.asNumbers().std() else null }
6161
}
62-
if (hasInterComparableCols || hasNumericCols) {
62+
if (hasComparableCols || hasNumericCols) {
6363
ColumnDescription::min from inferType {
64-
it.convertToInterComparableOrNull()?.minOrNull()
64+
it.convertToComparableOrNull()?.minOrNull()
6565
}
6666
ColumnDescription::median from inferType {
67-
it.convertToInterComparableOrNull()?.medianOrNull()
67+
it.convertToComparableOrNull()?.medianOrNull()
6868
}
6969
ColumnDescription::max from inferType {
70-
it.convertToInterComparableOrNull()?.maxOrNull()
70+
it.convertToComparableOrNull()?.maxOrNull()
7171
}
7272
}
7373
}
@@ -105,9 +105,9 @@ private fun List<AnyCol>.collectAll(atAnyDepth: Boolean): List<AnyCol> =
105105
}
106106

107107
/** Converts a column to a comparable column if it is not already comparable. */
108-
private fun DataColumn<Any?>.convertToInterComparableOrNull(): DataColumn<Comparable<Any?>>? =
108+
private fun DataColumn<Any?>.convertToComparableOrNull(): DataColumn<Comparable<Any?>>? =
109109
when {
110-
isInterComparable() -> asComparable()
110+
valuesAreComparable() -> asComparable()
111111

112112
// Found incomparable number types, convert all to Double or BigDecimal first
113113
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,10 +28,10 @@ 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.isInterComparable
3231
import org.jetbrains.kotlinx.dataframe.api.sortWith
3332
import org.jetbrains.kotlinx.dataframe.api.toDataFrame
3433
import org.jetbrains.kotlinx.dataframe.api.values
34+
import org.jetbrains.kotlinx.dataframe.api.valuesAreComparable
3535
import org.jetbrains.kotlinx.dataframe.columns.ColumnPath
3636
import org.jetbrains.kotlinx.dataframe.impl.ColumnNameGenerator
3737

@@ -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).isInterComparable()) {
110+
val comparisonResult = if (row1.df().getColumn(key).valuesAreComparable()) {
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: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ internal const val PARSER_OPTIONS = "This constructor is only here for binary co
4545
internal const val PARSER_OPTIONS_COPY = "This function is only here for binary compatibility. $MESSAGE_0_16"
4646

4747
internal const val IS_COMPARABLE =
48-
"This function is replaced by `isInterComparable()` to better reflect its purpose. $MESSAGE_0_16"
49-
internal const val IS_COMPARABLE_REPLACE = "isInterComparable()"
50-
internal const val IS_INTER_COMPARABLE_IMPORT = "org.jetbrains.kotlinx.dataframe.api.isInterComparable"
48+
"This function is replaced by `valuesAreComparable()` to better reflect its purpose. $MESSAGE_0_16"
49+
internal const val IS_COMPARABLE_REPLACE = "valuesAreComparable()"
50+
internal const val IS_INTER_COMPARABLE_IMPORT = "org.jetbrains.kotlinx.dataframe.api.valuesAreComparable"
5151

5252
// endregion
5353

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
@@ -83,7 +83,6 @@ import org.jetbrains.kotlinx.dataframe.api.intoRows
8383
import org.jetbrains.kotlinx.dataframe.api.isColumnGroup
8484
import org.jetbrains.kotlinx.dataframe.api.isEmpty
8585
import org.jetbrains.kotlinx.dataframe.api.isFrameColumn
86-
import org.jetbrains.kotlinx.dataframe.api.isInterComparable
8786
import org.jetbrains.kotlinx.dataframe.api.isNA
8887
import org.jetbrains.kotlinx.dataframe.api.isNumber
8988
import org.jetbrains.kotlinx.dataframe.api.keysInto
@@ -156,6 +155,7 @@ import org.jetbrains.kotlinx.dataframe.api.ungroup
156155
import org.jetbrains.kotlinx.dataframe.api.update
157156
import org.jetbrains.kotlinx.dataframe.api.value
158157
import org.jetbrains.kotlinx.dataframe.api.values
158+
import org.jetbrains.kotlinx.dataframe.api.valuesAreComparable
159159
import org.jetbrains.kotlinx.dataframe.api.valuesNotNull
160160
import org.jetbrains.kotlinx.dataframe.api.where
161161
import org.jetbrains.kotlinx.dataframe.api.with
@@ -2445,12 +2445,12 @@ class DataFrameTests : BaseTest() {
24452445
ComparableTest(2, 2, "b", "b", "2", "2"),
24462446
).toDataFrame()
24472447

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
2448+
df.int.valuesAreComparable() shouldBe true
2449+
df.comparableInt.valuesAreComparable() shouldBe true
2450+
df.string.valuesAreComparable() shouldBe true
2451+
df.comparableString.valuesAreComparable() shouldBe true
2452+
df.comparableStar.valuesAreComparable() shouldBe false
2453+
df.comparableNothing.valuesAreComparable() shouldBe false
24542454
}
24552455

24562456
@Test

0 commit comments

Comments
 (0)