Skip to content

Commit 1181d57

Browse files
committed
renamed DataColumn.createX() functions and handled other feedback
1 parent baaa014 commit 1181d57

File tree

16 files changed

+52
-48
lines changed

16 files changed

+52
-48
lines changed

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public interface DataColumn<out T> : BaseColumn<T> {
133133
* Creates either a [FrameColumn], [ColumnGroup], or [ValueColumn] by analyzing each value in
134134
* [values].
135135
*
136-
* This is safer but less efficient than the other functions.
136+
* This is safer but slower than the other functions.
137137
*
138138
* Some conversions are done automatically to attempt to unify the values.
139139
*
@@ -151,7 +151,7 @@ public interface DataColumn<out T> : BaseColumn<T> {
151151
* See [TypeSuggestion] for more information.
152152
* @param nullable optionally you can specify whether [values] contains nulls, if `null` it is inferred.
153153
*/
154-
public fun <T> createWithTypeInference(
154+
public fun <T> createByInference(
155155
name: String,
156156
values: List<T>,
157157
suggestedType: TypeSuggestion = TypeSuggestion.Infer,
@@ -168,7 +168,7 @@ public interface DataColumn<out T> : BaseColumn<T> {
168168
* Calls [createColumnGroup], [createFrameColumn], or [createValueColumn] based on
169169
* [type].
170170
*
171-
* This may be unsafe but is more efficient than [createWithTypeInference].
171+
* This may be unsafe but is more efficient than [createByInference].
172172
*
173173
* Be careful; Values in [values] are NOT checked to adhere to the given [type], nor
174174
* do we check whether there are unexpected nulls among the values.
@@ -180,7 +180,7 @@ public interface DataColumn<out T> : BaseColumn<T> {
180180
* @param type the (unchecked) common type of [values]
181181
* @param infer in case a [ValueColumn] is created, this controls how/whether types need to be inferred
182182
*/
183-
public fun <T> createUnsafe(
183+
public fun <T> createByType(
184184
name: String,
185185
values: List<T>,
186186
type: KType,
@@ -198,7 +198,8 @@ public interface DataColumn<out T> : BaseColumn<T> {
198198
* Calls [createColumnGroup], [createFrameColumn], or [createValueColumn] based on
199199
* type [T].
200200
*
201-
* This is generally safe, as [T] can be inferred, and more efficient than [createWithTypeInference].
201+
* This is generally safe, as [T] can be inferred by the compiler,
202+
* and more efficient than [createByInference].
202203
*
203204
* Be careful when casting occurs; Values in [values] are NOT checked to adhere to the given/inferred type [T],
204205
* nor do we check whether there are unexpected nulls among the values.
@@ -210,11 +211,11 @@ public interface DataColumn<out T> : BaseColumn<T> {
210211
* @param values the values to represent each row in the column
211212
* @param infer in case a [ValueColumn] is created, this controls how/whether types need to be inferred
212213
*/
213-
public inline fun <reified T> createUnsafe(
214+
public inline fun <reified T> createByType(
214215
name: String,
215216
values: List<T>,
216217
infer: Infer = Infer.None,
217-
): DataColumn<T> = createUnsafe(name, values, typeOf<T>(), infer)
218+
): DataColumn<T> = createByType(name, values, typeOf<T>(), infer)
218219

219220
/** Creates an empty [DataColumn] with given [name]. */
220221
public fun empty(name: String = ""): AnyCol = createValueColumn(name, emptyList<Unit>(), typeOf<Unit>())

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ public fun dataFrameOf(header: Iterable<String>, values: Iterable<Any?>): DataFr
301301

302302
public inline fun <T, reified C> dataFrameOf(header: Iterable<T>, fill: (T) -> Iterable<C>): DataFrame<*> =
303303
header.map { value ->
304-
DataColumn.createWithTypeInference(
304+
DataColumn.createByInference(
305305
name = value.toString(),
306306
values = fill(value).asList(),
307307
suggestedType = TypeSuggestion.InferWithUpperbound(typeOf<C>()),
@@ -329,7 +329,7 @@ public class DataFrameBuilder(private val header: List<String>) {
329329
@JvmName("invoke1")
330330
internal fun withValues(values: Iterable<Any?>): DataFrame<*> =
331331
withValuesImpl(header, values.asList()).map { (name, values) ->
332-
DataColumn.createWithTypeInference(name, values)
332+
DataColumn.createByInference(name, values)
333333
}.toDataFrame()
334334

335335
public operator fun invoke(args: Sequence<Any?>): DataFrame<*> = invoke(*args.toList().toTypedArray())
@@ -341,7 +341,7 @@ public class DataFrameBuilder(private val header: List<String>) {
341341

342342
public inline operator fun <reified T> invoke(crossinline valuesBuilder: (String) -> Iterable<T>): DataFrame<*> =
343343
withColumns { name ->
344-
DataColumn.createWithTypeInference(
344+
DataColumn.createByInference(
345345
name = name,
346346
values = valuesBuilder(name).asList(),
347347
suggestedType = TypeSuggestion.InferWithUpperbound(typeOf<T>()),
@@ -370,15 +370,15 @@ public class DataFrameBuilder(private val header: List<String>) {
370370

371371
public inline fun <reified C> fillIndexed(nrow: Int, crossinline init: (Int, String) -> C): DataFrame<*> =
372372
withColumns { name ->
373-
DataColumn.createWithTypeInference(
373+
DataColumn.createByInference(
374374
name = name,
375375
values = List(nrow) { init(it, name) },
376376
)
377377
}
378378

379379
public inline fun <reified C> fill(nrow: Int, crossinline init: (Int) -> C): DataFrame<*> =
380380
withColumns { name ->
381-
DataColumn.createWithTypeInference(
381+
DataColumn.createByInference(
382382
name = name,
383383
values = List(nrow, init),
384384
)

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,20 @@ public inline fun <T, reified R> DataColumn<T>.map(
3434
crossinline transform: (T) -> R,
3535
): DataColumn<R> {
3636
val newValues = Array(size()) { transform(get(it)) }.asList()
37-
return DataColumn.createUnsafe(name(), newValues, typeOf<R>(), infer)
37+
return DataColumn.createByType(name(), newValues, typeOf<R>(), infer)
3838
}
3939

4040
public fun <T, R> DataColumn<T>.map(type: KType, infer: Infer = Infer.Nulls, transform: (T) -> R): DataColumn<R> {
4141
val values = Array<Any?>(size()) { transform(get(it)) }.asList()
42-
return DataColumn.createUnsafe(name(), values, type, infer).cast()
42+
return DataColumn.createByType(name(), values, type, infer).cast()
4343
}
4444

4545
public inline fun <T, reified R> DataColumn<T>.mapIndexed(
4646
infer: Infer = Infer.Nulls,
4747
crossinline transform: (Int, T) -> R,
4848
): DataColumn<R> {
4949
val newValues = Array(size()) { transform(it, get(it)) }.asList()
50-
return DataColumn.createUnsafe(name(), newValues, typeOf<R>(), infer)
50+
return DataColumn.createByType(name(), newValues, typeOf<R>(), infer)
5151
}
5252

5353
public fun <T, R> DataColumn<T>.mapIndexed(
@@ -56,7 +56,7 @@ public fun <T, R> DataColumn<T>.mapIndexed(
5656
transform: (Int, T) -> R,
5757
): DataColumn<R> {
5858
val values = Array<Any?>(size()) { transform(it, get(it)) }.asList()
59-
return DataColumn.createUnsafe(name(), values, type, infer).cast()
59+
return DataColumn.createByType(name(), values, type, infer).cast()
6060
}
6161

6262
// endregion

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ private interface CommonDataColumnSortWithDocs
9494

9595
/** @include [CommonDataColumnSortWithDocs] */
9696
public fun <T, C : DataColumn<T>> C.sortWith(comparator: Comparator<T>): C =
97-
DataColumn.createUnsafe(name, values().sortedWith(comparator), type) as C
97+
DataColumn.createByType(name, values().sortedWith(comparator), type) as C
9898

9999
/** @include [CommonDataColumnSortWithDocs] */
100100
public fun <T, C : DataColumn<T>> C.sortWith(comparator: (T, T) -> Int): C = sortWith(Comparator(comparator))

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,10 +190,10 @@ public abstract class CreateDataFrameDsl<T> : TraversePropertiesDsl {
190190
add(columnName, expression)
191191

192192
public inline infix fun <reified R> String.from(inferType: InferType<T, R>): Unit =
193-
add(DataColumn.createWithTypeInference(this, source.map { inferType.expression(it) }))
193+
add(DataColumn.createByInference(this, source.map { inferType.expression(it) }))
194194

195195
public inline infix fun <reified R> KProperty<R>.from(inferType: InferType<T, R>): Unit =
196-
add(DataColumn.createWithTypeInference(columnName, source.map { inferType.expression(it) }))
196+
add(DataColumn.createByInference(columnName, source.map { inferType.expression(it) }))
197197

198198
public data class InferType<T, R>(val expression: (T) -> R)
199199

@@ -317,13 +317,13 @@ public interface ValueProperty<T> {
317317

318318
public fun Map<String, Iterable<Any?>>.toDataFrame(): AnyFrame =
319319
map {
320-
DataColumn.createWithTypeInference(it.key, it.value.asList())
320+
DataColumn.createByInference(it.key, it.value.asList())
321321
}.toDataFrame()
322322

323323
@JvmName("toDataFrameColumnPathAnyNullable")
324324
public fun Map<ColumnPath, Iterable<Any?>>.toDataFrame(): AnyFrame =
325325
map {
326-
it.key to DataColumn.createWithTypeInference(
326+
it.key to DataColumn.createByInference(
327327
name = it.key.last(),
328328
values = it.value.asList(),
329329
)

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import kotlin.reflect.typeOf
1414
// region DataRow
1515

1616
public fun <T> DataRow<T>.transpose(): DataFrame<NameValuePair<*>> {
17-
val valueColumn = DataColumn.createWithTypeInference(NameValuePair<*>::value.columnName, values)
17+
val valueColumn = DataColumn.createByInference(NameValuePair<*>::value.columnName, values)
1818
val nameColumn = owner.columnNames().toValueColumn(NameValuePair<*>::name)
1919
return dataFrameOf(nameColumn, valueColumn).cast()
2020
}
@@ -24,7 +24,7 @@ public inline fun <reified T> AnyRow.transposeTo(): DataFrame<NameValuePair<T>>
2424
@PublishedApi
2525
internal fun <T> AnyRow.transposeTo(type: KType): DataFrame<NameValuePair<T>> {
2626
val convertedValues = values.map { it?.convertTo(type) as T? }
27-
val valueColumn = DataColumn.createWithTypeInference(NameValuePair<T>::value.columnName, convertedValues)
27+
val valueColumn = DataColumn.createByInference(NameValuePair<T>::value.columnName, convertedValues)
2828
val nameColumn = owner.columnNames().toValueColumn(NameValuePair<T>::name)
2929
return dataFrameOf(nameColumn, valueColumn).cast()
3030
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -314,19 +314,19 @@ public fun NullabilityOptions.applyNullability(data: List<Any?>, expectedNulls:
314314

315315
public inline fun <reified T> Iterable<T>.toColumn(name: String = "", infer: Infer = Infer.Nulls): DataColumn<T> =
316316
if (infer == Infer.Type) {
317-
DataColumn.createWithTypeInference(name, asList())
317+
DataColumn.createByInference(name, asList())
318318
} else {
319-
DataColumn.createUnsafe(name, asList(), typeOf<T>(), infer)
319+
DataColumn.createByType(name, asList(), typeOf<T>(), infer)
320320
}.forceResolve()
321321

322322
public inline fun <reified T> Iterable<*>.toColumnOf(name: String = ""): DataColumn<T> =
323-
DataColumn.createUnsafe(name, asList() as List<T>, typeOf<T>()).forceResolve()
323+
DataColumn.createByType(name, asList() as List<T>, typeOf<T>()).forceResolve()
324324

325325
public inline fun <reified T> Iterable<T>.toColumn(ref: ColumnReference<T>): DataColumn<T> =
326-
DataColumn.createUnsafe(ref.name(), asList()).forceResolve()
326+
DataColumn.createByType(ref.name(), asList()).forceResolve()
327327

328328
public inline fun <reified T> Iterable<T>.toColumn(property: KProperty<T>): DataColumn<T> =
329-
DataColumn.createUnsafe(property.columnName, asList()).forceResolve()
329+
DataColumn.createByType(property.columnName, asList()).forceResolve()
330330

331331
public fun Iterable<String>.toPath(): ColumnPath = ColumnPath(asList())
332332

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ public fun <T> DataColumn<T>.valueCounts(
4040
}
4141
if (dropNA) grouped = grouped.filter { !it.first.isNA }
4242
val nulls = if (dropNA) false else hasNulls()
43-
val values = DataColumn.createUnsafe(name(), grouped.map { it.first }, type().withNullability(nulls))
43+
val values = DataColumn.createByType(name(), grouped.map { it.first }, type().withNullability(nulls))
4444
val countName = if (resultColumn == name()) resultColumn + "1" else resultColumn
45-
val counts = DataColumn.createUnsafe(countName, grouped.map { it.second }, typeOf<Int>())
45+
val counts = DataColumn.createByType(countName, grouped.map { it.second }, typeOf<Int>())
4646
return dataFrameOf(values, counts).cast()
4747
}
4848

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ internal fun <A, B> DataFrame<A>.joinWithImpl(
9292
}
9393

9494
val df: DataFrame<*> = outputData.mapIndexed { index, values ->
95-
DataColumn.createWithTypeInference(generator.names[index], values)
95+
DataColumn.createByInference(generator.names[index], values)
9696
}.toDataFrame()
9797

9898
return df.cast()

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ internal fun DataColumn<String?>.tryParseImpl(options: ParserOptions?): DataColu
529529

530530
// Create a new column with the parsed values,
531531
// createColumnGuessingType is used to handle unifying values if needed
532-
return DataColumn.createWithTypeInference(
532+
return DataColumn.createByInference(
533533
name = name(),
534534
values = parsedValues,
535535
suggestedType = TypeSuggestion.Use(type),
@@ -543,7 +543,7 @@ internal fun <T> DataColumn<String?>.parse(parser: StringParser<T>, options: Par
543543
handler(it.trim()) ?: throw IllegalStateException("Couldn't parse '$it' into type ${parser.type}")
544544
}
545545
}
546-
return DataColumn.createWithTypeInference(
546+
return DataColumn.createByInference(
547547
name = name(),
548548
values = parsedValues,
549549
suggestedType = TypeSuggestion.Use(parser.type.withNullability(hasNulls)),

0 commit comments

Comments
 (0)