From 5c07d5a2d33a40de6b00c1d71c4c146b95667f8b Mon Sep 17 00:00:00 2001 From: Alexey Zinoviev Date: Thu, 9 Jan 2025 10:53:11 +0100 Subject: [PATCH 1/2] Add @AccessApiOverload annotations for API methods --- .../jetbrains/kotlinx/dataframe/api/all.kt | 49 +++++++++++++++++++ .../kotlinx/dataframe/api/allExcept.kt | 18 +++++++ .../jetbrains/kotlinx/dataframe/api/col.kt | 13 +++++ 3 files changed, 80 insertions(+) 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 8911eb96ae..4fff8b48f8 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 @@ -10,6 +10,7 @@ import org.jetbrains.kotlinx.dataframe.DataFrame import org.jetbrains.kotlinx.dataframe.DataRow import org.jetbrains.kotlinx.dataframe.Predicate import org.jetbrains.kotlinx.dataframe.RowFilter +import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload import org.jetbrains.kotlinx.dataframe.annotations.Interpretable import org.jetbrains.kotlinx.dataframe.api.AllColumnsSelectionDsl.CommonAllSubsetDocs.BehaviorArg import org.jetbrains.kotlinx.dataframe.api.AllColumnsSelectionDsl.CommonAllSubsetDocs.ColumnDoesNotExistArg @@ -364,9 +365,11 @@ public interface AllColumnsSelectionDsl { public fun ColumnSet.allAfter(column: String): ColumnSet = allAfter(pathOf(column)) /** @include [ColumnSetAllAfterDocs] {@set [ColumnSetAllAfterDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun ColumnSet.allAfter(column: AnyColumnReference): ColumnSet = allAfter(column.path()) /** @include [ColumnSetAllAfterDocs] {@set [ColumnSetAllAfterDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun ColumnSet.allAfter(column: KProperty<*>): ColumnSet = allAfter(column.toColumnAccessor().path()) @@ -394,9 +397,11 @@ public interface AllColumnsSelectionDsl { public fun ColumnsSelectionDsl<*>.allAfter(column: String): ColumnSet<*> = allAfter(pathOf(column)) /** @include [ColumnsSelectionDslAllAfterDocs] {@set [ColumnsSelectionDslAllAfterDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun ColumnsSelectionDsl<*>.allAfter(column: AnyColumnReference): ColumnSet<*> = allAfter(column.path()) /** @include [ColumnsSelectionDslAllAfterDocs] {@set [ColumnsSelectionDslAllAfterDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun ColumnsSelectionDsl<*>.allAfter(column: KProperty<*>): ColumnSet<*> = allAfter(column.toColumnAccessor().path()) @@ -438,10 +443,12 @@ public interface AllColumnsSelectionDsl { public fun SingleColumn>.allColsAfter(column: String): ColumnSet<*> = allColsAfter(pathOf(column)) /** @include [SingleColumnAllAfterDocs] {@set [SingleColumnAllAfterDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun SingleColumn>.allColsAfter(column: AnyColumnReference): ColumnSet<*> = allColsAfter(column.path()) /** @include [SingleColumnAllAfterDocs] {@set [SingleColumnAllAfterDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun SingleColumn>.allColsAfter(column: KProperty<*>): ColumnSet<*> = allColsAfter(column.toColumnAccessor().path()) @@ -468,9 +475,11 @@ public interface AllColumnsSelectionDsl { public fun String.allColsAfter(column: String): ColumnSet<*> = columnGroup(this).allColsAfter(column) /** @include [StringAllAfterDocs] {@set [StringAllAfterDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun String.allColsAfter(column: AnyColumnReference): ColumnSet<*> = columnGroup(this).allColsAfter(column) /** @include [StringAllAfterDocs] {@set [StringAllAfterDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun String.allColsAfter(column: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsAfter(column) /** @@ -499,10 +508,12 @@ public interface AllColumnsSelectionDsl { public fun KProperty<*>.allColsAfter(column: String): ColumnSet<*> = columnGroup(this).allColsAfter(column) /** @include [KPropertyAllAfterDocs] {@set [KPropertyAllAfterDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun KProperty<*>.allColsAfter(column: AnyColumnReference): ColumnSet<*> = columnGroup(this).allColsAfter(column) /** @include [KPropertyAllAfterDocs] {@set [KPropertyAllAfterDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun KProperty<*>.allColsAfter(column: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsAfter(column) /** @@ -529,10 +540,12 @@ public interface AllColumnsSelectionDsl { public fun ColumnPath.allColsAfter(column: String): ColumnSet<*> = columnGroup(this).allColsAfter(column) /** @include [ColumnPathAllAfterDocs] {@set [ColumnPathAllAfterDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun ColumnPath.allColsAfter(column: AnyColumnReference): ColumnSet<*> = columnGroup(this).allColsAfter(column) /** @include [ColumnPathAllAfterDocs] {@set [ColumnPathAllAfterDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun ColumnPath.allColsAfter(column: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsAfter(column) // endregion @@ -578,9 +591,11 @@ public interface AllColumnsSelectionDsl { public fun ColumnSet.allFrom(column: String): ColumnSet = allFrom(pathOf(column)) /** @include [ColumnSetAllFromDocs] {@set [ColumnSetAllFromDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun ColumnSet.allFrom(column: AnyColumnReference): ColumnSet = allFrom(column.path()) /** @include [ColumnSetAllFromDocs] {@set [ColumnSetAllFromDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun ColumnSet.allFrom(column: KProperty<*>): ColumnSet = allFrom(column.toColumnAccessor().path()) /** @@ -607,10 +622,12 @@ public interface AllColumnsSelectionDsl { public fun ColumnsSelectionDsl<*>.allFrom(column: String): ColumnSet<*> = asSingleColumn().allColsFrom(column) /** @include [ColumnsSelectionDslAllFromDocs] {@set [ColumnsSelectionDslAllFromDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun ColumnsSelectionDsl<*>.allFrom(column: AnyColumnReference): ColumnSet<*> = asSingleColumn().allColsFrom(column) /** @include [ColumnsSelectionDslAllFromDocs] {@set [ColumnsSelectionDslAllFromDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun ColumnsSelectionDsl<*>.allFrom(column: KProperty<*>): ColumnSet<*> = asSingleColumn().allColsFrom(column) /** @@ -651,10 +668,12 @@ public interface AllColumnsSelectionDsl { public fun SingleColumn>.allColsFrom(column: String): ColumnSet<*> = allColsFrom(pathOf(column)) /** @include [SingleColumnAllFromDocs] {@set [SingleColumnAllFromDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun SingleColumn>.allColsFrom(column: AnyColumnReference): ColumnSet<*> = allColsFrom(column.path()) /** @include [SingleColumnAllFromDocs] {@set [SingleColumnAllFromDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun SingleColumn>.allColsFrom(column: KProperty<*>): ColumnSet<*> = allColsFrom(column.toColumnAccessor().path()) @@ -681,9 +700,11 @@ public interface AllColumnsSelectionDsl { public fun String.allColsFrom(column: String): ColumnSet<*> = columnGroup(this).allColsFrom(column) /** @include [StringAllFromDocs] {@set [StringAllFromDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun String.allColsFrom(column: AnyColumnReference): ColumnSet<*> = columnGroup(this).allColsFrom(column) /** @include [StringAllFromDocs] {@set [StringAllFromDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun String.allColsFrom(column: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsFrom(column) /** @@ -712,10 +733,12 @@ public interface AllColumnsSelectionDsl { public fun KProperty<*>.allColsFrom(column: String): ColumnSet<*> = columnGroup(this).allColsFrom(column) /** @include [KPropertyAllFromDocs] {@set [KPropertyAllFromDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun KProperty<*>.allColsFrom(column: AnyColumnReference): ColumnSet<*> = columnGroup(this).allColsFrom(column) /** @include [KPropertyAllFromDocs] {@set [KPropertyAllFromDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun KProperty<*>.allColsFrom(column: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsFrom(column) /** @@ -742,9 +765,11 @@ public interface AllColumnsSelectionDsl { public fun ColumnPath.allColsFrom(column: String): ColumnSet<*> = columnGroup(this).allColsFrom(column) /** @include [ColumnPathAllFromDocs] {@set [ColumnPathAllFromDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun ColumnPath.allColsFrom(column: AnyColumnReference): ColumnSet<*> = columnGroup(this).allColsFrom(column) /** @include [ColumnPathAllFromDocs] {@set [ColumnPathAllFromDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun ColumnPath.allColsFrom(column: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsFrom(column) // endregion @@ -790,9 +815,11 @@ public interface AllColumnsSelectionDsl { public fun ColumnSet.allBefore(column: String): ColumnSet = allBefore(pathOf(column)) /** @include [ColumnSetAllBeforeDocs] {@set [ColumnSetAllBeforeDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun ColumnSet.allBefore(column: AnyColumnReference): ColumnSet = allBefore(column.path()) /** @include [ColumnSetAllBeforeDocs] {@set [ColumnSetAllBeforeDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun ColumnSet.allBefore(column: KProperty<*>): ColumnSet = allBefore(column.toColumnAccessor().path()) @@ -821,9 +848,11 @@ public interface AllColumnsSelectionDsl { public fun ColumnsSelectionDsl<*>.allBefore(column: String): ColumnSet<*> = allBefore(pathOf(column)) /** @include [ColumnsSelectionDslAllBeforeDocs] {@set [ColumnsSelectionDslAllBeforeDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun ColumnsSelectionDsl<*>.allBefore(column: AnyColumnReference): ColumnSet<*> = allBefore(column.path()) /** @include [ColumnsSelectionDslAllBeforeDocs] {@set [ColumnsSelectionDslAllBeforeDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun ColumnsSelectionDsl<*>.allBefore(column: KProperty<*>): ColumnSet<*> = allBefore(column.toColumnAccessor().path()) @@ -862,10 +891,12 @@ public interface AllColumnsSelectionDsl { public fun SingleColumn>.allColsBefore(column: String): ColumnSet<*> = allColsBefore(pathOf(column)) /** @include [SingleColumnAllBeforeDocs] {@set [SingleColumnAllBeforeDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun SingleColumn>.allColsBefore(column: AnyColumnReference): ColumnSet<*> = allColsBefore(column.path()) /** @include [SingleColumnAllBeforeDocs] {@set [SingleColumnAllBeforeDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun SingleColumn>.allColsBefore(column: KProperty<*>): ColumnSet<*> = allColsBefore(column.toColumnAccessor().path()) @@ -893,9 +924,11 @@ public interface AllColumnsSelectionDsl { public fun String.allColsBefore(column: String): ColumnSet<*> = columnGroup(this).allColsBefore(column) /** @include [StringAllBeforeDocs] {@set [StringAllBeforeDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun String.allColsBefore(column: AnyColumnReference): ColumnSet<*> = columnGroup(this).allColsBefore(column) /** @include [StringAllBeforeDocs] {@set [StringAllBeforeDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun String.allColsBefore(column: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsBefore(column) /** @@ -924,10 +957,12 @@ public interface AllColumnsSelectionDsl { public fun KProperty<*>.allColsBefore(column: String): ColumnSet<*> = columnGroup(this).allColsBefore(column) /** @include [KPropertyAllBeforeDocs] {@set [KPropertyAllBeforeDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun KProperty<*>.allColsBefore(column: AnyColumnReference): ColumnSet<*> = columnGroup(this).allColsBefore(column) /** @include [KPropertyAllBeforeDocs] {@set [KPropertyAllBeforeDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun KProperty<*>.allColsBefore(column: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsBefore(column) /** @@ -954,10 +989,12 @@ public interface AllColumnsSelectionDsl { public fun ColumnPath.allColsBefore(column: String): ColumnSet<*> = columnGroup(this).allColsBefore(column) /** @include [ColumnPathAllBeforeDocs] {@set [ColumnPathAllBeforeDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun ColumnPath.allColsBefore(column: AnyColumnReference): ColumnSet<*> = columnGroup(this).allColsBefore(column) /** @include [ColumnPathAllBeforeDocs] {@set [ColumnPathAllBeforeDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun ColumnPath.allColsBefore(column: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsBefore(column) // endregion @@ -1003,9 +1040,11 @@ public interface AllColumnsSelectionDsl { public fun ColumnSet.allUpTo(column: String): ColumnSet = allUpTo(pathOf(column)) /** @include [ColumnSetAllUpToDocs] {@set [ColumnSetAllUpToDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun ColumnSet.allUpTo(column: AnyColumnReference): ColumnSet = allUpTo(column.path()) /** @include [ColumnSetAllUpToDocs] {@set [ColumnSetAllUpToDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun ColumnSet.allUpTo(column: KProperty<*>): ColumnSet = allUpTo(column.toColumnAccessor().path()) /** @@ -1032,10 +1071,12 @@ public interface AllColumnsSelectionDsl { public fun ColumnsSelectionDsl<*>.allUpTo(column: String): ColumnSet<*> = asSingleColumn().allColsUpTo(column) /** @include [ColumnsSelectionDslAllUpToDocs] {@set [ColumnsSelectionDslAllUpToDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun ColumnsSelectionDsl<*>.allUpTo(column: AnyColumnReference): ColumnSet<*> = asSingleColumn().allColsUpTo(column) /** @include [ColumnsSelectionDslAllUpToDocs] {@set [ColumnsSelectionDslAllUpToDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun ColumnsSelectionDsl<*>.allUpTo(column: KProperty<*>): ColumnSet<*> = asSingleColumn().allColsUpTo(column) /** @@ -1076,10 +1117,12 @@ public interface AllColumnsSelectionDsl { public fun SingleColumn>.allColsUpTo(column: String): ColumnSet<*> = allColsUpTo(pathOf(column)) /** @include [SingleColumnAllUpToDocs] {@set [SingleColumnAllUpToDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun SingleColumn>.allColsUpTo(column: AnyColumnReference): ColumnSet<*> = allColsUpTo(column.path()) /** @include [SingleColumnAllUpToDocs] {@set [SingleColumnAllUpToDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun SingleColumn>.allColsUpTo(column: KProperty<*>): ColumnSet<*> = allColsUpTo(column.toColumnAccessor().path()) @@ -1106,9 +1149,11 @@ public interface AllColumnsSelectionDsl { public fun String.allColsUpTo(column: String): ColumnSet<*> = columnGroup(this).allColsUpTo(column) /** @include [StringAllUpToDocs] {@set [StringAllUpToDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun String.allColsUpTo(column: AnyColumnReference): ColumnSet<*> = columnGroup(this).allColsUpTo(column) /** @include [StringAllUpToDocs] {@set [StringAllUpToDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun String.allColsUpTo(column: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsUpTo(column) /** @@ -1137,10 +1182,12 @@ public interface AllColumnsSelectionDsl { public fun KProperty<*>.allColsUpTo(column: String): ColumnSet<*> = columnGroup(this).allColsUpTo(column) /** @include [KPropertyAllUpToDocs] {@set [KPropertyAllUpToDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun KProperty<*>.allColsUpTo(column: AnyColumnReference): ColumnSet<*> = columnGroup(this).allColsUpTo(column) /** @include [KPropertyAllUpToDocs] {@set [KPropertyAllUpToDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun KProperty<*>.allColsUpTo(column: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsUpTo(column) /** @@ -1167,9 +1214,11 @@ public interface AllColumnsSelectionDsl { public fun ColumnPath.allColsUpTo(column: String): ColumnSet<*> = columnGroup(this).allColsUpTo(column) /** @include [ColumnPathAllUpToDocs] {@set [ColumnPathAllUpToDocs.Arg] (myColumn)} */ + @AccessApiOverload public fun ColumnPath.allColsUpTo(column: AnyColumnReference): ColumnSet<*> = columnGroup(this).allColsUpTo(column) /** @include [ColumnPathAllUpToDocs] {@set [ColumnPathAllUpToDocs.Arg] (Type::myColumn)} */ + @AccessApiOverload public fun ColumnPath.allColsUpTo(column: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsUpTo(column) // endregion diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/allExcept.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/allExcept.kt index 1031dc3848..eff4f3bae6 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/allExcept.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/allExcept.kt @@ -4,6 +4,7 @@ import org.jetbrains.kotlinx.dataframe.ColumnsSelector import org.jetbrains.kotlinx.dataframe.DataColumn import org.jetbrains.kotlinx.dataframe.DataFrame import org.jetbrains.kotlinx.dataframe.DataRow +import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload import org.jetbrains.kotlinx.dataframe.columns.ColumnGroup import org.jetbrains.kotlinx.dataframe.columns.ColumnPath import org.jetbrains.kotlinx.dataframe.columns.ColumnSet @@ -263,6 +264,7 @@ public interface AllExceptColumnsSelectionDsl { * @set [ColumnSetInfixDocs.ArgumentArg1] `Person::age` * @set [ColumnSetInfixDocs.ArgumentArg2] `Person::name` */ + @AccessApiOverload public infix fun ColumnSet.except(other: KProperty): ColumnSet = except(column(other)) /** @@ -272,6 +274,7 @@ public interface AllExceptColumnsSelectionDsl { * @set [ColumnSetVarargDocs.ArgumentArg1] `(Person::age, Person::height)` * @set [ColumnSetVarargDocs.ArgumentArg2] `(Person::name)` */ + @AccessApiOverload public fun ColumnSet.except(vararg others: KProperty): ColumnSet = except(others.toColumnSet()) /** @@ -350,6 +353,7 @@ public interface AllExceptColumnsSelectionDsl { * @set [ColumnsSelectionDslDocs.ArgumentArg1] `(Person::age, Person::height)` * @set [ColumnsSelectionDslDocs.ArgumentArg2] `(Person::name)` */ + @AccessApiOverload public fun ColumnsSelectionDsl<*>.allExcept(vararg others: KProperty<*>): ColumnSet<*> = asSingleColumn().allColsExceptInternal(others.toColumnSet()) @@ -493,6 +497,7 @@ public interface AllExceptColumnsSelectionDsl { * @include [ColumnGroupDocs.SingleColumnReceiverArgs] * @include [ColumnGroupDocs.KPropertyArgs] */ + @AccessApiOverload public fun SingleColumn>.allColsExcept(vararg others: KProperty<*>): ColumnSet<*> = allColsExceptInternal(others.toColumnSet()) @@ -545,6 +550,7 @@ public interface AllExceptColumnsSelectionDsl { * @include [ColumnGroupDocs.StringReceiverArgs] * @include [ColumnGroupDocs.KPropertyArgs] */ + @AccessApiOverload public fun String.allColsExcept(vararg others: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsExceptInternal(others.toColumnSet()) @@ -597,6 +603,7 @@ public interface AllExceptColumnsSelectionDsl { * @include [ColumnGroupDocs.KPropertyReceiverArgs] * @include [ColumnGroupDocs.KPropertyArgs] */ + @AccessApiOverload public fun KProperty<*>.allColsExcept(vararg others: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsExceptInternal(others.toColumnSet()) @@ -649,6 +656,7 @@ public interface AllExceptColumnsSelectionDsl { * @include [ColumnGroupDocs.ColumnPathReceiverArgs] * @include [ColumnGroupDocs.KPropertyArgs] */ + @AccessApiOverload public fun ColumnPath.allColsExcept(vararg others: KProperty<*>): ColumnSet<*> = columnGroup(this).allColsExceptInternal(others.toColumnSet()) @@ -731,6 +739,7 @@ public interface AllExceptColumnsSelectionDsl { * @include [ExperimentalExceptDocs] */ @ExperimentalExceptCsDsl + @AccessApiOverload public infix fun SingleColumn>.exceptNew(other: KProperty): SingleColumn> = exceptExperimentalInternal(column(other)) @@ -738,6 +747,7 @@ public interface AllExceptColumnsSelectionDsl { * @include [ExperimentalExceptDocs] */ @ExperimentalExceptCsDsl + @AccessApiOverload public fun SingleColumn>.exceptNew(vararg others: KProperty<*>): SingleColumn> = exceptExperimentalInternal(others.toColumnSet()) @@ -798,6 +808,7 @@ public interface AllExceptColumnsSelectionDsl { * @include [ExperimentalExceptDocs] */ @ExperimentalExceptCsDsl + @AccessApiOverload public infix fun String.exceptNew(other: KProperty<*>): SingleColumn> = columnGroup(this).exceptExperimentalInternal(column(other)) @@ -805,6 +816,7 @@ public interface AllExceptColumnsSelectionDsl { * @include [ExperimentalExceptDocs] */ @ExperimentalExceptCsDsl + @AccessApiOverload public fun String.exceptNew(vararg others: KProperty<*>): SingleColumn> = columnGroup(this).exceptExperimentalInternal(others.toColumnSet()) @@ -883,6 +895,7 @@ public interface AllExceptColumnsSelectionDsl { * @include [ExperimentalExceptDocs] */ @ExperimentalExceptCsDsl + @AccessApiOverload public infix fun KProperty.exceptNew(other: KProperty<*>): SingleColumn> = columnGroup(this).exceptExperimentalInternal(column(other)) @@ -890,6 +903,7 @@ public interface AllExceptColumnsSelectionDsl { * @include [ExperimentalExceptDocs] */ @ExperimentalExceptCsDsl + @AccessApiOverload public fun KProperty.exceptNew(vararg others: KProperty<*>): SingleColumn> = columnGroup(this).exceptExperimentalInternal(others.toColumnSet()) @@ -899,6 +913,7 @@ public interface AllExceptColumnsSelectionDsl { @ExperimentalExceptCsDsl @Suppress("INAPPLICABLE_JVM_NAME") @JvmName("KPropertyDataRowExceptNew") + @AccessApiOverload public infix fun KProperty>.exceptNew(other: KProperty<*>): SingleColumn> = columnGroup(this).exceptExperimentalInternal(column(other)) @@ -908,6 +923,7 @@ public interface AllExceptColumnsSelectionDsl { @ExperimentalExceptCsDsl @Suppress("INAPPLICABLE_JVM_NAME") @JvmName("KPropertyDataRowExceptNew") + @AccessApiOverload public fun KProperty>.exceptNew(vararg others: KProperty<*>): SingleColumn> = columnGroup(this).exceptExperimentalInternal(others.toColumnSet()) @@ -986,10 +1002,12 @@ public interface AllExceptColumnsSelectionDsl { * @include [ExperimentalExceptDocs] */ @ExperimentalExceptCsDsl + @AccessApiOverload public infix fun ColumnPath.exceptNew(other: KProperty<*>): SingleColumn> = columnGroup(this).exceptExperimentalInternal(column(other)) @ExperimentalExceptCsDsl + @AccessApiOverload public fun ColumnPath.exceptNew(vararg others: KProperty<*>): SingleColumn> = columnGroup(this).exceptExperimentalInternal(others.toColumnSet()) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/col.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/col.kt index e381a31e51..f670aa4dec 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/col.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/col.kt @@ -4,6 +4,7 @@ import org.jetbrains.kotlinx.dataframe.AnyColumnGroupAccessor import org.jetbrains.kotlinx.dataframe.ColumnGroupReference import org.jetbrains.kotlinx.dataframe.DataFrame import org.jetbrains.kotlinx.dataframe.DataRow +import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload import org.jetbrains.kotlinx.dataframe.api.ColColumnsSelectionDsl.Grammar import org.jetbrains.kotlinx.dataframe.api.ColColumnsSelectionDsl.Grammar.ColumnGroupName import org.jetbrains.kotlinx.dataframe.api.ColColumnsSelectionDsl.Grammar.ColumnSetName @@ -163,11 +164,13 @@ public interface ColColumnsSelectionDsl { * {@set [CommonColDocs.Note] NOTE: This overload is an identity function and can be omitted.} */ @Deprecated(IDENTITY_FUNCTION, ReplaceWith(COL_REPLACE)) + @AccessApiOverload public fun col(col: ColumnAccessor): ColumnAccessor = col /** * @include [ColReferenceDocs] {@set [CommonColDocs.ReceiverArg] myColumnGroup.} */ + @AccessApiOverload public fun SingleColumn>.col(col: ColumnAccessor): SingleColumn = this.ensureIsColumnGroup().transformSingle { val child = it.getCol(col) @@ -178,24 +181,28 @@ public interface ColColumnsSelectionDsl { /** * @include [ColReferenceDocs] {@set [CommonColDocs.ReceiverArg] myColumnGroup.} */ + @AccessApiOverload public fun AnyColumnGroupAccessor.col(col: ColumnAccessor): ColumnAccessor = this.ensureIsColumnGroup().column(col.path()) /** * @include [ColReferenceDocs] {@set [CommonColDocs.ReceiverArg] "myColumnGroup".} */ + @AccessApiOverload public fun String.col(col: ColumnAccessor): ColumnAccessor = columnGroup(this).ensureIsColumnGroup().column(col.path()) /** * @include [ColReferenceDocs] {@set [CommonColDocs.ReceiverArg] Type::myColumnGroup.} */ + @AccessApiOverload public fun KProperty<*>.col(col: ColumnAccessor): ColumnAccessor = columnGroup(this).ensureIsColumnGroup().column(col.path()) /** * @include [ColReferenceDocs] {@set [CommonColDocs.ReceiverArg] "pathTo"["myColumnGroup"].} */ + @AccessApiOverload public fun ColumnPath.col(col: ColumnAccessor): ColumnAccessor = columnGroup(this).ensureIsColumnGroup().column(col.path()) @@ -414,34 +421,40 @@ public interface ColColumnsSelectionDsl { /** * @include [ColKPropertyDocs] {@set [CommonColDocs.ReceiverArg]} */ + @AccessApiOverload public fun col(property: KProperty): SingleColumn = column(property) /** * @include [ColKPropertyDocs] {@set [CommonColDocs.ReceiverArg] myColumnGroup.} */ + @AccessApiOverload public fun SingleColumn>.col(property: KProperty): SingleColumn = col(property.name) /** * @include [ColKPropertyDocs] {@set [CommonColDocs.ReceiverArg] myColumnGroup.} */ + @AccessApiOverload public fun AnyColumnGroupAccessor.col(property: KProperty): ColumnAccessor = this.ensureIsColumnGroup().column(property) /** * @include [ColKPropertyDocs] {@set [CommonColDocs.ReceiverArg] "myColumnGroup".} */ + @AccessApiOverload public fun String.col(property: KProperty): ColumnAccessor = columnGroup(this).ensureIsColumnGroup().column(property) /** * @include [ColKPropertyDocs] {@set [CommonColDocs.ReceiverArg] Type::myColumnGroup.} */ + @AccessApiOverload public fun KProperty<*>.col(property: KProperty): ColumnAccessor = columnGroup(this).ensureIsColumnGroup().column(property) /** * @include [ColKPropertyDocs] {@set [CommonColDocs.ReceiverArg] "pathTo"["myColumnGroup"].} */ + @AccessApiOverload public fun ColumnPath.col(property: KProperty): ColumnAccessor = columnGroup(this).ensureIsColumnGroup().column(property) From 2a0fd9469c1fa45534375d944aaa10a8749860ab Mon Sep 17 00:00:00 2001 From: zaleslaw Date: Mon, 13 Jan 2025 11:53:00 +0100 Subject: [PATCH 2/2] Add @AccessApiOverload annotations to enhance API usage Annotated multiple methods with @AccessApiOverload to provide better API usability and to simplify overload selection for common use cases. The changes affect functions in various files, ensuring consistent application across the DataFrame API. --- .../dataframe/api/ColumnSelectionDsl.kt | 13 ++++++++++ .../kotlinx/dataframe/api/colGroup.kt | 17 +++++++++++++ .../jetbrains/kotlinx/dataframe/api/cols.kt | 25 +++++++++++++++++++ .../kotlinx/dataframe/api/columnRange.kt | 7 ++++++ .../kotlinx/dataframe/api/constructors.kt | 13 ++++++++++ 5 files changed, 75 insertions(+) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/ColumnSelectionDsl.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/ColumnSelectionDsl.kt index 4d345decf3..b080807373 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/ColumnSelectionDsl.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/ColumnSelectionDsl.kt @@ -4,6 +4,7 @@ import org.jetbrains.kotlinx.dataframe.ColumnsContainer import org.jetbrains.kotlinx.dataframe.DataColumn import org.jetbrains.kotlinx.dataframe.DataFrame import org.jetbrains.kotlinx.dataframe.DataRow +import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload import org.jetbrains.kotlinx.dataframe.columns.ColumnAccessor import org.jetbrains.kotlinx.dataframe.columns.ColumnGroup import org.jetbrains.kotlinx.dataframe.columns.ColumnPath @@ -30,18 +31,21 @@ public interface ColumnSelectionDsl : ColumnsContainer { * @include [CommonColumnReferenceInvokeDocs] * @return The [DataColumn] this [Column Reference][ColumnReference] or [-Accessor][ColumnAccessor] points to. */ + @AccessApiOverload public operator fun ColumnReference.invoke(): DataColumn = get(this) /** * @include [CommonColumnReferenceInvokeDocs] * @return The [ColumnGroup] this [Column Reference][ColumnReference] or [-Accessor][ColumnAccessor] points to. */ + @AccessApiOverload public operator fun ColumnReference>.invoke(): ColumnGroup = get(this) /** * @include [CommonColumnReferenceInvokeDocs] * @return The [FrameColumn] this [Column Reference][ColumnReference] or [-Accessor][ColumnAccessor] points to. */ + @AccessApiOverload public operator fun ColumnReference>.invoke(): FrameColumn = get(this) /** @@ -70,18 +74,21 @@ public interface ColumnSelectionDsl : ColumnsContainer { * @include [CommonKPropertyInvokeDocs] * @return The [DataColumn] this [KProperty Accessor][KProperty] points to. */ + @AccessApiOverload public operator fun KProperty.invoke(): DataColumn = this@ColumnSelectionDsl[this] /** * @include [CommonKPropertyInvokeDocs] * @return The [ColumnGroup] this [KProperty Accessor][KProperty] points to. */ + @AccessApiOverload public operator fun KProperty>.invoke(): ColumnGroup = this@ColumnSelectionDsl[this] /** * @include [CommonKPropertyInvokeDocs] * @return The [FrameColumn] this [KProperty Accessor][KProperty] points to. */ + @AccessApiOverload public operator fun KProperty>.invoke(): FrameColumn = this@ColumnSelectionDsl[this] /** @@ -105,6 +112,7 @@ public interface ColumnSelectionDsl : ColumnsContainer { */ @Suppress("INAPPLICABLE_JVM_NAME") @JvmName("KPropertyDataRowGet") + @AccessApiOverload public operator fun KProperty>.get(column: KProperty): DataColumn = invoke()[column] /** @@ -113,6 +121,7 @@ public interface ColumnSelectionDsl : ColumnsContainer { */ @Suppress("INAPPLICABLE_JVM_NAME") @JvmName("KPropertyDataRowGet") + @AccessApiOverload public operator fun KProperty>.get(column: KProperty>): ColumnGroup = invoke()[column] @@ -122,6 +131,7 @@ public interface ColumnSelectionDsl : ColumnsContainer { */ @Suppress("INAPPLICABLE_JVM_NAME") @JvmName("KPropertyDataRowGet") + @AccessApiOverload public operator fun KProperty>.get(column: KProperty>): FrameColumn = invoke()[column] @@ -129,12 +139,14 @@ public interface ColumnSelectionDsl : ColumnsContainer { * @include [CommonKPropertyGetDocs] * @return The [DataColumn] these [KProperty Accessors][KProperty] point to. */ + @AccessApiOverload public operator fun KProperty.get(column: KProperty): DataColumn = invoke().asColumnGroup()[column] /** * @include [CommonKPropertyGetDocs] * @return The [ColumnGroup] these [KProperty Accessors][KProperty] point to. */ + @AccessApiOverload public operator fun KProperty.get(column: KProperty>): ColumnGroup = invoke().asColumnGroup()[column] @@ -142,6 +154,7 @@ public interface ColumnSelectionDsl : ColumnsContainer { * @include [CommonKPropertyGetDocs] * @return The [FrameColumn] these [KProperty Accessors][KProperty] point to. */ + @AccessApiOverload public operator fun KProperty.get(column: KProperty>): FrameColumn = invoke().asColumnGroup()[column] diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/colGroup.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/colGroup.kt index 3a534f879a..aef1ffedd2 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/colGroup.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/colGroup.kt @@ -163,12 +163,14 @@ public interface ColGroupColumnsSelectionDsl { /** * @include [ColGroupReferenceDocs] {@set [CommonColGroupDocs.ReceiverArg]} */ + @AccessApiOverload public fun colGroup(colGroup: ColumnAccessor>): ColumnAccessor> = colGroup.ensureIsColumnGroup() /** * @include [ColGroupReferenceDocs] {@set [CommonColGroupDocs.ReceiverArg] myColumnGroup.} */ + @AccessApiOverload public fun SingleColumn>.colGroup(colGroup: ColumnAccessor>): SingleColumn> = this.ensureIsColumnGroup().transformSingle { val child = it.getCol(colGroup) @@ -182,24 +184,28 @@ public interface ColGroupColumnsSelectionDsl { /** * @include [ColGroupReferenceDocs] {@set [CommonColGroupDocs.ReceiverArg] myColumnGroup.} */ + @AccessApiOverload public fun AnyColumnGroupAccessor.colGroup(colGroup: ColumnAccessor>): ColumnAccessor> = this.ensureIsColumnGroup().columnGroup(colGroup.path()).ensureIsColumnGroup() /** * @include [ColGroupReferenceDocs] {@set [CommonColGroupDocs.ReceiverArg] "myColumnGroup".} */ + @AccessApiOverload public fun String.colGroup(colGroup: ColumnAccessor>): ColumnAccessor> = columnGroup(this).ensureIsColumnGroup().columnGroup(colGroup.path()).ensureIsColumnGroup() /** * @include [ColGroupReferenceDocs] {@set [CommonColGroupDocs.ReceiverArg] Type::myColumnGroup.} */ + @AccessApiOverload public fun KProperty<*>.colGroup(colGroup: ColumnAccessor>): ColumnAccessor> = columnGroup(this).ensureIsColumnGroup().columnGroup(colGroup.path()).ensureIsColumnGroup() /** * @include [ColGroupReferenceDocs] {@set [CommonColGroupDocs.ReceiverArg] "pathTo"["myColumnGroup"].} */ + @AccessApiOverload public fun ColumnPath.colGroup(colGroup: ColumnAccessor>): ColumnAccessor> = columnGroup(this).ensureIsColumnGroup().columnGroup(colGroup.path()).ensureIsColumnGroup() @@ -422,6 +428,7 @@ public interface ColGroupColumnsSelectionDsl { */ @Suppress("INAPPLICABLE_JVM_NAME") @JvmName("colGroupDataRowKProperty") + @AccessApiOverload public fun colGroup(property: KProperty>): SingleColumn> = columnGroup(property).ensureIsColumnGroup() @@ -436,12 +443,14 @@ public interface ColGroupColumnsSelectionDsl { */ @Suppress("INAPPLICABLE_JVM_NAME") @JvmName("colGroupDataRowKProperty") + @AccessApiOverload public fun SingleColumn>.colGroup(property: KProperty>): SingleColumn> = colGroup(property.name) /** * @include [ColGroupKPropertyDocs] {@set [CommonColGroupDocs.ReceiverArg] myColumnGroup.} */ + @AccessApiOverload public fun SingleColumn>.colGroup(property: KProperty): SingleColumn> = colGroup(property.name) @@ -450,12 +459,14 @@ public interface ColGroupColumnsSelectionDsl { */ @Suppress("INAPPLICABLE_JVM_NAME") @JvmName("colGroupDataRowKProperty") + @AccessApiOverload public fun AnyColumnGroupAccessor.colGroup(property: KProperty>): ColumnAccessor> = this.ensureIsColumnGroup().columnGroup(property).ensureIsColumnGroup() /** * @include [ColGroupKPropertyDocs] {@set [CommonColGroupDocs.ReceiverArg] myColumnGroup.} */ + @AccessApiOverload public fun AnyColumnGroupAccessor.colGroup(property: KProperty): ColumnAccessor> = this.ensureIsColumnGroup().columnGroup(property).ensureIsColumnGroup() @@ -464,12 +475,14 @@ public interface ColGroupColumnsSelectionDsl { */ @Suppress("INAPPLICABLE_JVM_NAME") @JvmName("colGroupDataRowKProperty") + @AccessApiOverload public fun String.colGroup(property: KProperty>): ColumnAccessor> = columnGroup(this).ensureIsColumnGroup().columnGroup(property).ensureIsColumnGroup() /** * @include [ColGroupKPropertyDocs] {@set [CommonColGroupDocs.ReceiverArg] "myColumnGroup".} */ + @AccessApiOverload public fun String.colGroup(property: KProperty): ColumnAccessor> = columnGroup(this).ensureIsColumnGroup().columnGroup(property).ensureIsColumnGroup() @@ -478,12 +491,14 @@ public interface ColGroupColumnsSelectionDsl { */ @Suppress("INAPPLICABLE_JVM_NAME") @JvmName("colGroupDataRowKProperty") + @AccessApiOverload public fun KProperty<*>.colGroup(property: KProperty>): ColumnAccessor> = columnGroup(this).ensureIsColumnGroup().columnGroup(property).ensureIsColumnGroup() /** * @include [ColGroupKPropertyDocs] {@set [CommonColGroupDocs.ReceiverArg] Type::myColumnGroup.} */ + @AccessApiOverload public fun KProperty<*>.colGroup(property: KProperty): ColumnAccessor> = columnGroup(this).ensureIsColumnGroup().columnGroup(property).ensureIsColumnGroup() @@ -492,12 +507,14 @@ public interface ColGroupColumnsSelectionDsl { */ @Suppress("INAPPLICABLE_JVM_NAME") @JvmName("colGroupDataRowKProperty") + @AccessApiOverload public fun ColumnPath.colGroup(property: KProperty>): ColumnAccessor> = columnGroup(this).ensureIsColumnGroup().columnGroup(property).ensureIsColumnGroup() /** * @include [ColGroupKPropertyDocs] {@set [CommonColGroupDocs.ReceiverArg] "pathTo"["myColumnGroup"].} */ + @AccessApiOverload public fun ColumnPath.colGroup(property: KProperty): ColumnAccessor> = columnGroup(this).ensureIsColumnGroup().columnGroup(property).ensureIsColumnGroup() diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/cols.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/cols.kt index bc79f2c0cc..dbe39a20dc 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/cols.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/cols.kt @@ -386,12 +386,14 @@ public interface ColsColumnsSelectionDsl { private interface ColumnsSelectionDslColsVarargColumnReferenceDocs /** @include [ColumnsSelectionDslColsVarargColumnReferenceDocs] */ + @AccessApiOverload public fun ColumnsSelectionDsl<*>.cols( firstCol: ColumnReference, vararg otherCols: ColumnReference, ): ColumnSet = asSingleColumn().cols(firstCol, *otherCols) /** @include [ColumnsSelectionDslColsVarargColumnReferenceDocs] */ + @AccessApiOverload public operator fun ColumnsSelectionDsl<*>.get( firstCol: ColumnReference, vararg otherCols: ColumnReference, @@ -408,6 +410,7 @@ public interface ColsColumnsSelectionDsl { private interface SingleColumnColsVarargColumnReferenceDocs /** @include [SingleColumnColsVarargColumnReferenceDocs] */ + @AccessApiOverload public fun SingleColumn>.cols( firstCol: ColumnReference, vararg otherCols: ColumnReference, @@ -416,6 +419,7 @@ public interface ColsColumnsSelectionDsl { /** * @include [SingleColumnColsVarargColumnReferenceDocs] */ + @AccessApiOverload public operator fun SingleColumn>.get( firstCol: ColumnReference, vararg otherCols: ColumnReference, @@ -429,13 +433,16 @@ public interface ColsColumnsSelectionDsl { * * `df.`[`select`][DataFrame.select]` { "myColumnGroup"`[`[`][String.cols]`columnA, columnB`[`]`][String.cols]` }` */ + @AccessApiOverload private interface StringColsVarargColumnReferenceDocs /** @include [StringColsVarargColumnReferenceDocs] */ + @AccessApiOverload public fun String.cols(firstCol: ColumnReference, vararg otherCols: ColumnReference): ColumnSet = columnGroup(this).cols(firstCol, *otherCols) /** @include [StringColsVarargColumnReferenceDocs] */ + @AccessApiOverload public operator fun String.get( firstCol: ColumnReference, vararg otherCols: ColumnReference, @@ -449,15 +456,18 @@ public interface ColsColumnsSelectionDsl { * * `df.`[`select`][DataFrame.select]` { DataSchemaType::myColumnGroup`[`[`][KProperty.cols]`"pathTo"["colA"], "pathTo"["colB"]`[`]`][KProperty.cols]` }` */ + @AccessApiOverload private interface KPropertyColsVarargColumnReferenceDocs /** @include [KPropertyColsVarargColumnReferenceDocs] */ + @AccessApiOverload public fun KProperty<*>.cols( firstCol: ColumnReference, vararg otherCols: ColumnReference, ): ColumnSet = columnGroup(this).cols(firstCol, *otherCols) /** @include [KPropertyColsVarargColumnReferenceDocs] */ + @AccessApiOverload public operator fun KProperty<*>.get( firstCol: ColumnReference, vararg otherCols: ColumnReference, @@ -473,13 +483,16 @@ public interface ColsColumnsSelectionDsl { * * `df.`[`select`][DataFrame.select]` { "pathTo"["columnGroup"]`[`[`][ColumnPath.cols]`columnA, columnB`[`]`][ColumnPath.cols]` }` */ + @AccessApiOverload private interface ColumnPathColsVarargColumnReferenceDocs /** @include [ColumnPathColsVarargColumnReferenceDocs] */ + @AccessApiOverload public fun ColumnPath.cols(firstCol: ColumnReference, vararg otherCols: ColumnReference): ColumnSet = columnGroup(this).cols(firstCol, *otherCols) /** @include [ColumnPathColsVarargColumnReferenceDocs] */ + @AccessApiOverload public operator fun ColumnPath.get( firstCol: ColumnReference, vararg otherCols: ColumnReference, @@ -762,13 +775,16 @@ public interface ColsColumnsSelectionDsl { * * `df.`[`select`][DataFrame.select]` { this`[`[`][ColumnsSelectionDsl.cols]`Type::colA, Type::colB`[`]`][ColumnsSelectionDsl.cols]` }` */ + @AccessApiOverload private interface ColumnsSelectionDslColsVarargKPropertyDocs /** @include [ColumnsSelectionDslColsVarargKPropertyDocs] */ + @AccessApiOverload public fun ColumnsSelectionDsl<*>.cols(firstCol: KProperty, vararg otherCols: KProperty): ColumnSet = this.asSingleColumn().cols(firstCol, *otherCols) /** @include [ColumnsSelectionDslColsVarargKPropertyDocs] */ + @AccessApiOverload public operator fun ColumnsSelectionDsl<*>.get( firstCol: KProperty, vararg otherCols: KProperty, @@ -785,12 +801,14 @@ public interface ColsColumnsSelectionDsl { private interface SingleColumnColsVarargKPropertyDocs /** @include [SingleColumnColsVarargKPropertyDocs] */ + @AccessApiOverload public fun SingleColumn>.cols( firstCol: KProperty, vararg otherCols: KProperty, ): ColumnSet = colsInternal(listOf(firstCol, *otherCols).map { pathOf(it.name) }).cast() /** @include [SingleColumnColsVarargKPropertyDocs] */ + @AccessApiOverload public operator fun SingleColumn>.get( firstCol: KProperty, vararg otherCols: KProperty, @@ -807,10 +825,12 @@ public interface ColsColumnsSelectionDsl { private interface StringColsVarargKPropertyDocs /** @include [StringColsVarargKPropertyDocs] */ + @AccessApiOverload public fun String.cols(firstCol: KProperty, vararg otherCols: KProperty): ColumnSet = columnGroup(this).cols(firstCol, *otherCols) /** @include [StringColsVarargKPropertyDocs] */ + @AccessApiOverload public operator fun String.get(firstCol: KProperty, vararg otherCols: KProperty): ColumnSet = cols(firstCol, *otherCols) @@ -825,10 +845,12 @@ public interface ColsColumnsSelectionDsl { private interface KPropertyColsVarargKPropertyDocs /** @include [KPropertyColsVarargKPropertyDocs] */ + @AccessApiOverload public fun KProperty<*>.cols(firstCol: KProperty, vararg otherCols: KProperty): ColumnSet = columnGroup(this).cols(firstCol, *otherCols) /** @include [KPropertyColsVarargKPropertyDocs] */ + @AccessApiOverload public operator fun KProperty<*>.get(firstCol: KProperty, vararg otherCols: KProperty): ColumnSet = cols(firstCol, *otherCols) @@ -840,13 +862,16 @@ public interface ColsColumnsSelectionDsl { * * `df.`[`select`][DataFrame.select]` { "pathTo"["columnGroup"]`[`[`][ColumnPath.cols]`Type::colA, Type::colB`[`]`][ColumnPath.cols]` }` */ + @AccessApiOverload private interface ColumnPathColsVarargKPropertyDocs /** @include [ColumnPathColsVarargKPropertyDocs] */ + @AccessApiOverload public fun ColumnPath.cols(firstCol: KProperty, vararg otherCols: KProperty): ColumnSet = columnGroup(this).cols(firstCol, *otherCols) /** @include [ColumnPathColsVarargKPropertyDocs] */ + @AccessApiOverload public operator fun ColumnPath.get(firstCol: KProperty, vararg otherCols: KProperty): ColumnSet = cols(firstCol, *otherCols) diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/columnRange.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/columnRange.kt index 81b1d67bfe..fea8fbf166 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/columnRange.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/columnRange.kt @@ -2,6 +2,7 @@ package org.jetbrains.kotlinx.dataframe.api import org.jetbrains.kotlinx.dataframe.AnyColumnReference import org.jetbrains.kotlinx.dataframe.DataFrame +import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload import org.jetbrains.kotlinx.dataframe.api.ColumnRangeColumnsSelectionDsl.Grammar import org.jetbrains.kotlinx.dataframe.columns.ColumnReference import org.jetbrains.kotlinx.dataframe.columns.ColumnSet @@ -82,6 +83,7 @@ public interface ColumnRangeColumnsSelectionDsl { * @include [CommonRangeOfColumnsDocs] * {@set [CommonRangeOfColumnsDocs.Example] `"fromColumn"`[`..`][String.rangeTo]`Type::toColumn`} */ + @AccessApiOverload public operator fun String.rangeTo(endInclusive: KProperty<*>): ColumnSet<*> = toColumnAccessor().rangeTo(endInclusive.toColumnAccessor()) @@ -89,6 +91,7 @@ public interface ColumnRangeColumnsSelectionDsl { * @include [CommonRangeOfColumnsDocs] * {@set [CommonRangeOfColumnsDocs.Example] `"fromColumn"`[`..`][String.rangeTo]`toColumn`} */ + @AccessApiOverload public operator fun String.rangeTo(endInclusive: AnyColumnReference): ColumnSet<*> = toColumnAccessor().rangeTo(endInclusive) @@ -103,6 +106,7 @@ public interface ColumnRangeColumnsSelectionDsl { * @include [CommonRangeOfColumnsDocs] * {@set [CommonRangeOfColumnsDocs.Example] `Type::fromColumn`[`..`][KProperty.rangeTo]`Type::toColumn`} */ + @AccessApiOverload public operator fun KProperty<*>.rangeTo(endInclusive: KProperty<*>): ColumnSet<*> = toColumnAccessor().rangeTo(endInclusive.toColumnAccessor()) @@ -110,6 +114,7 @@ public interface ColumnRangeColumnsSelectionDsl { * @include [CommonRangeOfColumnsDocs] * {@set [CommonRangeOfColumnsDocs.Example] `Type::fromColumn`[`..`][KProperty.rangeTo]`toColumn`} */ + @AccessApiOverload public operator fun KProperty<*>.rangeTo(endInclusive: AnyColumnReference): ColumnSet<*> = toColumnAccessor().rangeTo(endInclusive) @@ -124,6 +129,7 @@ public interface ColumnRangeColumnsSelectionDsl { * @include [CommonRangeOfColumnsDocs] * {@set [CommonRangeOfColumnsDocs.Example] `fromColumn`[`..`][ColumnReference.rangeTo]`Type::toColumn`} */ + @AccessApiOverload public operator fun AnyColumnReference.rangeTo(endInclusive: KProperty<*>): ColumnSet<*> = rangeTo(endInclusive.toColumnAccessor()) @@ -131,6 +137,7 @@ public interface ColumnRangeColumnsSelectionDsl { * @include [CommonRangeOfColumnsDocs] * {@set [CommonRangeOfColumnsDocs.Example] `fromColumn`[`..`][ColumnReference.rangeTo]`toColumn`} */ + @AccessApiOverload public operator fun AnyColumnReference.rangeTo(endInclusive: AnyColumnReference): ColumnSet<*> = createColumnSet { context -> val startPath = this@rangeTo.resolveSingle(context)!!.path diff --git a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/constructors.kt b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/constructors.kt index 13c6ade1be..6ca602a5b4 100644 --- a/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/constructors.kt +++ b/core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/api/constructors.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlinx.dataframe.DataColumn import org.jetbrains.kotlinx.dataframe.DataFrame import org.jetbrains.kotlinx.dataframe.DataRow import org.jetbrains.kotlinx.dataframe.RowExpression +import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload import org.jetbrains.kotlinx.dataframe.annotations.Interpretable import org.jetbrains.kotlinx.dataframe.annotations.Refine import org.jetbrains.kotlinx.dataframe.columns.ColumnAccessor @@ -46,6 +47,7 @@ public fun column(name: String): ColumnAccessor = ColumnAccessorImpl(name public fun column(path: ColumnPath): ColumnAccessor = ColumnAccessorImpl(path) +@AccessApiOverload public fun column(property: KProperty): ColumnAccessor = ColumnAccessorImpl(property.name) public fun ColumnGroupReference.column(): ColumnDelegate = ColumnDelegate(this) @@ -54,6 +56,7 @@ public fun ColumnGroupReference.column(name: String): ColumnAccessor = Co public fun ColumnGroupReference.column(path: ColumnPath): ColumnAccessor = ColumnAccessorImpl(this.path() + path) +@AccessApiOverload public fun ColumnGroupReference.column(property: KProperty): ColumnAccessor = ColumnAccessorImpl(this.path() + property.name) @@ -90,6 +93,7 @@ public fun valueColumn(path: ColumnPath): ColumnAccessor = column(path) @JvmName("valueColumnTyped") public fun valueColumn(path: ColumnPath): ColumnAccessor = column(path) +@AccessApiOverload public fun valueColumn(property: KProperty): ColumnAccessor = column(property.name) public fun ColumnGroupReference.valueColumn(): ColumnDelegate = ColumnDelegate(this) @@ -109,6 +113,7 @@ public fun ColumnGroupReference.valueColumn(path: ColumnPath): ColumnAccessor ColumnGroupReference.valueColumn(path: ColumnPath): ColumnAccessor = ColumnAccessorImpl(this.path() + path) +@AccessApiOverload public fun ColumnGroupReference.valueColumn(property: KProperty): ColumnAccessor = ColumnAccessorImpl(this.path() + property.name) @@ -132,8 +137,10 @@ public fun columnGroup(path: ColumnPath): ColumnAccessor = column(path) public fun columnGroup(path: ColumnPath): ColumnAccessor> = column(path) @JvmName("columnGroupDataRowKProperty") +@AccessApiOverload public fun columnGroup(property: KProperty>): ColumnAccessor> = column(property) +@AccessApiOverload public fun columnGroup(property: KProperty): ColumnAccessor> = column(property.name) public fun ColumnGroupReference.columnGroup(): ColumnDelegate = ColumnDelegate(this) @@ -155,9 +162,11 @@ public fun ColumnGroupReference.columnGroup(path: ColumnPath): ColumnAccesso ColumnAccessorImpl(this.path() + path) @JvmName("columnGroupDataRowKProperty") +@AccessApiOverload public fun ColumnGroupReference.columnGroup(property: KProperty>): ColumnAccessor> = ColumnAccessorImpl(this.path() + property.name) +@AccessApiOverload public fun ColumnGroupReference.columnGroup(property: KProperty): ColumnAccessor> = ColumnAccessorImpl(this.path() + property.name) @@ -181,8 +190,10 @@ public fun frameColumn(path: ColumnPath): ColumnAccessor = column(path public fun frameColumn(path: ColumnPath): ColumnAccessor> = column(path) @JvmName("frameColumnDataFrameKProperty") +@AccessApiOverload public fun frameColumn(property: KProperty>): ColumnAccessor> = column(property) +@AccessApiOverload public fun frameColumn(property: KProperty>): ColumnAccessor> = column(property.name) public fun ColumnGroupReference.frameColumn(): ColumnDelegate = ColumnDelegate(this) @@ -204,9 +215,11 @@ public fun ColumnGroupReference.frameColumn(path: ColumnPath): ColumnAccesso ColumnAccessorImpl(this.path() + path) @JvmName("frameColumnDataFrameKProperty") +@AccessApiOverload public fun ColumnGroupReference.frameColumn(property: KProperty>): ColumnAccessor> = ColumnAccessorImpl(this.path() + property.name) +@AccessApiOverload public fun ColumnGroupReference.frameColumn(property: KProperty>): ColumnAccessor> = ColumnAccessorImpl(this.path() + property.name)