Skip to content

Commit d1f584d

Browse files
committed
converted most if not all dfs usage to recursively
1 parent 25d4821 commit d1f584d

File tree

60 files changed

+326
-436
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+326
-436
lines changed

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

Lines changed: 45 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import org.jetbrains.kotlinx.dataframe.documentation.LineBreak
1717
import org.jetbrains.kotlinx.dataframe.impl.aggregation.toColumns
1818
import org.jetbrains.kotlinx.dataframe.impl.columnName
1919
import org.jetbrains.kotlinx.dataframe.impl.columns.*
20-
import org.jetbrains.kotlinx.dataframe.impl.columns.tree.dfs
20+
import org.jetbrains.kotlinx.dataframe.impl.columns.tree.flattenRecursively
2121
import org.jetbrains.kotlinx.dataframe.impl.headPlusArray
2222
import kotlin.reflect.KProperty
2323
import kotlin.reflect.KType
@@ -3907,21 +3907,28 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
39073907

39083908
@Deprecated(
39093909
message = "dfs is deprecated, use recursively instead.",
3910-
replaceWith = ReplaceWith("this.cols(predicate).recursively(includeTopLevel = true)"),
3910+
replaceWith = ReplaceWith("this.cols(predicate).recursively(includeTopLevel = false)"),
39113911
level = DeprecationLevel.WARNING,
39123912
)
39133913
public fun <C> ColumnSet<C>.dfs(predicate: (ColumnWithPath<*>) -> Boolean): ColumnSet<Any?> = dfsInternal(predicate)
39143914

39153915
@Deprecated(
39163916
message = "dfs is deprecated, use recursively instead.",
3917-
replaceWith = ReplaceWith("this.cols(predicate).recursively(includeTopLevel = true)"),
3917+
replaceWith = ReplaceWith("this.cols(predicate).recursively()"),
3918+
level = DeprecationLevel.WARNING,
3919+
)
3920+
public fun SingleColumn<*>.dfs(predicate: (ColumnWithPath<*>) -> Boolean): ColumnSet<Any?> = dfsInternal(predicate)
3921+
3922+
@Deprecated(
3923+
message = "dfs is deprecated, use recursively instead.",
3924+
replaceWith = ReplaceWith("this.cols(predicate).recursively()"),
39183925
level = DeprecationLevel.WARNING,
39193926
)
39203927
public fun String.dfs(predicate: (ColumnWithPath<*>) -> Boolean): ColumnSet<*> = toColumnAccessor().dfs(predicate)
39213928

39223929
@Deprecated(
39233930
message = "dfs is deprecated, use recursively instead.",
3924-
replaceWith = ReplaceWith("this.cols(predicate).recursively(includeTopLevel = true)"),
3931+
replaceWith = ReplaceWith("this.cols(predicate).recursively()"),
39253932
level = DeprecationLevel.WARNING,
39263933
)
39273934
public fun <C> KProperty<C>.dfs(predicate: (ColumnWithPath<*>) -> Boolean): ColumnSet<*> =
@@ -3942,12 +3949,20 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
39423949

39433950
@Deprecated(
39443951
message = "allDfs is deprecated, use recursively instead.",
3945-
replaceWith = ReplaceWith("this.all().recursively(includeGroups = includeGroups)"),
3952+
replaceWith = ReplaceWith("this.all().recursively(includeGroups = includeGroups, includeTopLevel = false)"),
39463953
level = DeprecationLevel.WARNING,
39473954
)
39483955
public fun ColumnSet<*>.allDfs(includeGroups: Boolean = false): ColumnSet<Any?> =
39493956
if (includeGroups) dfs { true } else dfs { !it.isColumnGroup() }
39503957

