Skip to content

Commit 24add0a

Browse files
authored
Add documentation metadata and overloads for distinct API (#1023)
* Add documentation metadata and overloads for `distinct` API * Add DocumentationUrls entry for the `remove` function This commit adds a new entry for the `remove` function to the DocumentationUrls interface, linking it to the corresponding documentation page. This ensures consistency and provides easy access to the remove function details.
1 parent 0e39eba commit 24add0a

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

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

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@ import org.jetbrains.kotlinx.dataframe.AnyColumnReference
44
import org.jetbrains.kotlinx.dataframe.ColumnsSelector
55
import org.jetbrains.kotlinx.dataframe.DataFrame
66
import org.jetbrains.kotlinx.dataframe.annotations.AccessApiOverload
7+
import org.jetbrains.kotlinx.dataframe.api.Select.SelectSelectingOptions
78
import org.jetbrains.kotlinx.dataframe.columns.ColumnSet
89
import org.jetbrains.kotlinx.dataframe.columns.SingleColumn
910
import org.jetbrains.kotlinx.dataframe.columns.toColumnSet
11+
import org.jetbrains.kotlinx.dataframe.documentation.DocumentationUrls
1012
import org.jetbrains.kotlinx.dataframe.documentation.DslGrammarTemplateColumnsSelectionDsl.DslGrammarTemplate
13+
import org.jetbrains.kotlinx.dataframe.documentation.ExcludeFromSources
1114
import org.jetbrains.kotlinx.dataframe.documentation.Indent
1215
import org.jetbrains.kotlinx.dataframe.exceptions.DuplicateColumnNamesException
1316
import org.jetbrains.kotlinx.dataframe.impl.columns.DistinctColumnSet
@@ -16,33 +19,92 @@ import kotlin.reflect.KProperty
1619

1720
// region DataFrame
1821

22+
23+
/**
24+
* ## The Distinct Operation
25+
*
26+
* It removes duplicated rows based on {@get PHRASE_ENDING}.
27+
*
28+
* __NOTE:__ The rows in the resulting [DataFrame] are in the same order as they were in the original [DataFrame].
29+
*
30+
* {@get [DISTINCT_PARAM] @param [columns]
31+
* The names of the columns to consider for evaluating distinct rows.}
32+
*
33+
* @return A new DataFrame containing only distinct rows.
34+
*
35+
* @see [Selecting Columns][SelectSelectingOptions].
36+
* @see {@include [DocumentationUrls.Distinct]}
37+
*/
38+
@ExcludeFromSources
39+
private interface DistinctDocs {
40+
interface DISTINCT_PARAM
41+
}
42+
43+
/**
44+
* {@include [DistinctDocs]}
45+
* {@set PHRASE_ENDING all columns}.
46+
* {@set [DistinctDocs.DISTINCT_PARAM]}
47+
*/
1948
public fun <T> DataFrame<T>.distinct(): DataFrame<T> = distinctBy { all() }
2049

50+
/**
51+
* {@include [DistinctDocs]}
52+
* {@set PHRASE_ENDING the specified columns}.
53+
*/
2154
public fun <T, C> DataFrame<T>.distinct(columns: ColumnsSelector<T, C>): DataFrame<T> = select(columns).distinct()
2255

56+
/**
57+
* {@include [DistinctDocs]}
58+
* {@set PHRASE_ENDING the specified columns}.
59+
*/
2360
@AccessApiOverload
2461
public fun <T> DataFrame<T>.distinct(vararg columns: KProperty<*>): DataFrame<T> =
2562
distinct {
2663
val set = columns.toColumnSet()
2764
set
2865
}
2966

67+
/**
68+
* {@include [DistinctDocs]}
69+
* {@set PHRASE_ENDING the specified columns}.
70+
*/
3071
public fun <T> DataFrame<T>.distinct(vararg columns: String): DataFrame<T> = distinct { columns.toColumnSet() }
3172

73+
/**
74+
* {@include [DistinctDocs]}
75+
* {@set PHRASE_ENDING the specified columns}.
76+
*/
3277
@AccessApiOverload
3378
public fun <T> DataFrame<T>.distinct(vararg columns: AnyColumnReference): DataFrame<T> =
3479
distinct { columns.toColumnSet() }
3580

81+
/**
82+
* {@include [DistinctDocs]}
83+
* {@set PHRASE_ENDING the specified columns}.
84+
*/
3685
@AccessApiOverload
3786
public fun <T> DataFrame<T>.distinctBy(vararg columns: KProperty<*>): DataFrame<T> =
3887
distinctBy { columns.toColumnSet() }
3988

89+
/**
90+
* {@include [DistinctDocs]}
91+
* {@set PHRASE_ENDING the specified columns}.
92+
*/
4093
public fun <T> DataFrame<T>.distinctBy(vararg columns: String): DataFrame<T> = distinctBy { columns.toColumnSet() }
4194

95+
/**
96+
* {@include [DistinctDocs]}
97+
* {@set PHRASE_ENDING the specified columns}.
98+
*/
4299
@AccessApiOverload
43100
public fun <T> DataFrame<T>.distinctBy(vararg columns: AnyColumnReference): DataFrame<T> =
44101
distinctBy { columns.toColumnSet() }
45102

103+
104+
/**
105+
* {@include [DistinctDocs]}
106+
* {@set PHRASE_ENDING the specified columns}.
107+
*/
46108
public fun <T, C> DataFrame<T>.distinctBy(columns: ColumnsSelector<T, C>): DataFrame<T> {
47109
val cols = get(columns)
48110
val distinctIndices = indices.distinctBy { i -> cols.map { it[i] } }

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/documentation/DocumentationUrls.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,7 @@ internal interface DocumentationUrls {
7777

7878
/** [See `remove` on the documentation website.]({@include [Url]}/remove.html) */
7979
interface Remove
80+
81+
/** <a href="{@include [Url]}/distinct.html">See `distinct` on the documentation website.</a> */
82+
interface Distinct
8083
}

0 commit comments

Comments
 (0)