diff --git a/core/api/core.api b/core/api/core.api index fa71b6b95a..0779a80814 100644 --- a/core/api/core.api +++ b/core/api/core.api @@ -9544,11 +9544,6 @@ public final class org/jetbrains/kotlinx/dataframe/columns/SingleColumn$DefaultI public static fun resolve (Lorg/jetbrains/kotlinx/dataframe/columns/SingleColumn;Lorg/jetbrains/kotlinx/dataframe/columns/ColumnResolutionContext;)Ljava/util/List; } -public final class org/jetbrains/kotlinx/dataframe/columns/SingleColumnKt { - public static final fun isSingleColumn (Lorg/jetbrains/kotlinx/dataframe/columns/ColumnsResolver;)Z - public static final fun isSingleColumnWithGroup (Lorg/jetbrains/kotlinx/dataframe/columns/ColumnsResolver;Ljava/util/List;)Z -} - public abstract interface class org/jetbrains/kotlinx/dataframe/columns/TypeSuggestion { public static final field Companion Lorg/jetbrains/kotlinx/dataframe/columns/TypeSuggestion$Companion; } diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/all.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/all.kt index a85ddbeb99..2e64efff84 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/all.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/all.kt @@ -17,7 +17,6 @@ import org.jetbrains.kotlinx.dataframe.columns.ColumnSet import org.jetbrains.kotlinx.dataframe.columns.ColumnWithPath import org.jetbrains.kotlinx.dataframe.columns.ColumnsResolver import org.jetbrains.kotlinx.dataframe.columns.SingleColumn -import org.jetbrains.kotlinx.dataframe.columns.isSingleColumnWithGroup import org.jetbrains.kotlinx.dataframe.columns.size import org.jetbrains.kotlinx.dataframe.columns.values import org.jetbrains.kotlinx.dataframe.documentation.AccessApiLink @@ -1163,14 +1162,16 @@ public interface AllColumnsSelectionDsl { } /** - * If [this] is a [SingleColumn] containing a single [ColumnGroup], it + * If [this] is a [SingleColumn] containing a single [ColumnGroup] + * (like [SingleColumn][SingleColumn]`<`[AnyRow][AnyRow]`>` or [ColumnsSelectionDsl][ColumnsSelectionDsl]), it * returns a [(transformable) ColumnSet][TransformableColumnSet] containing the children of this [ColumnGroup], - * else it simply returns a [(transformable) ColumnSet][TransformableColumnSet] from [this]. + * else it simply returns a [(transformable) ColumnSet][TransformableColumnSet] from [this] + * (like when [this] is a [ColumnSet]). */ internal fun ColumnsResolver<*>.allColumnsInternal(removePaths: Boolean = false): TransformableColumnSet<*> = - transform { - if (isSingleColumnWithGroup(it)) { - it.single().let { + transform { cols -> + if (this is SingleColumn<*> && cols.singleOrNull()?.isColumnGroup() == true) { + cols.single().let { if (removePaths) { it.asColumnGroup().columns().map(AnyCol::addPath) } else { @@ -1178,7 +1179,7 @@ internal fun ColumnsResolver<*>.allColumnsInternal(removePaths: Boolean = false) } } } else { - it + cols } } diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/columns/SingleColumn.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/columns/SingleColumn.kt index e8d0e048be..b422c5414f 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/columns/SingleColumn.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/columns/SingleColumn.kt @@ -1,7 +1,6 @@ package org.jetbrains.kotlinx.dataframe.columns import org.jetbrains.kotlinx.dataframe.DataColumn -import org.jetbrains.kotlinx.dataframe.api.isColumnGroup import org.jetbrains.kotlinx.dataframe.impl.columns.TransformableColumnSet import org.jetbrains.kotlinx.dataframe.impl.columns.TransformableSingleColumn @@ -23,11 +22,3 @@ public interface SingleColumn : ColumnsResolver { public fun resolveSingle(context: ColumnResolutionContext): ColumnWithPath? } - -public fun ColumnsResolver<*>.isSingleColumn(): Boolean = this is SingleColumn<*> - -/** - * Returns true if [this] is a [SingleColumn] and [cols] consists of a single column group. - */ -public fun ColumnsResolver<*>.isSingleColumnWithGroup(cols: List>): Boolean = - isSingleColumn() && cols.singleOrNull()?.isColumnGroup() == true diff --git a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/colsAtAnyDepth.kt b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/colsAtAnyDepth.kt index fa5adc5969..30160ff9b5 100644 --- a/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/colsAtAnyDepth.kt +++ b/core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/colsAtAnyDepth.kt @@ -13,10 +13,14 @@ import org.jetbrains.kotlinx.dataframe.impl.columns.transform import org.jetbrains.kotlinx.dataframe.impl.columns.tree.flattenRecursively import org.jetbrains.kotlinx.dataframe.kind import org.jetbrains.kotlinx.dataframe.samples.api.TestBase +import org.jetbrains.kotlinx.dataframe.samples.api.age import org.jetbrains.kotlinx.dataframe.samples.api.city import org.jetbrains.kotlinx.dataframe.samples.api.firstName import org.jetbrains.kotlinx.dataframe.samples.api.lastName import org.jetbrains.kotlinx.dataframe.samples.api.name +import org.jetbrains.kotlinx.dataframe.samples.api.secondName +import org.jetbrains.kotlinx.dataframe.samples.api.thirdName +import org.jetbrains.kotlinx.dataframe.samples.api.weight import org.junit.Test import kotlin.reflect.typeOf @@ -153,17 +157,15 @@ class AtAnyDepth : TestBase() { dfWithFrames.getColumnsWithPaths { name[frameCol] and frameCol } } - // @Test + @Test fun `cols of kind atAnyDepth`() { listOf( dfGroup.getColumnsWithPaths { colsAtAnyDepth().colsOfKind(Frame, Value) { "e" in it.name } }, dfGroup.getColumnsWithPaths { - asSingleColumn().ensureIsColumnGroup().asColumnSet().dfsInternal { "e" in it.name } + name { firstName.allCols() and lastName } and cols(age, weight) }, - ).map { - it.sortedBy { it.name }.map { it.name to it.path } - }.shouldAllBeEqual() + ).map { it.map { it.path.joinToString() } }.shouldAllBeEqual() } }