Skip to content

Commit 90f7552

Browse files
committed
updated from master
1 parent b610742 commit 90f7552

File tree

2 files changed

+23
-129
lines changed

2 files changed

+23
-129
lines changed

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import org.jetbrains.kotlinx.dataframe.Predicate
1414
import org.jetbrains.kotlinx.dataframe.columns.*
1515
import org.jetbrains.kotlinx.dataframe.documentation.AccessApi
1616
import org.jetbrains.kotlinx.dataframe.hasNulls
17+
import org.jetbrains.kotlinx.dataframe.impl.aggregation.toColumns
1718
import org.jetbrains.kotlinx.dataframe.impl.columnName
1819
import org.jetbrains.kotlinx.dataframe.impl.columns.*
1920
import org.jetbrains.kotlinx.dataframe.impl.columns.tree.dfs
@@ -270,7 +271,7 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
270271
public fun ColumnSet<*>.startsWith(prefix: CharSequence): ColumnSet<Any?> = cols { it.name.startsWith(prefix) }
271272
public fun ColumnSet<*>.endsWith(suffix: CharSequence): ColumnSet<Any?> = cols { it.name.endsWith(suffix) }
272273

273-
public fun <C> ColumnSet<C>.except(vararg other: ColumnSet<*>): ColumnSet<*> = except(other.toColumnSet())
274+
public fun <C> ColumnSet<C>.except(vararg other: ColumnSet<*>): ColumnSet<*> = except(other.toColumns())
274275
public fun <C> ColumnSet<C>.except(vararg other: String): ColumnSet<*> = except(other.toColumnSet())
275276

276277
public fun <C> ColumnSet<C?>.withoutNulls(): ColumnSet<C> = transform { it.filter { !it.hasNulls } } as ColumnSet<C>
@@ -279,7 +280,7 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
279280
createColumnSet { resolve(it).allColumnsExcept(other.resolve(it)) }
280281

281282
public infix fun <C> ColumnSet<C>.except(selector: ColumnsSelector<T, *>): ColumnSet<C> =
282-
except(selector.toColumnSet()) as ColumnSet<C>
283+
except(selector.toColumns()) as ColumnSet<C>
283284

284285
public operator fun <C> ColumnsSelector<T, C>.invoke(): ColumnSet<C> =
285286
this(this@ColumnsSelectionDsl, this@ColumnsSelectionDsl)

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

