Skip to content

Commit 53e2f64

Browse files
committed
fixed my critical misuse of ParserOptions by completely neglecting the global setting DataFrame.parser.
1 parent 4ebb5a0 commit 53e2f64

File tree

20 files changed

+313
-165
lines changed

20 files changed

+313
-165
lines changed

core/api/core.api

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3809,6 +3809,8 @@ public final class org/jetbrains/kotlinx/dataframe/api/ConvertKt {
38093809
public static final fun convert (Lorg/jetbrains/kotlinx/dataframe/DataFrame;[Lkotlin/reflect/KProperty;)Lorg/jetbrains/kotlinx/dataframe/api/Convert;
38103810
public static final fun convert (Lorg/jetbrains/kotlinx/dataframe/DataFrame;[Lorg/jetbrains/kotlinx/dataframe/columns/ColumnReference;)Lorg/jetbrains/kotlinx/dataframe/api/Convert;
38113811
public static final fun convertTo (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Lkotlin/reflect/KType;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
3812+
public static final fun convertTo (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Lkotlin/reflect/KType;Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
3813+
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;
38123814
public static final fun convertToBigDecimal (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38133815
public static final fun convertToBigDecimalFromT (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38143816
public static final fun convertToBoolean (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
@@ -3817,13 +3819,13 @@ public final class org/jetbrains/kotlinx/dataframe/api/ConvertKt {
38173819
public static final fun convertToByteFromT (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38183820
public static final fun convertToDouble (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38193821
public static final fun convertToDoubleFromString (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/util/Locale;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
3820-
public static final fun convertToDoubleFromString (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/util/Locale;Z)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
3822+
public static final fun convertToDoubleFromString (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/util/Locale;Ljava/util/Set;Ljava/lang/Boolean;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38213823
public static synthetic fun convertToDoubleFromString$default (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/util/Locale;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
3822-
public static synthetic fun convertToDoubleFromString$default (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/util/Locale;ZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
3824+
public static synthetic fun convertToDoubleFromString$default (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/util/Locale;Ljava/util/Set;Ljava/lang/Boolean;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38233825
public static final fun convertToDoubleFromStringNullable (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/util/Locale;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
3824-
public static final fun convertToDoubleFromStringNullable (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/util/Locale;Z)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
3826+
public static final fun convertToDoubleFromStringNullable (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/util/Locale;Ljava/util/Set;Ljava/lang/Boolean;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38253827
public static synthetic fun convertToDoubleFromStringNullable$default (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/util/Locale;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
3826-
public static synthetic fun convertToDoubleFromStringNullable$default (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/util/Locale;ZILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
3828+
public static synthetic fun convertToDoubleFromStringNullable$default (Lorg/jetbrains/kotlinx/dataframe/DataColumn;Ljava/util/Locale;Ljava/util/Set;Ljava/lang/Boolean;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38273829
public static final fun convertToDoubleFromT (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38283830
public static final fun convertToFloat (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
38293831
public static final fun convertToFloatFromT (Lorg/jetbrains/kotlinx/dataframe/DataColumn;)Lorg/jetbrains/kotlinx/dataframe/DataColumn;
@@ -4811,9 +4813,14 @@ public final class org/jetbrains/kotlinx/dataframe/api/GenerateCodeKt {
48114813
public abstract interface class org/jetbrains/kotlinx/dataframe/api/GlobalParserOptions {
48124814
public abstract fun addDateTimePattern (Ljava/lang/String;)V
48134815
public abstract fun addNullString (Ljava/lang/String;)V
4816+
public abstract fun addSkipType (Lkotlin/reflect/KType;)V
48144817
public abstract fun getLocale ()Ljava/util/Locale;
4818+
public abstract fun getNulls ()Ljava/util/Set;
4819+
public abstract fun getSkipTypes ()Ljava/util/Set;
4820+
public abstract fun getUseFastDoubleParser ()Z
48154821
public abstract fun resetToDefault ()V
48164822
public abstract fun setLocale (Ljava/util/Locale;)V
4823+
public abstract fun setUseFastDoubleParser (Z)V
48174824
}
48184825

48194826
public abstract interface class org/jetbrains/kotlinx/dataframe/api/GroupBy : org/jetbrains/kotlinx/dataframe/api/Grouped {
@@ -6485,37 +6492,26 @@ public final class org/jetbrains/kotlinx/dataframe/api/ParseKt {
64856492
}
64866493

64876494
public final class org/jetbrains/kotlinx/dataframe/api/ParserOptions {
6488-
public static final field Companion Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions$Companion;
64896495
public fun <init> ()V
64906496
public synthetic fun <init> (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;)V
64916497
public synthetic fun <init> (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;ILkotlin/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
6494-
public final fun component1 ()Ljava/util/Locale;
6495-
public final fun component2 ()Ljava/time/format/DateTimeFormatter;
6496-
public final fun component3 ()Ljava/lang/String;
6497-
public final fun component4 ()Ljava/util/Set;
6498-
public final fun component5 ()Ljava/util/Set;
6499-
public final fun component6 ()Z
6498+
public fun <init> (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;Ljava/lang/Boolean;)V
6499+
public synthetic fun <init> (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
65006500
public final synthetic fun copy (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;)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;
6501+
public final fun copy (Ljava/util/Locale;Ljava/time/format/DateTimeFormatter;Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;Ljava/lang/Boolean;)Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;
65026502
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;
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;
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;Ljava/lang/Boolean;ILjava/lang/Object;)Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;
65046504
public fun equals (Ljava/lang/Object;)Z
65056505
public final fun getDateTimeFormatter ()Ljava/time/format/DateTimeFormatter;
65066506
public final fun getDateTimePattern ()Ljava/lang/String;
65076507
public final fun getLocale ()Ljava/util/Locale;
65086508
public final fun getNullStrings ()Ljava/util/Set;
65096509
public final fun getSkipTypes ()Ljava/util/Set;
6510-
public final fun getUseFastDoubleParser ()Z
6510+
public final fun getUseFastDoubleParser ()Ljava/lang/Boolean;
65116511
public fun hashCode ()I
65126512
public fun toString ()Ljava/lang/String;
65136513
}
65146514

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

@@ -10226,7 +10222,9 @@ public final class org/jetbrains/kotlinx/dataframe/impl/columns/UtilsKt {
1022610222
}
1022710223

1022810224
public final class org/jetbrains/kotlinx/dataframe/impl/io/FastDoubleParser {
10225+
public fun <init> ()V
1022910226
public fun <init> (Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;)V
10227+
public synthetic fun <init> (Lorg/jetbrains/kotlinx/dataframe/api/ParserOptions;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
1023010228
public final fun parseOrNull (Ljava/lang/CharSequence;)Ljava/lang/Double;
1023110229
public final fun parseOrNull ([BIILjava/nio/charset/Charset;)Ljava/lang/Double;
1023210230
public final fun parseOrNull ([CII)Ljava/lang/Double;

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

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -133,20 +133,19 @@ public fun AnyCol.convertTo(newType: KType): AnyCol =
133133
type().isSubtypeOf(typeOf<String?>()) ->
134134
(this as DataColumn<String?>).convertTo(newType)
135135

136-
else -> convertToTypeImpl(newType)
136+
else -> convertToTypeImpl(newType, null)
137137
}
138138

139-
public inline fun <reified C> DataColumn<String?>.convertTo(
140-
parserOptions: ParserOptions = ParserOptions(),
141-
): DataColumn<C> = convertTo(typeOf<C>(), parserOptions) as DataColumn<C>
139+
public inline fun <reified C> DataColumn<String?>.convertTo(parserOptions: ParserOptions? = null): DataColumn<C> =
140+
convertTo(typeOf<C>(), parserOptions) as DataColumn<C>
142141

143-
public fun DataColumn<String?>.convertTo(newType: KType, parserOptions: ParserOptions = ParserOptions()): AnyCol =
142+
public fun DataColumn<String?>.convertTo(newType: KType, parserOptions: ParserOptions? = null): AnyCol =
144143
when {
145144
newType.isSubtypeOf(typeOf<Double?>()) ->
146-
(this as DataColumn<String?>).convertToDoubleImpl(
147-
locale = parserOptions.locale,
148-
nullStrings = parserOptions.nullStrings,
149-
useFastDoubleParser = parserOptions.useFastDoubleParser,
145+
convertToDoubleImpl(
146+
locale = parserOptions?.locale,
147+
nullStrings = parserOptions?.nullStrings,
148+
useFastDoubleParser = parserOptions?.useFastDoubleParser,
150149
).setNullable(newType.isMarkedNullable)
151150

152151
else -> convertToTypeImpl(newType, parserOptions)
@@ -199,46 +198,53 @@ public fun <T : Any> DataColumn<T?>.convertToDouble(): DataColumn<Double?> = con
199198

200199
/**
201200
* Parses a String column to Double considering locale (number format).
202-
* If [locale] parameter is defined, it's number format is used for parsing.
203-
* If [locale] parameter is null, the current system locale is used.
204-
* If the column cannot be parsed, then the POSIX format is used.
201+
*
202+
* If any of the parameters is `null`, the global default (in [DataFrame.parser][DataFrame.Companion.parser]) is used.
203+
*
204+
* @param locale If defined, its number format is used for parsing.
205+
* The default in [DataFrame.parser][DataFrame.Companion.parser] is the system locale.
206+
* If the column cannot be parsed, the POSIX format is used.
205207
*/
206208
@ExcludeFromSources
207209
private interface DataColumnStringConvertToDoubleDoc
208210

209211
/** @include [DataColumnStringConvertToDoubleDoc] */
210212
@JvmName("convertToDoubleFromString")
211213
public fun DataColumn<String>.convertToDouble(locale: Locale? = null): DataColumn<Double> =
212-
convertToDouble(locale = locale, nullStrings = null, useFastDoubleParser = false)
214+
convertToDouble(locale = locale, nullStrings = null, useFastDoubleParser = null)
213215

214216
/**
215217
* @include [DataColumnStringConvertToDoubleDoc]
216-
* @param nullStrings a set of strings that should be treated as `null` values. By default, it's ["null", "NULL", "NA", "N/A"].
217-
* @param useFastDoubleParser whether to use the new _experimental_ FastDoubleParser, defaults to `false` for now.
218+
* @param nullStrings a set of strings that should be treated as `null` values.
219+
* The default in [DataFrame.parser][DataFrame.Companion.parser] is ["null", "NULL", "NA", "N/A"].
220+
* @param useFastDoubleParser whether to use the new _experimental_ FastDoubleParser.
221+
* The default in [DataFrame.parser][DataFrame.Companion.parser] is `false` for now.
218222
*/
219223
@JvmName("convertToDoubleFromString")
220224
public fun DataColumn<String>.convertToDouble(
221225
locale: Locale? = null,
222226
nullStrings: Set<String>?,
223-
useFastDoubleParser: Boolean,
227+
useFastDoubleParser: Boolean?,
224228
): DataColumn<Double> =
225229
this.castToNullable().convertToDouble(locale, nullStrings, useFastDoubleParser).castToNotNullable()
226230

227231
/** @include [DataColumnStringConvertToDoubleDoc] */
228232
@JvmName("convertToDoubleFromStringNullable")
229233
public fun DataColumn<String?>.convertToDouble(locale: Locale? = null): DataColumn<Double?> =
230-
convertToDouble(locale = locale, nullStrings = null, useFastDoubleParser = false)
234+
convertToDouble(locale = locale, nullStrings = null, useFastDoubleParser = null)
231235

232236
/**
233237
* @include [DataColumnStringConvertToDoubleDoc]
234-
* @param nullStrings a set of strings that should be treated as `null` values. By default, it's ["null", "NULL", "NA", "N/A"].
235-
* @param useFastDoubleParser whether to use the new _experimental_ FastDoubleParser, defaults to `false` for now.
238+
* @param nullStrings a set of strings that should be treated as `null` values.
239+
* The default in [DataFrame.parser][DataFrame.Companion.parser] is ["null", "NULL", "NA", "N/A"].
240+
* @param useFastDoubleParser whether to use the new _experimental_ FastDoubleParser.
241+
* The default in [DataFrame.parser][DataFrame.Companion.parser] is `false` for now.
236242
*/
237243
@JvmName("convertToDoubleFromStringNullable")
238244
public fun DataColumn<String?>.convertToDouble(
239245
locale: Locale? = null,
240246
nullStrings: Set<String>?,
241-
useFastDoubleParser: Boolean,
247+
useFastDoubleParser: Boolean?,
242248
): DataColumn<Double?> =
243249
convertToDoubleImpl(
244250
locale = locale,

0 commit comments

Comments
 (0)