Skip to content

Commit 3282657

Browse files
committed
Add non-inline overload for convertTo that accepts KType.
1 parent 0677836 commit 3282657

File tree

4 files changed

+9
-8
lines changed

4 files changed

+9
-8
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import kotlin.reflect.typeOf
1919

2020
public fun <T> AnyFrame.cast(): DataFrame<T> = this as DataFrame<T>
2121

22-
public inline fun <reified T> AnyFrame.cast(verify: Boolean = true): DataFrame<T> = if (verify) convertToImpl(typeOf<T>(), allowConversion = false, ExtraColumns.Keep)
22+
public inline fun <reified T> AnyFrame.cast(verify: Boolean = true): DataFrame<T> = if (verify) convertToImpl(typeOf<T>(), allowConversion = false, ExtraColumns.Keep).cast()
2323
else cast()
2424

2525
public fun <T> AnyRow.cast(): DataRow<T> = this as DataRow<T>

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@ package org.jetbrains.kotlinx.dataframe.api
33
import org.jetbrains.kotlinx.dataframe.AnyFrame
44
import org.jetbrains.kotlinx.dataframe.DataFrame
55
import org.jetbrains.kotlinx.dataframe.impl.api.convertToImpl
6+
import kotlin.reflect.KType
67
import kotlin.reflect.typeOf
78

89
public enum class ExtraColumns { Remove, Keep, Fail }
910

1011
// region DataFrame
1112

12-
public inline fun <reified T> AnyFrame.convertTo(extraColumnsBehavior: ExtraColumns = ExtraColumns.Keep): DataFrame<T> = convertToImpl(typeOf<T>(), true, extraColumnsBehavior)
13+
public inline fun <reified T> AnyFrame.convertTo(extraColumnsBehavior: ExtraColumns = ExtraColumns.Keep): DataFrame<T> = convertTo(typeOf<T>(), extraColumnsBehavior).cast()
14+
15+
public fun AnyFrame.convertTo(schemaType: KType, extraColumnsBehavior: ExtraColumns = ExtraColumns.Keep): AnyFrame = convertToImpl(schemaType, true, extraColumnsBehavior)
1316

1417
// endregion

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@ package org.jetbrains.kotlinx.dataframe.impl.api
22

33
import org.jetbrains.kotlinx.dataframe.AnyFrame
44
import org.jetbrains.kotlinx.dataframe.DataColumn
5-
import org.jetbrains.kotlinx.dataframe.DataFrame
65
import org.jetbrains.kotlinx.dataframe.api.ExtraColumns
76
import org.jetbrains.kotlinx.dataframe.api.asColumnGroup
8-
import org.jetbrains.kotlinx.dataframe.api.cast
97
import org.jetbrains.kotlinx.dataframe.api.convertTo
108
import org.jetbrains.kotlinx.dataframe.api.name
119
import org.jetbrains.kotlinx.dataframe.api.toDataFrame
@@ -22,7 +20,7 @@ import kotlin.reflect.KType
2220
import kotlin.reflect.jvm.jvmErasure
2321

2422
@PublishedApi
25-
internal fun <T> AnyFrame.convertToImpl(type: KType, allowConversion: Boolean, extraColumns: ExtraColumns): DataFrame<T> {
23+
internal fun AnyFrame.convertToImpl(type: KType, allowConversion: Boolean, extraColumns: ExtraColumns): AnyFrame {
2624
fun AnyFrame.convertToSchema(schema: DataFrameSchema): AnyFrame {
2725
if (ncol == 0) return schema.createEmptyDataFrame()
2826
var visited = 0
@@ -83,5 +81,5 @@ internal fun <T> AnyFrame.convertToImpl(type: KType, allowConversion: Boolean, e
8381

8482
val clazz = type.jvmErasure
8583
val marker = MarkersExtractor[clazz]
86-
return convertToSchema(marker.schema).cast()
84+
return convertToSchema(marker.schema)
8785
}

core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/testSets/person/DataFrameTests.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2164,7 +2164,7 @@ class DataFrameTests : BaseTest() {
21642164
df.add("col") { 1 }.convertTo<Target>(ExtraColumns.Remove) shouldBe df
21652165

21662166
val added = df.add("col") { 1 }
2167-
added.convertToImpl<Target>(typeOf<Target>(), allowConversion = true, ExtraColumns.Keep) shouldBe added
2167+
added.convertTo(typeOf<Target>(), ExtraColumns.Keep) shouldBe added
21682168

21692169
shouldThrow<IllegalArgumentException> {
21702170
df.remove { city }.convertTo<Target>()
@@ -2175,7 +2175,7 @@ class DataFrameTests : BaseTest() {
21752175
}
21762176

21772177
shouldThrow<IllegalArgumentException> {
2178-
df.convert { age }.toStr().convertToImpl<Target>(typeOf<Target>(), allowConversion = false, ExtraColumns.Remove)
2178+
df.convert { age }.toStr().convertToImpl(typeOf<Target>(), allowConversion = false, ExtraColumns.Remove)
21792179
}
21802180

21812181
shouldThrow<IllegalArgumentException> {

0 commit comments

Comments
 (0)