Lines changed: 20 additions & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import org.jetbrains.kotlinx.dataframe.Predicate
1414
import org.jetbrains.kotlinx.dataframe.columns.*
1515
import org.jetbrains.kotlinx.dataframe.documentation.AccessApi
1616
import org.jetbrains.kotlinx.dataframe.hasNulls
17+
import org.jetbrains.kotlinx.dataframe.impl.aggregation.toColumns
1718
import org.jetbrains.kotlinx.dataframe.impl.columnName
1819
import org.jetbrains.kotlinx.dataframe.impl.columns.*
1920
import org.jetbrains.kotlinx.dataframe.impl.columns.tree.dfs
@@ -42,18 +43,6 @@ public interface ColumnSelectionDsl<out T> : ColumnsContainer<T> {
4243

4344
public operator fun <C> ColumnPath.invoke(): DataColumn<C> = getColumn(this).cast()
4445

45-
public operator fun <T> KProperty<T>.invoke(): DataColumn<T> = this@ColumnSelectionDsl[this]
46-
47-
public operator fun <T> KProperty<DataRow<T>>.invoke(): ColumnGroup<T> = this@ColumnSelectionDsl[this]
48-
49-
public operator fun <T> KProperty<DataFrame<T>>.invoke(): FrameColumn<T> = this@ColumnSelectionDsl[this]
50-
51-
public operator fun <T, R> KProperty<DataRow<T>>.get(column: KProperty<R>): DataColumn<R> = invoke()[column]
52-
53-
public operator fun <T, R> KProperty<DataRow<T>>.get(column: KProperty<DataRow<R>>): ColumnGroup<R> = invoke()[column]
54-
55-
public operator fun <T, R> KProperty<DataRow<T>>.get(column: KProperty<DataFrame<R>>): FrameColumn<R> = invoke()[column]
56-
5746
public operator fun <C> String.invoke(): DataColumn<C> = getColumn(this).cast()
5847

5948
public operator fun String.get(column: String): ColumnPath = pathOf(this, column)
@@ -80,8 +69,6 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
8069
public operator fun String.rangeTo(endInclusive: String): ColumnSet<*> =
8170
toColumnAccessor().rangeTo(endInclusive.toColumnAccessor())
8271

83-
public operator fun KProperty<*>.rangeTo(endInclusive: KProperty<*>): ColumnSet<*> = toColumnAccessor().rangeTo(endInclusive.toColumnAccessor())
84-
8572
public operator fun AnyColumnReference.rangeTo(endInclusive: AnyColumnReference): ColumnSet<*> =
8673
object : ColumnSet<Any?> {
8774
override fun resolve(context: ColumnResolutionContext): List<ColumnWithPath<Any?>> {
@@ -116,19 +103,19 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
116103
transform { it.flatMap { col -> names.mapNotNull { col.getChild(it) } } }
117104
}
118105

119-
public fun <C> ColumnSet<*>.cols(firstCol: KProperty<C>, vararg otherCols: KProperty<C>): ColumnSet<C> =
120-
(listOf(firstCol) + otherCols).let { names ->
121-
transform { it.flatMap { col -> names.mapNotNull { col.getChild(it) } } }
122-
}
123-
124106
public fun ColumnSet<*>.cols(vararg indices: Int): ColumnSet<Any?> =
125107
transform { it.flatMap { it.children().let { children -> indices.map { children[it] } } } }
126108

127109
public fun ColumnSet<*>.cols(range: IntRange): ColumnSet<Any?> =
128-
transform { it.flatMap { it.children().subList(range.first, range.last + 1) } }
110+
transform { it.flatMap { it.children().subList(range.start, range.endInclusive + 1) } }
129111

130112
// region select
131113

114+
public fun <C> ColumnSet<DataRow<C>>.select(vararg columns: String): ColumnSet<*> = select { columns.toColumnSet() }
115+
116+
public fun <C, R> ColumnSet<DataRow<C>>.select(vararg columns: KProperty<R>): ColumnSet<R> =
117+
select { columns.toColumnSet() }
118+
132119
public fun <C, R> ColumnSet<DataRow<C>>.select(selector: ColumnsSelector<C, R>): ColumnSet<R> = createColumnSet {
133120
this@select.resolve(it).flatMap { group ->
134121
group.asColumnGroup().getColumnsWithPaths(selector).map {
@@ -137,12 +124,6 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
137124
}
138125
}
139126

140-
public fun <C> ColumnSet<DataRow<C>>.select(vararg columns: String): ColumnSet<*> = select { columns.toColumns() }
141-
142-
public fun <C, R> ColumnSet<DataRow<C>>.select(vararg columns: ColumnReference<R>): ColumnSet<R> = select { columns.toColumns() }
143-
144-
public fun <C, R> ColumnSet<DataRow<C>>.select(vararg columns: KProperty<R>): ColumnSet<R> = select { columns.toColumns() }
145-
146127
// endregion
147128

148129
// endregion
@@ -153,8 +134,6 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
153134

154135
public fun String.dfs(predicate: (ColumnWithPath<*>) -> Boolean): ColumnSet<*> = toColumnAccessor().dfs(predicate)
155136

156-
public fun <C> KProperty<C>.dfs(predicate: (ColumnWithPath<*>) -> Boolean): ColumnSet<*> = toColumnAccessor().dfs(predicate)
157-
158137
// endregion
159138

160139
// region all
@@ -163,17 +142,13 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
163142

164143
public fun String.all(): ColumnSet<*> = toColumnAccessor().transformSingle { it.children() }
165144

166-
public fun KProperty<*>.all(): ColumnSet<*> = toColumnAccessor().transformSingle { it.children() }
167-
168145
// region allDfs
169146

170147
public fun ColumnSet<*>.allDfs(includeGroups: Boolean = false): ColumnSet<Any?> =
171148
if (includeGroups) dfs { true } else dfs { !it.isColumnGroup() }
172149

173150
public fun String.allDfs(includeGroups: Boolean = false): ColumnSet<Any?> = toColumnAccessor().allDfs(includeGroups)
174151

175-
public fun KProperty<*>.allDfs(includeGroups: Boolean = false): ColumnSet<Any?> = toColumnAccessor().allDfs(includeGroups)
176-
177152
// endregion
178153

179154
// region allAfter
@@ -192,24 +167,13 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
192167

193168
public fun SingleColumn<*>.allAfter(colName: String): ColumnSet<Any?> = allAfter(pathOf(colName))
194169
public fun SingleColumn<*>.allAfter(column: AnyColumnReference): ColumnSet<Any?> = allAfter(column.path())
195-
public fun SingleColumn<*>.allAfter(column: KProperty<*>): ColumnSet<Any?> = allAfter(column.toColumnAccessor().path())
196-
197-
public fun String.allAfter(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allAfter(colPath)
198-
public fun String.allAfter(colName: String): ColumnSet<Any?> = toColumnAccessor().allAfter(colName)
199-
public fun String.allAfter(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allAfter(column)
200-
public fun String.allAfter(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allAfter(column)
201-
202-
public fun KProperty<*>.allAfter(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allAfter(colPath)
203-
public fun KProperty<*>.allAfter(colName: String): ColumnSet<Any?> = toColumnAccessor().allAfter(colName)
204-
public fun KProperty<*>.allAfter(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allAfter(column)
205-
public fun KProperty<*>.allAfter(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allAfter(column)
206170

207171
// endregion
208172

209-
// region allFrom
173+
// region allSince
210174

211175
// including current
212-
public fun SingleColumn<*>.allFrom(colPath: ColumnPath): ColumnSet<Any?> {
176+
public fun SingleColumn<*>.allSince(colPath: ColumnPath): ColumnSet<Any?> {
213177
var take = false
214178
return children {
215179
if (take) true
@@ -220,19 +184,8 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
220184
}
221185
}
222186

223-
public fun SingleColumn<*>.allFrom(colName: String): ColumnSet<Any?> = allFrom(pathOf(colName))
224-
public fun SingleColumn<*>.allFrom(column: AnyColumnReference): ColumnSet<Any?> = allFrom(column.path())
225-
public fun SingleColumn<*>.allFrom(column: KProperty<*>): ColumnSet<Any?> = allFrom(column.toColumnAccessor().path())
226-
227-
public fun String.allFrom(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allFrom(colPath)
228-
public fun String.allFrom(colName: String): ColumnSet<Any?> = toColumnAccessor().allFrom(colName)
229-
public fun String.allFrom(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allFrom(column)
230-
public fun String.allFrom(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allFrom(column)
231-
232-
public fun KProperty<*>.allFrom(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allFrom(colPath)
233-
public fun KProperty<*>.allFrom(colName: String): ColumnSet<Any?> = toColumnAccessor().allFrom(colName)
234-
public fun KProperty<*>.allFrom(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allFrom(column)
235-
public fun KProperty<*>.allFrom(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allFrom(column)
187+
public fun SingleColumn<*>.allSince(colName: String): ColumnSet<Any?> = allSince(pathOf(colName))
188+
public fun SingleColumn<*>.allSince(column: AnyColumnReference): ColumnSet<Any?> = allSince(column.path())
236189

237190
// endregion
238191

@@ -252,24 +205,13 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
252205

253206
public fun SingleColumn<*>.allBefore(colName: String): ColumnSet<Any?> = allBefore(pathOf(colName))
254207
public fun SingleColumn<*>.allBefore(column: AnyColumnReference): ColumnSet<Any?> = allBefore(column.path())
255-
public fun SingleColumn<*>.allBefore(column: KProperty<*>): ColumnSet<Any?> = allBefore(column.toColumnAccessor().path())
256-
257-
public fun String.allBefore(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allBefore(colPath)
258-
public fun String.allBefore(colName: String): ColumnSet<Any?> = toColumnAccessor().allBefore(colName)
259-
public fun String.allBefore(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allBefore(column)
260-
public fun String.allBefore(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allBefore(column)
261-
262-
public fun KProperty<*>.allBefore(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allBefore(colPath)
263-
public fun KProperty<*>.allBefore(colName: String): ColumnSet<Any?> = toColumnAccessor().allBefore(colName)
264-
public fun KProperty<*>.allBefore(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allBefore(column)
265-
public fun KProperty<*>.allBefore(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allBefore(column)
266208

267209
// endregion
268210

269-
// region allUpTo
211+
// region allUntil
270212

271213
// including current
272-
public fun SingleColumn<*>.allUpTo(colPath: ColumnPath): ColumnSet<Any?> {
214+
public fun SingleColumn<*>.allUntil(colPath: ColumnPath): ColumnSet<Any?> {
273215
var take = true
274216
return children {
275217
if (!take) false
@@ -280,46 +222,21 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
280222
}
281223
}
282224

283-
public fun SingleColumn<*>.allUpTo(colName: String): ColumnSet<Any?> = allUpTo(pathOf(colName))
284-
public fun SingleColumn<*>.allUpTo(column: AnyColumnReference): ColumnSet<Any?> = allUpTo(column.path())
285-
public fun SingleColumn<*>.allUpTo(column: KProperty<*>): ColumnSet<Any?> = allUpTo(column.toColumnAccessor().path())
286-
287-
public fun String.allUpTo(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allUpTo(colPath)
288-
public fun String.allUpTo(colName: String): ColumnSet<Any?> = toColumnAccessor().allUpTo(colName)
289-
public fun String.allUpTo(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allUpTo(column)
290-
public fun String.allUpTo(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allUpTo(column)
291-
292-
public fun KProperty<*>.allUpTo(colPath: ColumnPath): ColumnSet<Any?> = toColumnAccessor().allUpTo(colPath)
293-
public fun KProperty<*>.allUpTo(colName: String): ColumnSet<Any?> = toColumnAccessor().allUpTo(colName)
294-
public fun KProperty<*>.allUpTo(column: AnyColumnReference): ColumnSet<Any?> = toColumnAccessor().allUpTo(column)
295-
public fun KProperty<*>.allUpTo(column: KProperty<*>): ColumnSet<Any?> = toColumnAccessor().allUpTo(column)
225+
public fun SingleColumn<*>.allUntil(colName: String): ColumnSet<Any?> = allUntil(pathOf(colName))
226+
public fun SingleColumn<*>.allUntil(column: AnyColumnReference): ColumnSet<Any?> = allUntil(column.path())
296227

297228
// endregion
298229

299230
// endregion
300231

301-
// region groups
302-
303232
public fun SingleColumn<*>.groups(filter: (ColumnGroup<*>) -> Boolean = { true }): ColumnSet<AnyRow> =
304233
children { it.isColumnGroup() && filter(it.asColumnGroup()) } as ColumnSet<AnyRow>
305234

306-
public fun String.groups(filter: (ColumnGroup<*>) -> Boolean = { true }): ColumnSet<AnyRow> =
307-
toColumnAccessor().groups(filter)
308-
309-
public fun KProperty<*>.groups(filter: (ColumnGroup<*>) -> Boolean = { true }): ColumnSet<AnyRow> =
310-
toColumnAccessor().groups(filter)
311-
312-
// endregion
313-
314-
// region children
315-
316-
public fun ColumnSet<*>.children(predicate: (ColumnWithPath<Any?>) -> Boolean = { true }): ColumnSet<Any?> =
235+
public fun <C> ColumnSet<C>.children(predicate: (ColumnWithPath<Any?>) -> Boolean = { true }): ColumnSet<Any?> =
317236
transform { it.flatMap { it.children().filter { predicate(it) } } }
318237

319238
public fun ColumnGroupReference.children(): ColumnSet<Any?> = transformSingle { it.children() }
320239

321-
// endregion
322-
323240
public operator fun <C> List<DataColumn<C>>.get(range: IntRange): ColumnSet<C> =
324241
ColumnsList(subList(range.first, range.last + 1))
325242

@@ -329,7 +246,6 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
329246
transform { it.mapNotNull { it.getChild(colName) } }
330247

331248
public operator fun <C> ColumnSet<*>.get(column: ColumnReference<C>): ColumnSet<C> = cols(column)
332-
public operator fun <C> ColumnSet<*>.get(column: KProperty<C>): ColumnSet<C> = cols(column)
333249

334250
public fun SingleColumn<AnyRow>.take(n: Int): ColumnSet<*> = transformSingle { it.children().take(n) }
335251
public fun SingleColumn<AnyRow>.takeLast(n: Int): ColumnSet<*> = transformSingle { it.children().takeLast(n) }
@@ -355,8 +271,8 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
355271
public fun ColumnSet<*>.startsWith(prefix: CharSequence): ColumnSet<Any?> = cols { it.name.startsWith(prefix) }
356272
public fun ColumnSet<*>.endsWith(suffix: CharSequence): ColumnSet<Any?> = cols { it.name.endsWith(suffix) }
357273

358-
public fun <C> ColumnSet<C>.except(vararg other: ColumnSet<*>): ColumnSet<*> = except(other.toColumns())
359-
public fun <C> ColumnSet<C>.except(vararg other: String): ColumnSet<*> = except(other.toColumns())
274+
public fun <C> ColumnSet<C>.except(vararg other: ColumnSet<*>): ColumnSet<*> = except(other.toColumnSet())
275+
public fun <C> ColumnSet<C>.except(vararg other: String): ColumnSet<*> = except(other.toColumnSet())
360276

361277
public fun <C> ColumnSet<C?>.withoutNulls(): ColumnSet<C> = transform { it.filter { !it.hasNulls } } as ColumnSet<C>
362278

@@ -381,18 +297,9 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
381297
toColumnAccessor().into(column.columnName)
382298

383299
public infix fun <C> ColumnReference<C>.named(newName: String): ColumnReference<C> = renamedReference(newName)
384-
public infix fun <C> ColumnReference<C>.named(nameFrom: ColumnReference<*>): ColumnReference<C> = named(nameFrom.name)
385-
public infix fun <C> ColumnReference<C>.named(nameFrom: KProperty<*>): ColumnReference<C> = named(nameFrom.columnName)
300+
public infix fun <C> ColumnReference<C>.named(name: KProperty<*>): ColumnReference<C> = named(name.columnName)
386301

387302
public infix fun String.named(newName: String): ColumnReference<Any?> = toColumnAccessor().named(newName)
388-
public infix fun String.named(nameFrom: ColumnReference<*>): ColumnReference<Any?> = toColumnAccessor().named(nameFrom.name)
389-
public infix fun String.named(nameFrom: KProperty<*>): ColumnReference<Any?> = toColumnAccessor().named(nameFrom.columnName)
390-
391-
public infix fun <C> KProperty<C>.named(newName: String): ColumnReference<C> = toColumnAccessor().named(newName)
392-
393-
public infix fun <C> KProperty<C>.named(nameFrom: ColumnReference<*>): ColumnReference<C> = toColumnAccessor().named(nameFrom.name)
394-
395-
public infix fun <C> KProperty<C>.named(nameFrom: KProperty<*>): ColumnReference<C> = toColumnAccessor().named(nameFrom.columnName)
396303

397304
// region and
398305

@@ -433,21 +340,6 @@ public interface ColumnsSelectionDsl<out T> : ColumnSelectionDsl<T>, SingleColum
433340
// endregion
434341

435342
public fun <C> ColumnSet<C>.distinct(): ColumnSet<C> = DistinctColumnSet(this)
436-
437-
public fun <C> String.dfsOf(type: KType, predicate: (ColumnWithPath<C>) -> Boolean = { true }): ColumnSet<*> =
438-
toColumnAccessor().dfsOf(type, predicate)
439-
440-
public fun <C> KProperty<*>.dfsOf(type: KType, predicate: (ColumnWithPath<C>) -> Boolean = { true }): ColumnSet<*> =
441-
toColumnAccessor().dfsOf(type, predicate)
442-
443-
public fun String.colsOf(type: KType): ColumnSet<Any?> = toColumnAccessor().colsOf(type)
444-
public fun KProperty<*>.colsOf(type: KType): ColumnSet<Any?> = toColumnAccessor().colsOf(type)
445-
446-
public fun <C> String.colsOf(type: KType, filter: (DataColumn<C>) -> Boolean): ColumnSet<Any?> =
447-
toColumnAccessor().colsOf(type, filter)
448-
449-
public fun <C> KProperty<*>.colsOf(type: KType, filter: (DataColumn<C>) -> Boolean): ColumnSet<Any?> =
450-
toColumnAccessor().colsOf(type, filter)
451343
}
452344

453345
public inline fun <T, reified R> ColumnsSelectionDsl<T>.expr(
@@ -458,6 +350,7 @@ public inline fun <T, reified R> ColumnsSelectionDsl<T>.expr(
458350

459351
internal fun <T, C> ColumnsSelector<T, C>.filter(predicate: (ColumnWithPath<C>) -> Boolean): ColumnsSelector<T, C> =
460352
{ this@filter(it, it).filter(predicate) }
353+
// internal fun Columns<*>.filter(predicate: (AnyCol) -> Boolean) = transform { it.filter { predicate(it.data) } }
461354

462355
internal fun ColumnSet<*>.colsInternal(predicate: (AnyCol) -> Boolean) =
463356
transform { it.flatMap { it.children().filter { predicate(it.data) } } }

0 commit comments

Comments
 (0)