Skip to content

Commit d88b609

Browse files
committed
Annotate some of the API overloads
1 parent 291371c commit d88b609

Some content is hidden

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

45 files changed

+290
-1
lines changed

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/ColumnsContainer.kt

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

3+
import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload
34
import org.jetbrains.kotlinx.dataframe.api.ColumnSelectionDsl
45
import org.jetbrains.kotlinx.dataframe.api.asColumnGroup
56
import org.jetbrains.kotlinx.dataframe.api.cast
@@ -42,8 +43,10 @@ public interface ColumnsContainer<out T> {
4243

4344
public fun getColumnOrNull(index: Int): AnyCol?
4445

46+
@AccessApiOverload
4547
public fun <R> getColumnOrNull(column: ColumnReference<R>): DataColumn<R>?
4648

49+
@AccessApiOverload
4750
public fun <R> getColumnOrNull(column: KProperty<R>): DataColumn<R>?
4851

4952
public fun getColumnOrNull(path: ColumnPath): AnyCol?
@@ -58,23 +61,32 @@ public interface ColumnsContainer<out T> {
5861

5962
public operator fun get(columnPath: ColumnPath): AnyCol = getColumn(columnPath)
6063

64+
@AccessApiOverload
6165
public operator fun <R> get(column: DataColumn<R>): DataColumn<R> = getColumn(column.name()).cast()
6266

67+
@AccessApiOverload
6368
public operator fun <R> get(column: DataColumn<DataRow<R>>): ColumnGroup<R> = getColumn(column)
6469

70+
@AccessApiOverload
6571
public operator fun <R> get(column: DataColumn<DataFrame<R>>): FrameColumn<R> = getColumn(column)
6672

73+
@AccessApiOverload
6774
public operator fun <R> get(column: ColumnReference<R>): DataColumn<R> = getColumn(column)
6875

76+
@AccessApiOverload
6977
public operator fun <R> get(column: ColumnReference<DataRow<R>>): ColumnGroup<R> = getColumn(column)
7078

79+
@AccessApiOverload
7180
public operator fun <R> get(column: ColumnReference<DataFrame<R>>): FrameColumn<R> = getColumn(column)
7281

82+
@AccessApiOverload
7383
public operator fun <R> get(column: KProperty<R>): DataColumn<R> = get(column.columnName).cast()
7484

85+
@AccessApiOverload
7586
public operator fun <R> get(column: KProperty<DataRow<R>>): ColumnGroup<R> =
7687
get(column.columnName).asColumnGroup().cast()
7788

89+
@AccessApiOverload
7890
public operator fun <R> get(column: KProperty<DataFrame<R>>): FrameColumn<R> =
7991
get(column.columnName).asAnyFrameColumn().castFrameColumn()
8092

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/DataFrame.kt

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

33
import org.jetbrains.kotlinx.dataframe.aggregation.Aggregatable
44
import org.jetbrains.kotlinx.dataframe.aggregation.AggregateGroupedBody
5+
import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload
56
import org.jetbrains.kotlinx.dataframe.annotations.HasSchema
67
import org.jetbrains.kotlinx.dataframe.api.ColumnsSelectionDsl
78
import org.jetbrains.kotlinx.dataframe.api.add
@@ -116,6 +117,7 @@ public interface DataFrame<out T> :
116117
*/
117118
public operator fun <T, C> DataFrame<T>.get(columns: ColumnsSelector<T, C>): List<DataColumn<C>> = this.get(columns)
118119

120+
@AccessApiOverload
119121
public operator fun <T> DataFrame<T>.get(first: AnyColumnReference, vararg other: AnyColumnReference): DataFrame<T> =
120122
select { (listOf(first) + other).toColumnSet() }
121123

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/DataRow.kt

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

3+
import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload
34
import org.jetbrains.kotlinx.dataframe.api.next
45
import org.jetbrains.kotlinx.dataframe.api.prev
56
import org.jetbrains.kotlinx.dataframe.columns.ColumnKind
@@ -31,6 +32,7 @@ public interface DataRow<out T> {
3132

3233
public operator fun <R> get(columns: List<ColumnReference<R>>): List<R> = columns.map { get(it) }
3334

35+
@AccessApiOverload
3436
public operator fun <R> get(property: KProperty<R>): R = get(property.columnName) as R
3537

3638
public operator fun get(first: AnyColumnReference, vararg other: AnyColumnReference): DataRow<T> =
@@ -66,6 +68,7 @@ public interface DataRow<out T> {
6668

6769
public fun getOrNull(name: String): Any?
6870

71+
@AccessApiOverload
6972
public fun <R> getValueOrNull(column: ColumnReference<R>): R?
7073

7174
// endregion
@@ -74,6 +77,7 @@ public interface DataRow<out T> {
7477

7578
public operator fun String.get(vararg path: String): ColumnPath = ColumnPath(listOf(this) + path)
7679

80+
@AccessApiOverload
7781
public operator fun <R> ColumnReference<R>.invoke(): R = get(this)
7882

7983
public operator fun <R> String.invoke(): R = this@DataRow[this@invoke] as R

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import org.jetbrains.kotlinx.dataframe.ColumnsSelector
88
import org.jetbrains.kotlinx.dataframe.DataColumn
99
import org.jetbrains.kotlinx.dataframe.DataFrame
1010
import org.jetbrains.kotlinx.dataframe.DataRow
11+
import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload
1112
import org.jetbrains.kotlinx.dataframe.columns.ColumnGroup
1213
import org.jetbrains.kotlinx.dataframe.columns.ColumnPath
1314
import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
@@ -63,12 +64,15 @@ public fun <T> ColumnsContainer<T>.getColumnGroup(columnPath: ColumnPath): Colum
6364
public fun <T> ColumnsContainer<T>.getColumn(name: String): AnyCol =
6465
getColumnOrNull(name) ?: throw IllegalArgumentException("Column not found: '$name'")
6566

67+
@AccessApiOverload
6668
public fun <T, R> ColumnsContainer<T>.getColumn(column: ColumnReference<DataFrame<R>>): FrameColumn<R> =
6769
getColumnOrNull(column)?.asFrameColumn() ?: throw IllegalArgumentException("FrameColumn not found: '$column'")
6870

71+
@AccessApiOverload
6972
public fun <T, R> ColumnsContainer<T>.getColumn(column: ColumnReference<DataRow<R>>): ColumnGroup<R> =
7073
getColumnOrNull(column)?.asColumnGroup() ?: throw IllegalArgumentException("ColumnGroup not found: '$column'")
7174

75+
@AccessApiOverload
7276
public fun <T, R> ColumnsContainer<T>.getColumn(column: ColumnReference<R>): DataColumn<R> =
7377
getColumnOrNull(column) ?: throw IllegalArgumentException("Column not found: '$column'")
7478

@@ -89,9 +93,11 @@ public fun <T> ColumnsContainer<T>.getColumnGroup(index: Int): ColumnGroup<*> =
8993

9094
public fun <T> ColumnsContainer<T>.getColumnGroup(name: String): ColumnGroup<*> = getColumn(name).asColumnGroup()
9195

96+
@AccessApiOverload
9297
public fun <T> ColumnsContainer<T>.getColumnGroup(column: KProperty<*>): ColumnGroup<*> =
9398
getColumnGroup(column.columnName)
9499

100+
@AccessApiOverload
95101
public fun <T, C> ColumnsContainer<T>.getColumnGroup(column: ColumnReference<DataRow<C>>): ColumnGroup<C> =
96102
getColumn(column)
97103

@@ -105,19 +111,24 @@ public fun <T, C> ColumnsContainer<T>.getColumnGroup(column: ColumnSelector<T, D
105111
public fun <T> ColumnsContainer<T>.getColumnGroupOrNull(name: String): ColumnGroup<*>? =
106112
getColumnOrNull(name)?.asColumnGroup()
107113

114+
@AccessApiOverload
108115
public fun <T> ColumnsContainer<T>.getColumnGroupOrNull(column: KProperty<*>): ColumnGroup<*>? =
109116
getColumnGroupOrNull(column.columnName)
110117

111118
// endregion
112119

113120
// region containsColumn
114121

122+
@AccessApiOverload
115123
public fun <C> ColumnsContainer<*>.containsColumn(column: ColumnReference<C>): Boolean = getColumnOrNull(column) != null
116124

125+
@AccessApiOverload
117126
public fun ColumnsContainer<*>.containsColumn(column: KProperty<*>): Boolean = containsColumn(column.columnName)
118127

128+
@AccessApiOverload
119129
public operator fun ColumnsContainer<*>.contains(column: AnyColumnReference): Boolean = containsColumn(column)
120130

131+
@AccessApiOverload
121132
public operator fun ColumnsContainer<*>.contains(column: KProperty<*>): Boolean = containsColumn(column)
122133

123134
// region rows

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import org.jetbrains.kotlinx.dataframe.DataColumn
77
import org.jetbrains.kotlinx.dataframe.DataFrame
88
import org.jetbrains.kotlinx.dataframe.DataRow
99
import org.jetbrains.kotlinx.dataframe.RowExpression
10+
import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload
1011
import org.jetbrains.kotlinx.dataframe.annotations.DataSchema
1112
import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
1213
import org.jetbrains.kotlinx.dataframe.impl.columnName
@@ -60,10 +61,12 @@ public fun <T> AnyRow.getValue(columnName: String): T = get(columnName) as T
6061

6162
public fun <T> AnyRow.getValue(column: ColumnReference<T>): T = get(column)
6263

64+
@AccessApiOverload
6365
public fun <T> AnyRow.getValue(column: KProperty<T>): T = get(column)
6466

6567
public fun <T> AnyRow.getValueOrNull(columnName: String): T? = getOrNull(columnName) as T?
6668

69+
@AccessApiOverload
6770
public fun <T> AnyRow.getValueOrNull(column: KProperty<T>): T? = getValueOrNull<T>(column.columnName)
6871

6972
// endregion
@@ -74,10 +77,12 @@ public fun AnyRow.containsKey(columnName: String): Boolean = owner.containsColum
7477

7578
public fun AnyRow.containsKey(column: AnyColumnReference): Boolean = owner.containsColumn(column)
7679

80+
@AccessApiOverload
7781
public fun AnyRow.containsKey(column: KProperty<*>): Boolean = owner.containsColumn(column)
7882

7983
public operator fun AnyRow.contains(column: AnyColumnReference): Boolean = containsKey(column)
8084

85+
@AccessApiOverload
8186
public operator fun AnyRow.contains(column: KProperty<*>): Boolean = containsKey(column)
8287

8388
// endregion

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import org.jetbrains.kotlinx.dataframe.AnyRow
77
import org.jetbrains.kotlinx.dataframe.ColumnsSelector
88
import org.jetbrains.kotlinx.dataframe.DataColumn
99
import org.jetbrains.kotlinx.dataframe.DataFrame
10+
import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload
1011
import org.jetbrains.kotlinx.dataframe.annotations.Interpretable
1112
import org.jetbrains.kotlinx.dataframe.annotations.Refine
1213
import org.jetbrains.kotlinx.dataframe.api.DropNA.DropNASelectingOptions
@@ -85,6 +86,7 @@ public fun <T> DataFrame<T>.fillNulls(vararg columns: String): Update<T, Any?> =
8586
* @include [SelectingColumns.KProperties.WithExample] {@include [SetFillNullsOperationArg]}
8687
* @include [Update.KPropertiesParam]
8788
*/
89+
@AccessApiOverload
8890
public fun <T, C> DataFrame<T>.fillNulls(vararg columns: KProperty<C>): Update<T, C?> =
8991
fillNulls { columns.toColumnSet() }
9092

@@ -93,6 +95,7 @@ public fun <T, C> DataFrame<T>.fillNulls(vararg columns: KProperty<C>): Update<T
9395
* @include [SelectingColumns.ColumnAccessors.WithExample] {@include [SetFillNullsOperationArg]}
9496
* @include [Update.ColumnAccessorsParam]
9597
*/
98+
@AccessApiOverload
9699
public fun <T, C> DataFrame<T>.fillNulls(vararg columns: ColumnReference<C>): Update<T, C?> =
97100
fillNulls { columns.toColumnSet() }
98101

@@ -176,13 +179,15 @@ public fun <T> DataFrame<T>.fillNaNs(vararg columns: String): Update<T, Any?> =
176179
* @include [SelectingColumns.KProperties.WithExample] {@include [SetFillNaNsOperationArg]}
177180
* @include [Update.KPropertiesParam]
178181
*/
182+
@AccessApiOverload
179183
public fun <T, C> DataFrame<T>.fillNaNs(vararg columns: KProperty<C>): Update<T, C> = fillNaNs { columns.toColumnSet() }
180184

181185
/**
182186
* @include [CommonFillNaNsFunctionDoc]
183187
* @include [SelectingColumns.ColumnAccessors.WithExample] {@include [SetFillNaNsOperationArg]}
184188
* @include [Update.ColumnAccessorsParam]
185189
*/
190+
@AccessApiOverload
186191
public fun <T, C> DataFrame<T>.fillNaNs(vararg columns: ColumnReference<C>): Update<T, C> =
187192
fillNaNs { columns.toColumnSet() }
188193

@@ -246,13 +251,15 @@ public fun <T> DataFrame<T>.fillNA(vararg columns: String): Update<T, Any?> = fi
246251
* @include [SelectingColumns.KProperties.WithExample] {@include [SetFillNAOperationArg]}
247252
* @include [Update.KPropertiesParam]
248253
*/
254+
@AccessApiOverload
249255
public fun <T, C> DataFrame<T>.fillNA(vararg columns: KProperty<C>): Update<T, C?> = fillNA { columns.toColumnSet() }
250256

251257
/**
252258
* @include [CommonFillNAFunctionDoc]
253259
* @include [SelectingColumns.ColumnAccessors.WithExample] {@include [SetFillNAOperationArg]}
254260
* @include [Update.ColumnAccessorsParam]
255261
*/
262+
@AccessApiOverload
256263
public fun <T, C> DataFrame<T>.fillNA(vararg columns: ColumnReference<C>): Update<T, C?> =
257264
fillNA { columns.toColumnSet() }
258265

@@ -348,6 +355,7 @@ public fun <T> DataFrame<T>.dropNulls(whereAllNull: Boolean = false): DataFrame<
348355
* @include [DropNulls.WhereAllNullParam]
349356
* @include [DropKPropertiesParam]
350357
*/
358+
@AccessApiOverload
351359
public fun <T> DataFrame<T>.dropNulls(vararg columns: KProperty<*>, whereAllNull: Boolean = false): DataFrame<T> =
352360
dropNulls(whereAllNull) { columns.toColumnSet() }
353361

@@ -368,6 +376,7 @@ public fun <T> DataFrame<T>.dropNulls(vararg columns: String, whereAllNull: Bool
368376
* @include [DropNulls.WhereAllNullParam]
369377
* @include [DropColumnAccessorsParam]
370378
*/
379+
@AccessApiOverload
371380
public fun <T> DataFrame<T>.dropNulls(vararg columns: AnyColumnReference, whereAllNull: Boolean = false): DataFrame<T> =
372381
dropNulls(whereAllNull) { columns.toColumnSet() }
373382

@@ -445,6 +454,7 @@ public fun <T> DataFrame<T>.dropNA(whereAllNA: Boolean = false, columns: Columns
445454
* @include [DropNA.WhereAllNAParam]
446455
* @include [DropKPropertiesParam]
447456
*/
457+
@AccessApiOverload
448458
public fun <T> DataFrame<T>.dropNA(vararg columns: KProperty<*>, whereAllNA: Boolean = false): DataFrame<T> =
449459
dropNA(whereAllNA) { columns.toColumnSet() }
450460

@@ -465,6 +475,7 @@ public fun <T> DataFrame<T>.dropNA(vararg columns: String, whereAllNA: Boolean =
465475
* @include [DropNA.WhereAllNAParam]
466476
* @include [DropColumnAccessorsParam]
467477
*/
478+
@AccessApiOverload
468479
public fun <T> DataFrame<T>.dropNA(vararg columns: AnyColumnReference, whereAllNA: Boolean = false): DataFrame<T> =
469480
dropNA(whereAllNA) { columns.toColumnSet() }
470481

@@ -552,6 +563,7 @@ public fun <T> DataFrame<T>.dropNaNs(whereAllNaN: Boolean = false, columns: Colu
552563
* @include [DropNaNs.WhereAllNaNParam]
553564
* @include [DropKPropertiesParam]
554565
*/
566+
@AccessApiOverload
555567
public fun <T> DataFrame<T>.dropNaNs(vararg columns: KProperty<*>, whereAllNaN: Boolean = false): DataFrame<T> =
556568
dropNaNs(whereAllNaN) { columns.toColumnSet() }
557569

@@ -572,6 +584,7 @@ public fun <T> DataFrame<T>.dropNaNs(vararg columns: String, whereAllNaN: Boolea
572584
* @include [DropNaNs.WhereAllNaNParam]
573585
* @include [DropColumnAccessorsParam]
574586
*/
587+
@AccessApiOverload
575588
public fun <T> DataFrame<T>.dropNaNs(vararg columns: AnyColumnReference, whereAllNaN: Boolean = false): DataFrame<T> =
576589
dropNaNs(whereAllNaN) { columns.toColumnSet() }
577590

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import org.jetbrains.kotlinx.dataframe.DataFrame
1212
import org.jetbrains.kotlinx.dataframe.DataRow
1313
import org.jetbrains.kotlinx.dataframe.RowExpression
1414
import org.jetbrains.kotlinx.dataframe.Selector
15+
import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload
1516
import org.jetbrains.kotlinx.dataframe.annotations.Interpretable
1617
import org.jetbrains.kotlinx.dataframe.annotations.Refine
1718
import org.jetbrains.kotlinx.dataframe.columns.BaseColumn
@@ -131,12 +132,14 @@ public inline fun <reified R, T> DataFrame<T>.add(
131132
noinline expression: AddExpression<T, R>,
132133
): DataFrame<T> = (this + mapToColumn(name, infer, expression))
133134

135+
@AccessApiOverload
134136
public inline fun <reified R, T> DataFrame<T>.add(
135137
property: KProperty<R>,
136138
infer: Infer = Infer.Nulls,
137139
noinline expression: AddExpression<T, R>,
138140
): DataFrame<T> = (this + mapToColumn(property, infer, expression))
139141

142+
@AccessApiOverload
140143
public inline fun <reified R, T> DataFrame<T>.add(
141144
column: ColumnAccessor<R>,
142145
infer: Infer = Infer.Nulls,
@@ -188,30 +191,38 @@ public class AddDsl<T>(
188191
add(this, Infer.Nulls, expression)
189192

190193
// TODO: use path instead of name
194+
@AccessApiOverload
191195
public inline infix fun <reified R> ColumnAccessor<R>.from(noinline expression: RowExpression<T, R>): Boolean =
192196
name().from(expression)
193197

198+
@AccessApiOverload
194199
public inline infix fun <reified R> KProperty<R>.from(noinline expression: RowExpression<T, R>): Boolean =
195200
add(name, Infer.Nulls, expression)
196201

197202
public infix fun String.from(column: AnyColumnReference): Boolean = add(column.rename(this))
198203

204+
@AccessApiOverload
199205
public inline infix fun <reified R> ColumnAccessor<R>.from(column: ColumnReference<R>): Boolean = name() from column
200206

207+
@AccessApiOverload
201208
public inline infix fun <reified R> KProperty<R>.from(column: ColumnReference<R>): Boolean = name from column
202209

203210
@Interpretable("Into")
204211
public infix fun AnyColumnReference.into(name: String): Boolean = add(rename(name))
205212

213+
@AccessApiOverload
206214
public infix fun <R> ColumnReference<R>.into(column: ColumnAccessor<R>): Boolean = into(column.name())
207215

216+
@AccessApiOverload
208217
public infix fun <R> ColumnReference<R>.into(column: KProperty<R>): Boolean = into(column.name)
209218

210219
@Interpretable("AddDslStringInvoke")
211220
public operator fun String.invoke(body: AddDsl<T>.() -> Unit): Unit = group(this, body)
212221

222+
@AccessApiOverload
213223
public infix fun AnyColumnGroupAccessor.from(body: AddDsl<T>.() -> Unit): Unit = group(this, body)
214224

225+
@AccessApiOverload
215226
public fun group(column: AnyColumnGroupAccessor, body: AddDsl<T>.() -> Unit): Unit = group(column.name(), body)
216227

217228
public fun group(name: String, body: AddDsl<T>.() -> Unit) {
@@ -224,6 +235,7 @@ public class AddDsl<T>(
224235

225236
public infix fun AddGroup<T>.into(groupName: String): Unit = group(groupName, body)
226237

238+
@AccessApiOverload
227239
public infix fun AddGroup<T>.into(column: AnyColumnGroupAccessor): Unit = into(column.name())
228240
}
229241

@@ -241,6 +253,7 @@ public inline fun <reified R, T, G> GroupBy<T, G>.add(
241253
noinline expression: RowExpression<G, R>,
242254
): GroupBy<T, G> = updateGroups { add(name, infer, expression) }
243255

256+
@AccessApiOverload
244257
public inline fun <reified R, T, G> GroupBy<T, G>.add(
245258
column: ColumnAccessor<G>,
246259
infer: Infer = Infer.Nulls,

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package org.jetbrains.kotlinx.dataframe.api
33
import org.jetbrains.kotlinx.dataframe.AnyCol
44
import org.jetbrains.kotlinx.dataframe.AnyFrame
55
import org.jetbrains.kotlinx.dataframe.DataFrame
6+
import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload
67
import org.jetbrains.kotlinx.dataframe.annotations.Interpretable
78
import org.jetbrains.kotlinx.dataframe.annotations.Refine
89
import org.jetbrains.kotlinx.dataframe.columns.ColumnAccessor
@@ -15,6 +16,7 @@ public fun AnyCol.addId(columnName: String = "id"): AnyFrame = toDataFrame().add
1516

1617
// region DataFrame
1718

19+
@AccessApiOverload
1820
public fun <T> DataFrame<T>.addId(column: ColumnAccessor<Int>): DataFrame<T> = insert(column) { index() }.at(0)
1921

2022
@Refine

0 commit comments

Comments
 (0)