3958+
@Deprecated(
3959+
message = "allDfs is deprecated, use recursively instead.",
3960+
replaceWith = ReplaceWith("this.all().recursively(includeGroups = includeGroups)"),
3961+
level = DeprecationLevel.WARNING,
3962+
)
3963+
public fun SingleColumn<*>.allDfs(includeGroups: Boolean = false): ColumnSet<Any?> =
3964+
if (includeGroups) dfs { true } else dfs { !it.isColumnGroup() }
3965+
39513966
@Deprecated(
39523967
message = "allDfs is deprecated, use recursively instead.",
39533968
replaceWith = ReplaceWith("this.all().recursively(includeGroups = includeGroups)"),
@@ -4296,7 +4311,7 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
42964311
@Deprecated(
42974312
message = "Use recursively() instead",
42984313
replaceWith = ReplaceWith(
4299-
"this.colsOf(type, predicate).recursively(includeTopLevel = false)",
4314+
"this.colsOf(type, predicate).recursively()",
43004315
"org.jetbrains.kotlinx.dataframe.columns.recursively",
43014316
"org.jetbrains.kotlinx.dataframe.api.colsOf",
43024317
),
@@ -4307,7 +4322,7 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
43074322
@Deprecated(
43084323
message = "Use recursively() instead",
43094324
replaceWith = ReplaceWith(
4310-
"this.colsOf(type, predicate).recursively(includeTopLevel = false)",
4325+
"this.colsOf(type, predicate).recursively()",
43114326
"org.jetbrains.kotlinx.dataframe.columns.recursively",
43124327
"org.jetbrains.kotlinx.dataframe.api.colsOf",
43134328
),
@@ -4440,7 +4455,7 @@ internal fun ColumnSet<*>.colsInternal(predicate: ColumnFilter<*>): ColumnSet<*>
44404455

44414456
@Deprecated("Replaced with recursively()")
44424457
internal fun ColumnSet<*>.dfsInternal(predicate: (ColumnWithPath<*>) -> Boolean) =
4443-
transform { it.filter { it.isColumnGroup() }.flatMap { it.children().dfs().filter(predicate) } }
4458+
transform { it.filter { it.isColumnGroup() }.flatMap { it.children().flattenRecursively().filter(predicate) } }
44444459

44454460
@Deprecated(
44464461
message = "Use recursively() instead",
@@ -4453,6 +4468,17 @@ internal fun ColumnSet<*>.dfsInternal(predicate: (ColumnWithPath<*>) -> Boolean)
44534468
public fun <C> ColumnSet<*>.dfsOf(type: KType, predicate: (ColumnWithPath<C>) -> Boolean = { true }): ColumnSet<*> =
44544469
dfsInternal { it.isSubtypeOf(type) && predicate(it.cast()) }
44554470

4471+
@Deprecated(
4472+
message = "Use recursively() instead",
4473+
replaceWith = ReplaceWith(
4474+
"this.colsOf(type, predicate).recursively()",
4475+
"org.jetbrains.kotlinx.dataframe.columns.recursively",
4476+
"org.jetbrains.kotlinx.dataframe.api.colsOf",
4477+
),
4478+
)
4479+
public fun <C> SingleColumn<*>.dfsOf(type: KType, predicate: (ColumnWithPath<C>) -> Boolean = { true }): ColumnSet<*> =
4480+
dfsInternal { it.isSubtypeOf(type) && predicate(it.cast()) }
4481+
44564482
@Deprecated(
44574483
message = "Use recursively() instead",
44584484
replaceWith = ReplaceWith(
@@ -4464,6 +4490,17 @@ public fun <C> ColumnSet<*>.dfsOf(type: KType, predicate: (ColumnWithPath<C>) ->
44644490
public inline fun <reified C> ColumnSet<*>.dfsOf(noinline filter: (ColumnWithPath<C>) -> Boolean = { true }): ColumnSet<C> =
44654491
dfsOf(typeOf<C>(), filter) as ColumnSet<C>
44664492

4493+
@Deprecated(
4494+
message = "Use recursively() instead",
4495+
replaceWith = ReplaceWith(
4496+
"this.colsOf<C>(filter).recursively()",
4497+
"org.jetbrains.kotlinx.dataframe.columns.recursively",
4498+
"org.jetbrains.kotlinx.dataframe.api.colsOf",
4499+
),
4500+
)
4501+
public inline fun <reified C> SingleColumn<*>.dfsOf(noinline filter: (ColumnWithPath<C>) -> Boolean = { true }): ColumnSet<C> =
4502+
dfsOf(typeOf<C>(), filter) as ColumnSet<C>
4503+
44674504
/**
44684505
* ## Cols Of
44694506
* Get columns by a given type and an optional filter.

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ public fun <T> DataFrame<T>.cumSum(
5252
public fun <T> DataFrame<T>.cumSum(vararg columns: KProperty<*>, skipNA: Boolean = defaultCumSumSkipNA): DataFrame<T> =
5353
cumSum(skipNA) { columns.toColumnSet() }
5454

55-
public fun <T> DataFrame<T>.cumSum(skipNA: Boolean = defaultCumSumSkipNA): DataFrame<T> = cumSum(skipNA) { allDfs() }
55+
public fun <T> DataFrame<T>.cumSum(skipNA: Boolean = defaultCumSumSkipNA): DataFrame<T> = cumSum(skipNA) {
56+
all().recursively(includeGroups = false)
57+
}
5658

5759
// endregion
5860

@@ -78,6 +80,6 @@ public fun <T, G> GroupBy<T, G>.cumSum(
7880
): GroupBy<T, G> = cumSum(skipNA) { columns.toColumnSet() }
7981

8082
public fun <T, G> GroupBy<T, G>.cumSum(skipNA: Boolean = defaultCumSumSkipNA): GroupBy<T, G> =
81-
cumSum(skipNA) { allDfs() }
83+
cumSum(skipNA) { all().recursively(includeGroups = false) }
8284

8385
// endregion

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public fun <T> DataColumn<T>.describe(): DataFrame<ColumnDescription> = describe
3939

4040
// region DataFrame
4141

42-
public fun <T> DataFrame<T>.describe(): DataFrame<ColumnDescription> = describe { allDfs() }
42+
public fun <T> DataFrame<T>.describe(): DataFrame<ColumnDescription> = describe { all().recursively(includeGroups = false) }
4343
public fun <T> DataFrame<T>.describe(columns: ColumnsSelector<T, *>): DataFrame<ColumnDescription> =
4444
describeImpl(getColumnsWithPaths(columns))
4545

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import kotlin.reflect.KProperty
1212

1313
public fun AnyCol.inferType(): DataColumn<*> = guessColumnType(name, toList(), type, true)
1414

15-
public fun <T> DataFrame<T>.inferType(): DataFrame<T> = inferType { allDfs() }
15+
public fun <T> DataFrame<T>.inferType(): DataFrame<T> = inferType { all().recursively(includeGroups = false) }
1616
public fun <T> DataFrame<T>.inferType(columns: ColumnsSelector<T, *>): DataFrame<T> =
1717
replace(columns).with { it.inferType() }
1818

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ public data class ParserOptions(
5555

5656
public fun DataColumn<String?>.tryParse(options: ParserOptions? = null): DataColumn<*> = tryParseImpl(options)
5757

58-
public fun <T> DataFrame<T>.parse(options: ParserOptions? = null): DataFrame<T> = parse(options) { allDfs() }
58+
public fun <T> DataFrame<T>.parse(options: ParserOptions? = null): DataFrame<T> = parse(options) {
59+
all().recursively(includeGroups = false)
60+
}
5961

6062
public fun DataColumn<String?>.parse(options: ParserOptions? = null): DataColumn<*> =
6163
tryParse(options).also { if (it.typeClass == String::class) error("Can't guess column type") }

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

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,17 @@ public fun <T, C, V : Comparable<V>> Reorder<T, C>.byDesc(expression: ColumnExpr
3737
reorderImpl(true, expression)
3838

3939
public fun <T, V : Comparable<V>> DataFrame<T>.reorderColumnsBy(
40-
dfs: Boolean = true,
40+
recursively: Boolean = true,
4141
desc: Boolean = false,
42-
expression: Selector<AnyCol, V>
43-
): DataFrame<T> = Reorder(this, { if (dfs) allDfs(true) else all() }, dfs).reorderImpl(desc, expression)
44-
45-
public fun <T> DataFrame<T>.reorderColumnsByName(dfs: Boolean = true, desc: Boolean = false): DataFrame<T> =
46-
reorderColumnsBy(dfs, desc) { name() }
42+
expression: Selector<AnyCol, V>,
43+
): DataFrame<T> =
44+
Reorder(
45+
df = this,
46+
columns = { if (recursively) all().recursively() else all() },
47+
inFrameColumns = recursively,
48+
).reorderImpl(desc, expression)
49+
50+
public fun <T> DataFrame<T>.reorderColumnsByName(recursively: Boolean = true, desc: Boolean = false): DataFrame<T> =
51+
reorderColumnsBy(recursively, desc) { name() }
4752

4853
// endregion

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public fun <T, C> DataFrame<T>.replace(columns: Iterable<ColumnReference<C>>): R
3737

3838
public fun <T> DataFrame<T>.replaceAll(
3939
vararg valuePairs: Pair<Any?, Any?>,
40-
columns: ColumnsSelector<T, *> = { allDfs() },
40+
columns: ColumnsSelector<T, *> = { all().recursively(includeGroups = false) },
4141
): DataFrame<T> {
4242
val map = valuePairs.toMap()
4343
return update(columns).with { map[it] ?: it }

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,12 +131,12 @@ public fun Iterable<Pair<String, Iterable<Any?>>>.toDataFrameFromPairs(): AnyFra
131131
public interface TraversePropertiesDsl {
132132

133133
/**
134-
* Skip given [classes] during dfs traversal
134+
* Skip given [classes] during recursive (dfs) traversal
135135
*/
136136
public fun exclude(vararg classes: KClass<*>)
137137

138138
/**
139-
* Skip given [properties] during dfs traversal
139+
* Skip given [properties] during recursive (dfs) traversal
140140
*/
141141
public fun exclude(vararg properties: KProperty<*>)
142142

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,22 @@ import org.jetbrains.kotlinx.dataframe.impl.api.xsImpl
66

77
// region DataFrame
88

9-
public fun <T> DataFrame<T>.xs(vararg keyValues: Any?): DataFrame<T> = xs(*keyValues) { allDfs().take(keyValues.size) }
9+
public fun <T> DataFrame<T>.xs(vararg keyValues: Any?): DataFrame<T> = xs(*keyValues) {
10+
all().recursively(includeGroups = false).take(keyValues.size)
11+
}
1012

11-
public fun <T, C> DataFrame<T>.xs(vararg keyValues: C, keyColumns: ColumnsSelector<T, C>): DataFrame<T> = xsImpl(keyColumns, false, *keyValues)
13+
public fun <T, C> DataFrame<T>.xs(vararg keyValues: C, keyColumns: ColumnsSelector<T, C>): DataFrame<T> =
14+
xsImpl(keyColumns, false, *keyValues)
1215

1316
// endregion
1417

1518
// region GroupBy
1619

17-
public fun <T, G> GroupBy<T, G>.xs(vararg keyValues: Any?): GroupBy<T, G> = xs(*keyValues) { allDfs().take(keyValues.size) }
20+
public fun <T, G> GroupBy<T, G>.xs(vararg keyValues: Any?): GroupBy<T, G> = xs(*keyValues) {
21+
all().recursively(includeGroups = false).take(keyValues.size)
22+
}
1823

19-
public fun <T, G, C> GroupBy<T, G>.xs(vararg keyValues: C, keyColumns: ColumnsSelector<T, C>): GroupBy<T, G> = xsImpl(*keyValues, keyColumns = keyColumns)
24+
public fun <T, G, C> GroupBy<T, G>.xs(vararg keyValues: C, keyColumns: ColumnsSelector<T, C>): GroupBy<T, G> =
25+
xsImpl(*keyValues, keyColumns = keyColumns)
2026

2127
// endregion

core/generated-sources/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/GroupByImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ internal fun <T, G, R> aggregateGroupBy(
9595

9696
if (!removeColumns) removedNode.data.wasRemoved = false
9797

98-
val columnsToInsert = groupedFrame.getColumnsWithPaths { allDfs() }.map {
98+
val columnsToInsert = groupedFrame.getColumnsWithPaths { all().recursively(includeGroups = false) }.map {
9999
ColumnToInsert(insertPath + it.path, it, removedNode)
100100
}
101101
val src = if (removeColumns) removed.df else df

0 commit comments

Comments
 (0)