Skip to content

Add KDocs for the flatten operation #1064

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Feb 21, 2025
Merged
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 @@ -7,16 +7,64 @@ import org.jetbrains.kotlinx.dataframe.annotations.Interpretable
import org.jetbrains.kotlinx.dataframe.annotations.Refine
import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
import org.jetbrains.kotlinx.dataframe.columns.toColumnSet
import org.jetbrains.kotlinx.dataframe.documentation.DocumentationUrls
import org.jetbrains.kotlinx.dataframe.documentation.ExcludeFromSources
import org.jetbrains.kotlinx.dataframe.documentation.SelectingColumns
import org.jetbrains.kotlinx.dataframe.impl.api.flattenImpl
import kotlin.reflect.KProperty

// region DataFrame

/**
* ## The Flatten Operation
*
* Removes {@get [FlattenDocs.GROUPS]} column groups in the [DataFrame], replacing them with their leaf columns.
*
* __NOTE:__ Columns after flattening will keep their original names.
* Potential column name clashes are resolved by adding minimal possible name prefix from ancestor columns.
*
* The columns to flatten need to be selected.
* See [Selecting Columns][FlattenDocs.FlattenSelectingOptions] for all the selecting options
*
* @param [keepParentNameForColumns\] If true, retains the parent column name as a prefix for the flattened columns.
* The prefix is separated from the original column names using the provided separator.
* Defaults to `false`.
* @param [separator\] The string used to separate parent column names and the original column names when `keepParentNameForColumns` is `true`.
* Defaults to `"_"`.
* {@get [FLATTEN_PARAM] @param [columns\]
* The names of the columns or selector determining which column groups should be flattened.}
*
* @return A new [DataFrame] with the {@get [FlattenDocs.GROUPS]} column groups flattened.
*
* @see {@include [DocumentationUrls.Flatten]}
*/
@ExcludeFromSources
@Suppress("ClassName")
private interface FlattenDocs {
interface FLATTEN_PARAM

interface GROUPS

/**
* @include [SelectingColumns] {@set [SelectingColumns.OPERATION] [flatten][flatten]}
*/
interface FlattenSelectingOptions
}

/**
* {@include [FlattenDocs]}
* {@set [FlattenDocs.GROUPS] all}
* {@set [FlattenDocs.FLATTEN_PARAM]}
*/
@Refine
@Interpretable("FlattenDefault")
public fun <T> DataFrame<T>.flatten(keepParentNameForColumns: Boolean = false, separator: String = "_"): DataFrame<T> =
flatten(keepParentNameForColumns, separator) { all() }

/**
* {@include [FlattenDocs]}
* {@set [FlattenDocs.GROUPS] specified}
*/
@Refine
@Interpretable("Flatten0")
public fun <T, C> DataFrame<T>.flatten(
Expand All @@ -25,19 +73,31 @@ public fun <T, C> DataFrame<T>.flatten(
columns: ColumnsSelector<T, C>,
): DataFrame<T> = flattenImpl(columns, keepParentNameForColumns, separator)

/**
* {@include [FlattenDocs]}
* {@set [FlattenDocs.GROUPS] selected}
*/
public fun <T> DataFrame<T>.flatten(
vararg columns: String,
keepParentNameForColumns: Boolean = false,
separator: String = "_",
): DataFrame<T> = flatten(keepParentNameForColumns, separator) { columns.toColumnSet() }

/**
* {@include [FlattenDocs]}
* {@set [FlattenDocs.GROUPS] selected}
*/
@AccessApiOverload
public fun <T, C> DataFrame<T>.flatten(
vararg columns: ColumnReference<C>,
keepParentNameForColumns: Boolean = false,
separator: String = "_",
): DataFrame<T> = flatten(keepParentNameForColumns, separator) { columns.toColumnSet() }

/**
* {@include [FlattenDocs]}
* {@set [FlattenDocs.GROUPS] selected}
*/
@AccessApiOverload
public fun <T, C> DataFrame<T>.flatten(
vararg columns: KProperty<C>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ internal interface DocumentationUrls {
/** <a href="{@include [Url]}/distinct.html">See `distinct` on the documentation website.</a> */
interface Distinct

/** <a href="{@include [Url]}/flatten.html">See `flatten` on the documentation website.</a> */
interface Flatten

/** <a href="{@include [Url]}/cumsum.html">See `cumSum` on the documentation website.</a> */
interface CumSum

Expand Down