Skip to content

Commit d837c58

Browse files
committed
fixed binary compatibility, fixed old csv reader not checking nullStrings
1 parent ab10e83 commit d837c58

File tree

5 files changed

+220
-29
lines changed

5 files changed

+220
-29
lines changed

core/api/core.api

+29-5
Original file line numberDiff line numberDiff line change
@@ -6485,30 +6485,37 @@ public final class org/jetbrains/kotlinx/dataframe/api/ParseKt {
64856485
}
64866486

64876487
public final class org/jetbrains/kotlinx/dataframe/api/ParserOptions {
6488+
public static final field Companion Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions$Companion;
64886489
public fun <init> ()V
64896490
public synthetic fun <init> (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;)V
64906491
public synthetic fun <init> (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
6491-
public fun <init> (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;Z)V
6492-
public synthetic fun <init> (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
6492+
public fun <init> (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;Z)V
6493+
public synthetic fun <init> (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
64936494
public final fun component1 ()Ljava/util/Locale;
64946495
public final fun component2 ()Ljava/time/format/DateTimeFormatter;
64956496
public final fun component3 ()Ljava/lang/String;
64966497
public final fun component4 ()Ljava/util/Set;
6497-
public final fun component5 ()Z
6498+
public final fun component5 ()Ljava/util/Set;
6499+
public final fun component6 ()Z
64986500
public final synthetic fun copy (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;)Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;
6499-
public final fun copy (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;Z)Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;
6501+
public final fun copy (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;Z)Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;
65006502
public static synthetic fun copy$default (Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;
6501-
public static synthetic fun copy$default (Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;ZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;
6503+
public static synthetic fun copy$default (Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;ZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;
65026504
public fun equals (Ljava/lang/Object;)Z
65036505
public final fun getDateTimeFormatter ()Ljava/time/format/DateTimeFormatter;
65046506
public final fun getDateTimePattern ()Ljava/lang/String;
65056507
public final fun getLocale ()Ljava/util/Locale;
65066508
public final fun getNullStrings ()Ljava/util/Set;
6509+
public final fun getSkipTypes ()Ljava/util/Set;
65076510
public final fun getUseFastDoubleParser ()Z
65086511
public fun hashCode ()I
65096512
public fun toString ()Ljava/lang/String;
65106513
}
65116514

6515+
public final class org/jetbrains/kotlinx/dataframe/api/ParserOptions$Companion {
6516+
public final fun allTypesExcept ([Lkotlin/reflect/KType;)Ljava/util/Set;
6517+
}
6518+
65126519
public abstract interface class org/jetbrains/kotlinx/dataframe/api/Pivot : org/jetbrains/kotlinx/dataframe/aggregation/Aggregatable {
65136520
}
65146521

@@ -9946,6 +9953,16 @@ public final class org/jetbrains/kotlinx/dataframe/impl/ColumnAccessTrackerKt {
99469953
public static final fun trackColumnAccess (Lkotlin/jvm/functions/Function0;)Ljava/util/List;
99479954
}
99489955

9956+
public final class org/jetbrains/kotlinx/dataframe/impl/ColumnNameGenerator {
9957+
public fun <init> ()V
9958+
public fun <init> (Ljava/util/List;)V
9959+
public synthetic fun <init> (Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
9960+
public final fun addIfAbsent (Ljava/lang/String;)V
9961+
public final fun addUnique (Ljava/lang/String;)Ljava/lang/String;
9962+
public final fun contains (Ljava/lang/String;)Z
9963+
public final fun getNames ()Ljava/util/List;
9964+
}
9965+
99499966
public final class org/jetbrains/kotlinx/dataframe/impl/DataFrameSize {
99509967
public fun <init> (II)V
99519968
public final fun component1 ()I
@@ -10271,13 +10288,19 @@ public final class org/jetbrains/kotlinx/dataframe/io/CSVType : java/lang/Enum {
1027110288
public final class org/jetbrains/kotlinx/dataframe/io/ColType : java/lang/Enum {
1027210289
public static final field BigDecimal Lorg/jetbrains/kotlinx/dataframe/io/ColType;
1027310290
public static final field Boolean Lorg/jetbrains/kotlinx/dataframe/io/ColType;
10291+
public static final field Char Lorg/jetbrains/kotlinx/dataframe/io/ColType;
1027410292
public static final field Double Lorg/jetbrains/kotlinx/dataframe/io/ColType;
10293+
public static final field Duration Lorg/jetbrains/kotlinx/dataframe/io/ColType;
10294+
public static final field Instant Lorg/jetbrains/kotlinx/dataframe/io/ColType;
1027510295
public static final field Int Lorg/jetbrains/kotlinx/dataframe/io/ColType;
10296+
public static final field JsonArray Lorg/jetbrains/kotlinx/dataframe/io/ColType;
10297+
public static final field JsonObject Lorg/jetbrains/kotlinx/dataframe/io/ColType;
1027610298
public static final field LocalDate Lorg/jetbrains/kotlinx/dataframe/io/ColType;
1027710299
public static final field LocalDateTime Lorg/jetbrains/kotlinx/dataframe/io/ColType;
1027810300
public static final field LocalTime Lorg/jetbrains/kotlinx/dataframe/io/ColType;
1027910301
public static final field Long Lorg/jetbrains/kotlinx/dataframe/io/ColType;
1028010302
public static final field String Lorg/jetbrains/kotlinx/dataframe/io/ColType;
10303+
public static final field Url Lorg/jetbrains/kotlinx/dataframe/io/ColType;
1028110304
public static fun getEntries ()Lkotlin/enums/EnumEntries;
1028210305
public static fun valueOf (Ljava/lang/String;)Lorg/jetbrains/kotlinx/dataframe/io/ColType;
1028310306
public static fun values ()[Lorg/jetbrains/kotlinx/dataframe/io/ColType;
@@ -10313,6 +10336,7 @@ public final class org/jetbrains/kotlinx/dataframe/io/CsvKt {
1031310336
public static synthetic fun readDelimStr$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/lang/String;CLjava/util/Map;ILjava/lang/Integer;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;
1031410337
public static final fun toCsv (Lorg/jetbrains/kotlinx/dataframe/DataFrame;Lorg/apache/commons/csv/CSVFormat;)Ljava/lang/String;
1031510338
public static synthetic fun toCsv$default (Lorg/jetbrains/kotlinx/dataframe/DataFrame;Lorg/apache/commons/csv/CSVFormat;ILjava/lang/Object;)Ljava/lang/String;
10339+
public static final fun toKType (Lorg/jetbrains/kotlinx/dataframe/io/ColType;)Lkotlin/reflect/KType;
1031610340
public static final fun toType (Lorg/jetbrains/kotlinx/dataframe/io/ColType;)Lkotlin/reflect/KClass;
1031710341
public static final fun writeCSV (Lorg/jetbrains/kotlinx/dataframe/DataFrame;Ljava/io/File;Lorg/apache/commons/csv/CSVFormat;)V
1031810342
public static final fun writeCSV (Lorg/jetbrains/kotlinx/dataframe/DataFrame;Ljava/lang/Appendable;Lorg/apache/commons/csv/CSVFormat;)V

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

+8-4
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import org.jetbrains.kotlinx.dataframe.api.tryParse
2222
import org.jetbrains.kotlinx.dataframe.codeGen.DefaultReadCsvMethod
2323
import org.jetbrains.kotlinx.dataframe.codeGen.DefaultReadDfMethod
2424
import org.jetbrains.kotlinx.dataframe.impl.ColumnNameGenerator
25-
import org.jetbrains.kotlinx.dataframe.impl.api.Parsers
2625
import org.jetbrains.kotlinx.dataframe.impl.api.parse
2726
import org.jetbrains.kotlinx.dataframe.util.DF_READ_NO_CSV
2827
import org.jetbrains.kotlinx.dataframe.util.DF_READ_NO_CSV_REPLACE
@@ -42,6 +41,7 @@ import java.math.BigDecimal
4241
import java.net.URL
4342
import java.nio.charset.Charset
4443
import java.util.zip.GZIPInputStream
44+
import kotlin.reflect.KClass
4545
import kotlin.reflect.KType
4646
import kotlin.reflect.full.withNullability
4747
import kotlin.reflect.typeOf
@@ -320,6 +320,8 @@ public enum class ColType {
320320
Char,
321321
}
322322

323+
public fun ColType.toType(): KClass<*> = toKType().classifier as KClass<*>
324+
323325
public fun ColType.toKType(): KType =
324326
when (this) {
325327
ColType.Int -> typeOf<Int>()
@@ -395,9 +397,11 @@ public fun DataFrame.Companion.readDelim(
395397
null -> column.tryParse(parserOptions)
396398

397399
else -> {
398-
// TODO use skipAllExcept
399-
val parser = Parsers[colType.toKType()]!!
400-
column.parse(parser, parserOptions)
400+
column.tryParse(
401+
(parserOptions ?: ParserOptions()).copy(
402+
skipTypes = ParserOptions.allTypesExcept(colType.toKType()),
403+
),
404+
)
401405
}
402406
}
403407
}

0 commit comments

Comments
 (0)