Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,10 @@ import kotlin.reflect.typeOf

public fun <T> column(): ColumnDelegate<T> = ColumnDelegate()

@Deprecated("Use col(name) instead.", ReplaceWith("col<T>(name)"))
public fun <T> column(name: String): ColumnAccessor<T> = ColumnAccessorImpl(name)

@Deprecated("Use col(path) instead.", ReplaceWith("col<T>(path)"))
public fun <T> column(path: ColumnPath): ColumnAccessor<T> = ColumnAccessorImpl(path)

@Deprecated(DEPRECATED_ACCESS_API)
Expand All @@ -54,8 +56,10 @@ public fun <T> column(property: KProperty<T>): ColumnAccessor<T> = ColumnAccesso

public fun <T> ColumnGroupReference.column(): ColumnDelegate<T> = ColumnDelegate(this)

@Deprecated("Use col(name) instead.", ReplaceWith("this.col<T>(name)"))
public fun <T> ColumnGroupReference.column(name: String): ColumnAccessor<T> = ColumnAccessorImpl(path() + name)

@Deprecated("Use col(path) instead.", ReplaceWith("this.col<T>(path)"))
public fun <T> ColumnGroupReference.column(path: ColumnPath): ColumnAccessor<T> = ColumnAccessorImpl(this.path() + path)

@Deprecated(DEPRECATED_ACCESS_API)
Expand Down Expand Up @@ -131,14 +135,18 @@ public fun columnGroup(): ColumnDelegate<DataRow<*>> = column()
@JvmName("columnGroupTyped")
public fun <T> columnGroup(): ColumnDelegate<DataRow<T>> = column()

@Deprecated("Use colGroup(name) instead.", ReplaceWith("colGroup(name)"))
public fun columnGroup(name: String): ColumnAccessor<DataRow<*>> = column(name)

@JvmName("columnGroupTyped")
@Deprecated("Use colGroup(name) instead.", ReplaceWith("colGroup<T>(name)"))
public fun <T> columnGroup(name: String): ColumnAccessor<DataRow<T>> = column(name)

@Deprecated("Use colGroup(path) instead.", ReplaceWith("colGroup(path)"))
public fun columnGroup(path: ColumnPath): ColumnAccessor<DataRow<*>> = column(path)

@JvmName("columnGroupTyped")
@Deprecated("Use colGroup(path) instead.", ReplaceWith("colGroup<T>(path)"))
public fun <T> columnGroup(path: ColumnPath): ColumnAccessor<DataRow<T>> = column(path)

@JvmName("columnGroupDataRowKProperty")
Expand All @@ -155,17 +163,21 @@ public fun ColumnGroupReference.columnGroup(): ColumnDelegate<DataRow<*>> = Colu
@JvmName("columnGroupTyped")
public fun <T> ColumnGroupReference.columnGroup(): ColumnDelegate<DataRow<T>> = ColumnDelegate(this)

@Deprecated("Use colGroup(name) instead.", ReplaceWith("this.colGroup(name)"))
public fun ColumnGroupReference.columnGroup(name: String): ColumnAccessor<DataRow<*>> =
ColumnAccessorImpl(path() + name)

@JvmName("columnGroupTyped")
@Deprecated("Use colGroup(name) instead.", ReplaceWith("this.colGroup<T>(name)"))
public fun <T> ColumnGroupReference.columnGroup(name: String): ColumnAccessor<DataRow<T>> =
ColumnAccessorImpl(path() + name)

@Deprecated("Use colGroup(path) instead.", ReplaceWith("this.colGroup(path)"))
public fun ColumnGroupReference.columnGroup(path: ColumnPath): ColumnAccessor<DataRow<*>> =
ColumnAccessorImpl(this.path() + path)

@JvmName("columnGroupTyped")
@Deprecated("Use colGroup(path) instead.", ReplaceWith("this.colGroup<T>(path)"))
public fun <T> ColumnGroupReference.columnGroup(path: ColumnPath): ColumnAccessor<DataRow<T>> =
ColumnAccessorImpl(this.path() + path)

Expand Down
15 changes: 15 additions & 0 deletions core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/api/col.kt
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,21 @@ class ColTests : ColumnsSelectionDslTests() {
).shouldAllBeEqual()
}

@Test
@Suppress("DEPRECATION")
fun `column constructors are aliases of col`() {
listOf(
df.select { col("age") },
df.select { column<Any?>("age") },
df.select { col<Int>("age") },
df.select { column<Int>("age") },
df.select { col(pathOf("age")) },
df.select { column<Any?>(pathOf("age")) },
df.select { col<Int>(pathOf("age")) },
df.select { column<Int>(pathOf("age")) },
).shouldAllBeEqual()
}

@Test
fun `col at lower level`() {
val firstNameAccessor = column<String>("firstName")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,21 @@ class ColGroupTests : ColumnsSelectionDslTests() {
).shouldAllBeEqual()
}

@Test
@Suppress("DEPRECATION")
fun `columnGroup constructors are aliases of colGroup`() {
listOf(
dfGroup.select { colGroup("name") },
dfGroup.select { columnGroup("name") },
dfGroup.select { colGroup<Name2>("name") },
dfGroup.select { columnGroup<Name2>("name") },
dfGroup.select { colGroup(pathOf("name")) },
dfGroup.select { columnGroup(pathOf("name")) },
dfGroup.select { colGroup<Name2>(pathOf("name")) },
dfGroup.select { columnGroup<Name2>(pathOf("name")) },
).shouldAllBeEqual()
}

@Test
fun `frameCol at lower level`() {
val firstNamesAccessor = columnGroup<FirstNames>("firstName")
Expand Down
2 changes: 2 additions & 0 deletions docs/StardustDocs/topics/concepts/StringApi.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ via *`String` column accessors*.
or with any other [CS DSL methods](ColumnSelectors.md#functions-overview).

String column accessors are created using special functions.
Use `col(...)` and `colGroup(...)` as the canonical accessor constructors.
Legacy `column(...)` and `columnGroup(...)` constructor aliases are kept for backward compatibility.
In the Columns Selection DSL, they have the special type `ColumnAccessor`,
while in row expressions they resolve to concrete value types.

Expand Down