Skip to content

Commit 04c0e56

Browse files
committed
cols(vararg) can now throw IllegalArgumentException for non-existing columns, with helpful message for the user. updated its test
1 parent a0c33ba commit 04c0e56

File tree

11 files changed

+570
-427
lines changed

11 files changed

+570
-427
lines changed

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

Lines changed: 73 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import org.jetbrains.kotlinx.dataframe.columns.ColumnWithPath
99
import org.jetbrains.kotlinx.dataframe.columns.ColumnsResolver
1010
import org.jetbrains.kotlinx.dataframe.columns.SingleColumn
1111
import org.jetbrains.kotlinx.dataframe.columns.toColumnSet
12+
import org.jetbrains.kotlinx.dataframe.documentation.LineBreak
13+
import org.jetbrains.kotlinx.dataframe.documentation.UsageTemplateColumnsSelectionDsl.UsageTemplate
1214
import org.jetbrains.kotlinx.dataframe.impl.aggregation.toColumns
1315
import org.jetbrains.kotlinx.dataframe.impl.columns.addParentPath
1416
import org.jetbrains.kotlinx.dataframe.impl.columns.allColumnsExceptAndUnpack
@@ -25,6 +27,68 @@ public interface AllExceptColumnsSelectionDsl<out T> {
2527

2628
// region except
2729

30+
/**
31+
* ## All (Except) Usage
32+
*
33+
*
34+
*
35+
* &nbsp;&nbsp;&nbsp;&nbsp;
36+
*
37+
* `columnSet: `[ColumnSet][org.jetbrains.kotlinx.dataframe.columns.ColumnSet]`<*>`
38+
*
39+
* &nbsp;&nbsp;&nbsp;&nbsp;
40+
*
41+
* `columnGroup: `[SingleColumn][org.jetbrains.kotlinx.dataframe.columns.SingleColumn]`<`[DataRow][org.jetbrains.kotlinx.dataframe.DataRow]`<*>> | `[String][String]
42+
*
43+
* &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
44+
* `| `[KProperty][kotlin.reflect.KProperty]`<*>` | `[ColumnPath][org.jetbrains.kotlinx.dataframe.columns.ColumnPath]
45+
*
46+
* &nbsp;&nbsp;&nbsp;&nbsp;
47+
*
48+
* `condition: `[ColumnFilter][org.jetbrains.kotlinx.dataframe.ColumnFilter]
49+
*
50+
* &nbsp;&nbsp;&nbsp;&nbsp;
51+
*
52+
* ### In the [ColumnsSelectionDsl][org.jetbrains.kotlinx.dataframe.api.ColumnsSelectionDsl]:
53+
*
54+
*
55+
* &nbsp;&nbsp;&nbsp;&nbsp;
56+
*
57+
*
58+
*
59+
* &nbsp;&nbsp;&nbsp;&nbsp;
60+
*
61+
* ### On a [ColumnSet][org.jetbrains.kotlinx.dataframe.columns.ColumnSet]:
62+
*
63+
*
64+
* &nbsp;&nbsp;&nbsp;&nbsp;
65+
*
66+
* [columnSet][org.jetbrains.kotlinx.dataframe.documentation.UsageTemplateColumnsSelectionDsl.UsageTemplate.ColumnSetDef]
67+
*
68+
*
69+
*
70+
* &nbsp;&nbsp;&nbsp;&nbsp;
71+
*
72+
* ### On a column group reference:
73+
*
74+
*
75+
* &nbsp;&nbsp;&nbsp;&nbsp;
76+
*
77+
* [columnGroup][org.jetbrains.kotlinx.dataframe.documentation.UsageTemplateColumnsSelectionDsl.UsageTemplate.ColumnGroupDef]
78+
*
79+
*
80+
*
81+
*
82+
*
83+
*
84+
*
85+
*
86+
*
87+
*
88+
*
89+
*/
90+
public interface Usage
91+
2892
// /** TODO tbd */
2993
// @Suppress("UNCHECKED_CAST")
3094
// public fun <C> ColumnSet<C>.colsExcept(predicate: ColumnFilter<C>): TransformableColumnSet<C> =
@@ -38,15 +102,15 @@ public interface AllExceptColumnsSelectionDsl<out T> {
38102

39103
// region deprecated and experiments
40104

41-
// public operator fun ColumnReference<*>.not(): ColumnSet<Any?> =
42-
// with(this@AllExceptColumnsSelectionDsl as ColumnsSelectionDsl<T>) {
43-
// allExcept(this@not)
44-
// }
45-
//
46-
// public operator fun ColumnSet<*>.not(): ColumnSet<Any?> =
47-
// with(this@AllExceptColumnsSelectionDsl as ColumnsSelectionDsl<T>) {
48-
// allExcept(this@not)
49-
// }
105+
public operator fun ColumnReference<*>.not(): ColumnSet<Any?> =
106+
with(this@AllExceptColumnsSelectionDsl as ColumnsSelectionDsl<T>) {
107+
allExcept(this@not)
108+
}
109+
110+
public operator fun ColumnSet<*>.not(): ColumnSet<Any?> =
111+
with(this@AllExceptColumnsSelectionDsl as ColumnsSelectionDsl<T>) {
112+
allExcept(this@not)
113+
}
50114

51115
public infix fun <C> ColumnSet<C>.oldExcept(other: ColumnsResolver<*>): ColumnSet<C> =
52116
createColumnSet { context ->

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3428,7 +3428,7 @@ public interface ColGroupColumnsSelectionDsl {
34283428
internal fun <C> SingleColumn<DataRow<C>>.ensureIsColumnGroup(): SingleColumn<DataRow<C>> =
34293429
onResolve { col: ColumnWithPath<*>? ->
34303430
require(col?.isColumnGroup() != false) {
3431-
"Column at ${col?.path} is not a ColumnGroup, but a ${col?.kind()}."
3431+
"Column at ${col?.path?.joinToString()} is not a ColumnGroup, but a ${col?.kind()}."
34323432
}
34333433
}
34343434

@@ -3438,7 +3438,7 @@ internal fun <C> SingleColumn<DataRow<C>>.ensureIsColumnGroup(): SingleColumn<Da
34383438
internal fun <C> ColumnAccessor<DataRow<C>>.ensureIsColumnGroup(): ColumnAccessor<DataRow<C>> =
34393439
onResolve { col: ColumnWithPath<*>? ->
34403440
require(col?.isColumnGroup() != false) {
3441-
"Column at ${col?.path} is not a ColumnGroup, but a ${col?.kind()}."
3441+
"Column at ${col?.path?.joinToString()} is not a ColumnGroup, but a ${col?.kind()}."
34423442
}
34433443
}
34443444

0 commit comments

Comments
 (0)