Skip to content

Commit f6444b3

Browse files
authored
Merge pull request #972 from Kotlin/BigInteger
Full `BigInteger` support
2 parents 273c095 + 7057caf commit f6444b3

File tree

10 files changed

+69
-22
lines changed

10 files changed

+69
-22
lines changed

core/api/core.api

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3813,6 +3813,8 @@ public final class org/jetbrains/kotlinx/dataframe/api/ConvertKt {
38133813
public static synthetic fun convertTo$default (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Lkotlin/reflect/KType;Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38143814
public static final fun convertToBigDecimal (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38153815
public static final fun convertToBigDecimalFromT (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
3816+
public static final fun convertToBigInteger (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
3817+
public static final fun convertToBigIntegerFromT (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38163818
public static final fun convertToBoolean (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38173819
public static final fun convertToBooleanFromT (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38183820
public static final fun convertToByte (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
@@ -3891,6 +3893,8 @@ public final class org/jetbrains/kotlinx/dataframe/api/ConvertKt {
38913893
public static final fun to (Lorg/jetbrains/kotlinx/dataframe/api/Convert;Lkotlin/reflect/KType;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
38923894
public static final fun toBigDecimal (Lorg/jetbrains/kotlinx/dataframe/api/Convert;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
38933895
public static final fun toBigDecimalTAny (Lorg/jetbrains/kotlinx/dataframe/api/Convert;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
3896+
public static final fun toBigInteger (Lorg/jetbrains/kotlinx/dataframe/api/Convert;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
3897+
public static final fun toBigIntegerTAny (Lorg/jetbrains/kotlinx/dataframe/api/Convert;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
38943898
public static final fun toBoolean (Lorg/jetbrains/kotlinx/dataframe/api/Convert;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
38953899
public static final fun toBooleanTAny (Lorg/jetbrains/kotlinx/dataframe/api/Convert;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
38963900
public static final fun toDataFrames (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Z)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
@@ -4078,10 +4082,12 @@ public final class org/jetbrains/kotlinx/dataframe/api/DataColumnArithmeticsKt {
40784082
public static final fun div (ILorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;)Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;
40794083
public static final fun div (JLorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
40804084
public static final fun div (Ljava/math/BigDecimal;Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
4085+
public static final fun div (Ljava/math/BigInteger;Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
40814086
public static final fun div (Lorg/jetbrains/kotlinx/dataframe/DataColumn;D)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
40824087
public static final fun div (Lorg/jetbrains/kotlinx/dataframe/DataColumn;I)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
40834088
public static final fun div (Lorg/jetbrains/kotlinx/dataframe/DataColumn;J)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
40844089
public static final fun div (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/math/BigDecimal;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
4090+
public static final fun div (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/math/BigInteger;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
40854091
public static final fun div (Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;I)Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;
40864092
public static final fun divDouble (Lorg/jetbrains/kotlinx/dataframe/DataColumn;I)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
40874093
public static final fun divInt (Lorg/jetbrains/kotlinx/dataframe/DataColumn;D)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
@@ -4101,10 +4107,12 @@ public final class org/jetbrains/kotlinx/dataframe/api/DataColumnArithmeticsKt {
41014107
public static final fun minus (ILorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;)Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;
41024108
public static final fun minus (JLorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41034109
public static final fun minus (Ljava/math/BigDecimal;Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
4110+
public static final fun minus (Ljava/math/BigInteger;Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41044111
public static final fun minus (Lorg/jetbrains/kotlinx/dataframe/DataColumn;D)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41054112
public static final fun minus (Lorg/jetbrains/kotlinx/dataframe/DataColumn;I)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41064113
public static final fun minus (Lorg/jetbrains/kotlinx/dataframe/DataColumn;J)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41074114
public static final fun minus (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/math/BigDecimal;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
4115+
public static final fun minus (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/math/BigInteger;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41084116
public static final fun minus (Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;I)Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;
41094117
public static final fun minusDouble (Lorg/jetbrains/kotlinx/dataframe/DataColumn;I)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41104118
public static final fun minusInt (Lorg/jetbrains/kotlinx/dataframe/DataColumn;D)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
@@ -4120,11 +4128,13 @@ public final class org/jetbrains/kotlinx/dataframe/api/DataColumnArithmeticsKt {
41204128
public static final fun plus (ILorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;)Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;
41214129
public static final fun plus (JLorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41224130
public static final fun plus (Ljava/math/BigDecimal;Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
4131+
public static final fun plus (Ljava/math/BigInteger;Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41234132
public static final fun plus (Lorg/jetbrains/kotlinx/dataframe/DataColumn;D)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41244133
public static final fun plus (Lorg/jetbrains/kotlinx/dataframe/DataColumn;I)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41254134
public static final fun plus (Lorg/jetbrains/kotlinx/dataframe/DataColumn;J)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41264135
public static final fun plus (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/lang/String;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41274136
public static final fun plus (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/math/BigDecimal;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
4137+
public static final fun plus (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/math/BigInteger;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41284138
public static final fun plus (Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;I)Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;
41294139
public static final fun plus (Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;Ljava/lang/String;)Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;
41304140
public static final fun plusDouble (Lorg/jetbrains/kotlinx/dataframe/DataColumn;I)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
@@ -4135,13 +4145,15 @@ public final class org/jetbrains/kotlinx/dataframe/api/DataColumnArithmeticsKt {
41354145
public static final fun times (Lorg/jetbrains/kotlinx/dataframe/DataColumn;I)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41364146
public static final fun times (Lorg/jetbrains/kotlinx/dataframe/DataColumn;J)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41374147
public static final fun times (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/math/BigDecimal;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
4148+
public static final fun times (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/math/BigInteger;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41384149
public static final fun times (Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;I)Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;
41394150
public static final fun timesDouble (Lorg/jetbrains/kotlinx/dataframe/DataColumn;I)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41404151
public static final fun timesInt (Lorg/jetbrains/kotlinx/dataframe/DataColumn;D)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41414152
public static final fun timesIntNullable (Lorg/jetbrains/kotlinx/dataframe/DataColumn;I)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41424153
public static final fun unaryMinus (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41434154
public static final fun unaryMinus (Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;)Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;
41444155
public static final fun unaryMinusBigDecimal (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
4156+
public static final fun unaryMinusBigInteger (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41454157
public static final fun unaryMinusDouble (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41464158
public static final fun unaryMinusIntNullable (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
41474159
public static final fun unaryMinusLong (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
@@ -10287,6 +10299,7 @@ public final class org/jetbrains/kotlinx/dataframe/io/CSVType : java/lang/Enum {
1028710299

1028810300
public final class org/jetbrains/kotlinx/dataframe/io/ColType : java/lang/Enum {
1028910301
public static final field BigDecimal Lorg/jetbrains/kotlinx/dataframe/io/ColType;
10302+
public static final field BigInteger Lorg/jetbrains/kotlinx/dataframe/io/ColType;
1029010303
public static final field Boolean Lorg/jetbrains/kotlinx/dataframe/io/ColType;
1029110304
public static final field Char Lorg/jetbrains/kotlinx/dataframe/io/ColType;
1029210305
public static final field Companion Lorg/jetbrains/kotlinx/dataframe/io/ColType$Companion;

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import org.jetbrains.kotlinx.dataframe.DataColumn
55
import org.jetbrains.kotlinx.dataframe.Predicate
66
import org.jetbrains.kotlinx.dataframe.columns.ColumnReference
77
import java.math.BigDecimal
8+
import java.math.BigInteger
89

910
public operator fun DataColumn<Boolean>.not(): DataColumn<Boolean> = map { !it }
1011

@@ -169,6 +170,23 @@ public operator fun DataColumn<BigDecimal>.div(value: BigDecimal): DataColumn<Bi
169170

170171
public operator fun BigDecimal.div(column: DataColumn<BigDecimal>): DataColumn<BigDecimal> = column.map { this / it }
171172

173+
public operator fun DataColumn<BigInteger>.plus(value: BigInteger): DataColumn<BigInteger> = map { it + value }
174+
175+
public operator fun DataColumn<BigInteger>.minus(value: BigInteger): DataColumn<BigInteger> = map { it - value }
176+
177+
public operator fun BigInteger.plus(column: DataColumn<BigInteger>): DataColumn<BigInteger> = column.map { this + it }
178+
179+
public operator fun BigInteger.minus(column: DataColumn<BigInteger>): DataColumn<BigInteger> = column.map { this - it }
180+
181+
@JvmName("unaryMinusBigInteger")
182+
public operator fun DataColumn<BigInteger>.unaryMinus(): DataColumn<BigInteger> = map { -it }
183+
184+
public operator fun DataColumn<BigInteger>.times(value: BigInteger): DataColumn<BigInteger> = map { it * value }
185+
186+
public operator fun DataColumn<BigInteger>.div(value: BigInteger): DataColumn<BigInteger> = map { it / value }
187+
188+
public operator fun BigInteger.div(column: DataColumn<BigInteger>): DataColumn<BigInteger> = column.map { this / it }
189+
172190
public infix fun <T> DataColumn<T>.eq(value: T): DataColumn<Boolean> = isMatching { it == value }
173191

174192
public infix fun <T> DataColumn<T>.neq(value: T): DataColumn<Boolean> = isMatching { it != value }

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import org.jetbrains.kotlinx.dataframe.impl.api.withRowCellImpl
3737
import org.jetbrains.kotlinx.dataframe.impl.headPlusArray
3838
import org.jetbrains.kotlinx.dataframe.io.toDataFrame
3939
import java.math.BigDecimal
40+
import java.math.BigInteger
4041
import java.net.URL
4142
import java.util.Locale
4243
import kotlin.reflect.KProperty
@@ -262,6 +263,11 @@ public fun <T : Any> DataColumn<T>.convertToBigDecimal(): DataColumn<BigDecimal>
262263

263264
public fun <T : Any> DataColumn<T?>.convertToBigDecimal(): DataColumn<BigDecimal?> = convertTo()
264265

266+
@JvmName("convertToBigIntegerFromT")
267+
public fun <T : Any> DataColumn<T>.convertToBigInteger(): DataColumn<BigInteger> = convertTo()
268+
269+
public fun <T : Any> DataColumn<T?>.convertToBigInteger(): DataColumn<BigInteger?> = convertTo()
270+
265271
@JvmName("convertToBooleanFromT")
266272
public fun <T : Any> DataColumn<T>.convertToBoolean(): DataColumn<Boolean> = convertTo()
267273

@@ -496,6 +502,11 @@ public fun <T> Convert<T, Any>.toBigDecimal(): DataFrame<T> = to<BigDecimal>()
496502

497503
public fun <T> Convert<T, Any?>.toBigDecimal(): DataFrame<T> = to<BigDecimal?>()
498504

505+
@JvmName("toBigIntegerTAny")
506+
public fun <T> Convert<T, Any>.toBigInteger(): DataFrame<T> = to<BigInteger>()
507+
508+
public fun <T> Convert<T, Any?>.toBigInteger(): DataFrame<T> = to<BigInteger?>()
509+
499510
@JvmName("toBooleanTAny")
500511
public fun <T> Convert<T, Any>.toBoolean(): DataFrame<T> = to<Boolean>()
501512

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

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import kotlin.reflect.full.superclasses
3131
import kotlin.reflect.full.withNullability
3232
import kotlin.reflect.jvm.jvmErasure
3333
import kotlin.reflect.typeOf
34-
import kotlin.toBigDecimal as toBigDecimalKotlin
3534

3635
internal inline fun <reified T> KClass<*>.createTypeUsing() = typeOf<T>().projectTo(this)
3736

@@ -649,16 +648,3 @@ internal fun Any.asArrayAsListOrNull(): List<*>? =
649648
}
650649

651650
internal fun Any.isBigNumber(): Boolean = this is BigInteger || this is BigDecimal
652-
653-
internal fun Number.toBigDecimal(): BigDecimal =
654-
when (this) {
655-
is BigDecimal -> this
656-
is BigInteger -> this.toBigDecimalKotlin()
657-
is Int -> this.toBigDecimalKotlin()
658-
is Byte -> this.toInt().toBigDecimalKotlin()
659-
is Short -> this.toInt().toBigDecimalKotlin()
660-
is Long -> this.toBigDecimalKotlin()
661-
is Float -> this.toBigDecimalKotlin()
662-
is Double -> this.toBigDecimalKotlin()
663-
else -> BigDecimal(this.toString())
664-
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ internal fun <T> List<T>.removeAt(index: Int) = subList(0, index) + subList(inde
6464

6565
internal inline fun <reified T : Any> Int.cast() = convert(this, T::class)
6666

67+
// TODO remove in favor of column convert logic, Issue #971
6768
internal fun <T : Any> convert(src: Int, tartypeOf: KClass<T>): T =
6869
when (tartypeOf) {
6970
Double::class -> src.toDouble() as T

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

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,13 @@ import kotlin.reflect.full.withNullability
5555
import kotlin.reflect.jvm.jvmErasure
5656
import kotlin.reflect.typeOf
5757
import kotlin.text.trim
58+
import kotlin.toBigDecimal
5859
import java.time.Instant as JavaInstant
5960
import java.time.LocalDate as JavaLocalDate
6061
import java.time.LocalDateTime as JavaLocalDateTime
6162
import java.time.LocalTime as JavaLocalTime
63+
import kotlin.toBigDecimal as toBigDecimalKotlin
64+
import kotlin.toBigInteger as toBigIntegerKotlin
6265

6366
@PublishedApi
6467
internal fun <T, C, R> Convert<T, C>.withRowCellImpl(
@@ -716,17 +719,25 @@ internal val defaultTimeZone = TimeZone.currentSystemDefault()
716719
internal fun Number.toBigDecimal(): BigDecimal =
717720
when (this) {
718721
is BigDecimal -> this
719-
is BigInteger -> BigDecimal(this)
720-
is Double -> BigDecimal.valueOf(this)
721-
is Int -> BigDecimal(this)
722-
is Long -> BigDecimal.valueOf(this)
723-
else -> BigDecimal.valueOf(this.toDouble())
722+
is BigInteger -> this.toBigDecimalKotlin()
723+
is Int -> this.toBigDecimalKotlin()
724+
is Byte -> this.toInt().toBigDecimalKotlin()
725+
is Short -> this.toInt().toBigDecimalKotlin()
726+
is Long -> this.toBigDecimalKotlin()
727+
is Float -> this.toBigDecimalKotlin()
728+
is Double -> this.toBigDecimalKotlin()
729+
else -> BigDecimal(this.toString())
724730
}
725731

726732
internal fun Number.toBigInteger(): BigInteger =
727733
when (this) {
728734
is BigInteger -> this
729735
is BigDecimal -> this.toBigInteger()
730-
is Long -> BigInteger.valueOf(this)
731-
else -> BigInteger.valueOf(this.toLong())
736+
is Int -> this.toBigIntegerKotlin()
737+
is Byte -> this.toInt().toBigIntegerKotlin()
738+
is Short -> this.toInt().toBigIntegerKotlin()
739+
is Long -> this.toBigIntegerKotlin()
740+
is Float -> this.roundToInt().toBigIntegerKotlin()
741+
is Double -> this.roundToLong().toBigIntegerKotlin()
742+
else -> BigInteger(this.toString())
732743
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import org.jetbrains.kotlinx.dataframe.impl.columns.addPath
3030
import org.jetbrains.kotlinx.dataframe.impl.columns.asAnyFrameColumn
3131
import org.jetbrains.kotlinx.dataframe.impl.isBigNumber
3232
import org.jetbrains.kotlinx.dataframe.impl.renderType
33-
import org.jetbrains.kotlinx.dataframe.impl.toBigDecimal
3433
import org.jetbrains.kotlinx.dataframe.index
3534
import org.jetbrains.kotlinx.dataframe.kind
3635
import org.jetbrains.kotlinx.dataframe.type

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import org.jetbrains.kotlinx.dataframe.io.isUrl
3939
import org.jetbrains.kotlinx.dataframe.io.readJsonStr
4040
import org.jetbrains.kotlinx.dataframe.values
4141
import java.math.BigDecimal
42+
import java.math.BigInteger
4243
import java.net.URL
4344
import java.text.ParsePosition
4445
import java.time.format.DateTimeFormatter
@@ -390,6 +391,8 @@ internal object Parsers : GlobalParserOptions {
390391
posixParserToDoubleWithOptions,
391392
// Boolean
392393
stringParser<Boolean> { it.toBooleanOrNull() },
394+
// BigInteger
395+
stringParser<BigInteger> { it.toBigIntegerOrNull() },
393396
// BigDecimal
394397
stringParser<BigDecimal> { it.toBigDecimalOrNull() },
395398
// JSON array as DataFrame<*>

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/csv.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import java.io.Reader
3838
import java.io.StringReader
3939
import java.io.StringWriter
4040
import java.math.BigDecimal
41+
import java.math.BigInteger
4142
import java.net.URL
4243
import java.nio.charset.Charset
4344
import java.util.zip.GZIPInputStream
@@ -298,6 +299,7 @@ public enum class ColType {
298299
Double,
299300
Boolean,
300301
BigDecimal,
302+
BigInteger,
301303
LocalDate,
302304
LocalTime,
303305
LocalDateTime,
@@ -329,6 +331,7 @@ public fun ColType.toKType(): KType =
329331
ColType.Double -> typeOf<Double>()
330332
ColType.Boolean -> typeOf<Boolean>()
331333
ColType.BigDecimal -> typeOf<BigDecimal>()
334+
ColType.BigInteger -> typeOf<BigInteger>()
332335
ColType.LocalDate -> typeOf<LocalDate>()
333336
ColType.LocalTime -> typeOf<LocalTime>()
334337
ColType.LocalDateTime -> typeOf<LocalDateTime>()

dataframe-csv/src/main/kotlin/org/jetbrains/kotlinx/dataframe/impl/io/readDelim.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ import org.jetbrains.kotlinx.dataframe.io.toKType
5858
import org.jetbrains.kotlinx.dataframe.io.useDecompressed
5959
import java.io.InputStream
6060
import java.math.BigDecimal
61+
import java.math.BigInteger
6162
import java.net.URL
6263
import java.util.Locale
6364
import kotlin.reflect.KType
@@ -351,6 +352,7 @@ internal fun KType.toColType(): ColType =
351352
typeOf<Double>() -> ColType.Double
352353
typeOf<Boolean>() -> ColType.Boolean
353354
typeOf<BigDecimal>() -> ColType.BigDecimal
355+
typeOf<BigInteger>() -> ColType.BigInteger
354356
typeOf<LocalDate>() -> ColType.LocalDate
355357
typeOf<LocalTime>() -> ColType.LocalTime
356358
typeOf<LocalDateTime>() -> ColType.LocalDateTime

0 commit comments

Comments
 (0)