Skip to content

Commit 85b1799

Browse files
committed
inlines isSingleColumnWithGroup() and fixes test for colsAtAnyDepth+colsOfKind
1 parent ed58e48 commit 85b1799

File tree

3 files changed

+15
-21
lines changed

3 files changed

+15
-21
lines changed

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import org.jetbrains.kotlinx.dataframe.columns.ColumnSet
1717
import org.jetbrains.kotlinx.dataframe.columns.ColumnWithPath
1818
import org.jetbrains.kotlinx.dataframe.columns.ColumnsResolver
1919
import org.jetbrains.kotlinx.dataframe.columns.SingleColumn
20-
import org.jetbrains.kotlinx.dataframe.columns.isSingleColumnWithGroup
2120
import org.jetbrains.kotlinx.dataframe.columns.size
2221
import org.jetbrains.kotlinx.dataframe.columns.values
2322
import org.jetbrains.kotlinx.dataframe.documentation.AccessApiLink
@@ -1163,22 +1162,24 @@ public interface AllColumnsSelectionDsl<out _UNUSED> {
11631162
}
11641163

11651164
/**
1166-
* If [this] is a [SingleColumn] containing a single [ColumnGroup], it
1165+
* If [this] is a [SingleColumn] containing a single [ColumnGroup]
1166+
* (like [SingleColumn][SingleColumn]`<`[AnyRow][AnyRow]`>` or [ColumnsSelectionDsl][ColumnsSelectionDsl]), it
11671167
* returns a [(transformable) ColumnSet][TransformableColumnSet] containing the children of this [ColumnGroup],
1168-
* else it simply returns a [(transformable) ColumnSet][TransformableColumnSet] from [this].
1168+
* else it simply returns a [(transformable) ColumnSet][TransformableColumnSet] from [this]
1169+
* (like when [this] is a [ColumnSet]).
11691170
*/
11701171
internal fun ColumnsResolver<*>.allColumnsInternal(removePaths: Boolean = false): TransformableColumnSet<*> =
1171-
transform {
1172-
if (isSingleColumnWithGroup(it)) {
1173-
it.single().let {
1172+
transform { cols ->
1173+
if (this is SingleColumn<*> && cols.singleOrNull()?.isColumnGroup() == true) {
1174+
cols.single().let {
11741175
if (removePaths) {
11751176
it.asColumnGroup().columns().map(AnyCol::addPath)
11761177
} else {
11771178
it.cols()
11781179
}
11791180
}
11801181
} else {
1181-
it
1182+
cols
11821183
}
11831184
}
11841185

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/columns/SingleColumn.kt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.jetbrains.kotlinx.dataframe.columns
22

33
import org.jetbrains.kotlinx.dataframe.DataColumn
4-
import org.jetbrains.kotlinx.dataframe.api.isColumnGroup
54
import org.jetbrains.kotlinx.dataframe.impl.columns.TransformableColumnSet
65
import org.jetbrains.kotlinx.dataframe.impl.columns.TransformableSingleColumn
76

@@ -23,11 +22,3 @@ public interface SingleColumn<out C> : ColumnsResolver<C> {
2322

2423
public fun resolveSingle(context: ColumnResolutionContext): ColumnWithPath<C>?
2524
}
26-
27-
public fun ColumnsResolver<*>.isSingleColumn(): Boolean = this is SingleColumn<*>
28-
29-
/**
30-
* Returns true if [this] is a [SingleColumn] and [cols] consists of a single column group.
31-
*/
32-
public fun ColumnsResolver<*>.isSingleColumnWithGroup(cols: List<ColumnWithPath<*>>): Boolean =
33-
isSingleColumn() && cols.singleOrNull()?.isColumnGroup() == true

core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/colsAtAnyDepth.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,14 @@ import org.jetbrains.kotlinx.dataframe.impl.columns.transform
1313
import org.jetbrains.kotlinx.dataframe.impl.columns.tree.flattenRecursively
1414
import org.jetbrains.kotlinx.dataframe.kind
1515
import org.jetbrains.kotlinx.dataframe.samples.api.TestBase
16+
import org.jetbrains.kotlinx.dataframe.samples.api.age
1617
import org.jetbrains.kotlinx.dataframe.samples.api.city
1718
import org.jetbrains.kotlinx.dataframe.samples.api.firstName
1819
import org.jetbrains.kotlinx.dataframe.samples.api.lastName
1920
import org.jetbrains.kotlinx.dataframe.samples.api.name
21+
import org.jetbrains.kotlinx.dataframe.samples.api.secondName
22+
import org.jetbrains.kotlinx.dataframe.samples.api.thirdName
23+
import org.jetbrains.kotlinx.dataframe.samples.api.weight
2024
import org.junit.Test
2125
import kotlin.reflect.typeOf
2226

@@ -153,17 +157,15 @@ class AtAnyDepth : TestBase() {
153157
dfWithFrames.getColumnsWithPaths { name[frameCol] and frameCol }
154158
}
155159

156-
// @Test
160+
@Test
157161
fun `cols of kind atAnyDepth`() {
158162
listOf(
159163
dfGroup.getColumnsWithPaths {
160164
colsAtAnyDepth().colsOfKind(Frame, Value) { "e" in it.name }
161165
},
162166
dfGroup.getColumnsWithPaths {
163-
asSingleColumn().ensureIsColumnGroup().asColumnSet().dfsInternal { "e" in it.name }
167+
name { firstName.allCols() and lastName } and cols(age, weight)
164168
},
165-
).map {
166-
it.sortedBy { it.name }.map { it.name to it.path }
167-
}.shouldAllBeEqual()
169+
).map { it.map { it.path.joinToString() } }.shouldAllBeEqual()
168170
}
169171
}

0 commit comments

Comments
 (0)