Skip to content

Commit 79d771d

Browse files
committed
moved Compression to :core and simplified it to a fun interface
1 parent b57ec5b commit 79d771d

File tree

5 files changed

+74
-83
lines changed

5 files changed

+74
-83
lines changed

core/api/core.api

+59
Original file line numberDiff line numberDiff line change
@@ -10203,6 +10203,65 @@ public final class org/jetbrains/kotlinx/dataframe/io/CommonKt {
1020310203
public static final fun urlAsFile (Ljava/net/URL;)Ljava/io/File;
1020410204
}
1020510205

10206+
public abstract interface class org/jetbrains/kotlinx/dataframe/io/Compression {
10207+
public static final field Companion Lorg/jetbrains/kotlinx/dataframe/io/Compression$Companion;
10208+
public abstract fun doFinally (Ljava/io/InputStream;)V
10209+
public abstract fun doFirst (Ljava/io/InputStream;)V
10210+
public abstract fun wrapStream (Ljava/io/InputStream;)Ljava/io/InputStream;
10211+
}
10212+
10213+
public final class org/jetbrains/kotlinx/dataframe/io/Compression$Companion {
10214+
public final fun of (Ljava/io/File;)Lorg/jetbrains/kotlinx/dataframe/io/Compression;
10215+
public final fun of (Ljava/lang/String;)Lorg/jetbrains/kotlinx/dataframe/io/Compression;
10216+
public final fun of (Ljava/net/URL;)Lorg/jetbrains/kotlinx/dataframe/io/Compression;
10217+
public final fun of (Ljava/nio/file/Path;)Lorg/jetbrains/kotlinx/dataframe/io/Compression;
10218+
}
10219+
10220+
public final class org/jetbrains/kotlinx/dataframe/io/Compression$DefaultImpls {
10221+
public static fun doFinally (Lorg/jetbrains/kotlinx/dataframe/io/Compression;Ljava/io/InputStream;)V
10222+
public static fun doFirst (Lorg/jetbrains/kotlinx/dataframe/io/Compression;Ljava/io/InputStream;)V
10223+
}
10224+
10225+
public final class org/jetbrains/kotlinx/dataframe/io/Compression$Gzip : org/jetbrains/kotlinx/dataframe/io/Compression {
10226+
public static final field INSTANCE Lorg/jetbrains/kotlinx/dataframe/io/Compression$Gzip;
10227+
public synthetic fun doFinally (Ljava/io/InputStream;)V
10228+
public fun doFinally (Ljava/util/zip/GZIPInputStream;)V
10229+
public synthetic fun doFirst (Ljava/io/InputStream;)V
10230+
public fun doFirst (Ljava/util/zip/GZIPInputStream;)V
10231+
public fun equals (Ljava/lang/Object;)Z
10232+
public fun hashCode ()I
10233+
public fun toString ()Ljava/lang/String;
10234+
public synthetic fun wrapStream (Ljava/io/InputStream;)Ljava/io/InputStream;
10235+
public fun wrapStream (Ljava/io/InputStream;)Ljava/util/zip/GZIPInputStream;
10236+
}
10237+
10238+
public final class org/jetbrains/kotlinx/dataframe/io/Compression$None : org/jetbrains/kotlinx/dataframe/io/Compression {
10239+
public static final field INSTANCE Lorg/jetbrains/kotlinx/dataframe/io/Compression$None;
10240+
public fun doFinally (Ljava/io/InputStream;)V
10241+
public fun doFirst (Ljava/io/InputStream;)V
10242+
public fun equals (Ljava/lang/Object;)Z
10243+
public fun hashCode ()I
10244+
public fun toString ()Ljava/lang/String;
10245+
public fun wrapStream (Ljava/io/InputStream;)Ljava/io/InputStream;
10246+
}
10247+
10248+
public final class org/jetbrains/kotlinx/dataframe/io/Compression$Zip : org/jetbrains/kotlinx/dataframe/io/Compression {
10249+
public static final field INSTANCE Lorg/jetbrains/kotlinx/dataframe/io/Compression$Zip;
10250+
public synthetic fun doFinally (Ljava/io/InputStream;)V
10251+
public fun doFinally (Ljava/util/zip/ZipInputStream;)V
10252+
public synthetic fun doFirst (Ljava/io/InputStream;)V
10253+
public fun doFirst (Ljava/util/zip/ZipInputStream;)V
10254+
public fun equals (Ljava/lang/Object;)Z
10255+
public fun hashCode ()I
10256+
public fun toString ()Ljava/lang/String;
10257+
public synthetic fun wrapStream (Ljava/io/InputStream;)Ljava/io/InputStream;
10258+
public fun wrapStream (Ljava/io/InputStream;)Ljava/util/zip/ZipInputStream;
10259+
}
10260+
10261+
public final class org/jetbrains/kotlinx/dataframe/io/CompressionKt {
10262+
public static final fun useDecompressed (Ljava/io/InputStream;Lorg/jetbrains/kotlinx/dataframe/io/Compression;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
10263+
}
10264+
1020610265
public final class org/jetbrains/kotlinx/dataframe/io/CsvKt {
1020710266
public static final fun asURL (Ljava/lang/String;)Ljava/net/URL;
1020810267
public static final fun read (Lorg/jetbrains/kotlinx/dataframe/DataFrame$Companion;Ljava/lang/String;CLjava/util/List;Ljava/util/Map;ILjava/lang/Integer;ZLjava/nio/charset/Charset;)Lorg/jetbrains/kotlinx/dataframe/DataFrame;

dataframe-csv/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/Compression.kt renamed to core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/Compression.kt

+14-31
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,12 @@ import java.util.zip.InflaterInputStream
99
import java.util.zip.ZipInputStream
1010

1111
/**
12-
* Compression algorithm to use when reading csv files.
12+
* Compression algorithm to use when reading files.
1313
* We support [GZIP][Compression.Gzip] and [ZIP][Compression.Zip] compression out of the box.
1414
*
15-
* Custom decompression algorithms can be added by creating an instance of [Custom].
16-
*
17-
* @param wrapStream function that wraps any [InputStream] into a decompressing [InflaterInputStream] stream
15+
* Custom decompression algorithms can be added by creating an instance of [Compression].
1816
*/
19-
public sealed class Compression<I : InputStream>(public open val wrapStream: (InputStream) -> I) {
20-
17+
public fun interface Compression<I : InputStream> {
2118
public companion object {
2219
public fun of(fileOrUrl: String): Compression<*> =
2320
when (fileOrUrl.split(".").last()) {
@@ -33,26 +30,25 @@ public sealed class Compression<I : InputStream>(public open val wrapStream: (In
3330
public fun of(url: URL): Compression<*> = of(url.path)
3431
}
3532

33+
/** Wraps any [InputStream] into a decompressing [InflaterInputStream] stream */
34+
public fun wrapStream(inputStream: InputStream): I
35+
3636
/** Can be overridden to perform some actions before reading from the input stream. */
37-
public open fun doFirst(inputStream: I) {}
37+
public fun doFirst(inputStream: I) {}
3838

3939
/**
4040
* Can be overridden to perform some actions after reading from the input stream.
4141
* Remember to close the stream if you override this function.
4242
*/
43-
public open fun doFinally(inputStream: I) {
43+
public fun doFinally(inputStream: I) {
4444
inputStream.close()
4545
}
4646

47-
/**
48-
* For .gz / GZIP files.
49-
*/
50-
public data object Gzip : Compression<GZIPInputStream>(wrapStream = ::GZIPInputStream)
47+
/** For .gz / GZIP files */
48+
public data object Gzip : Compression<GZIPInputStream> by Compression(::GZIPInputStream)
5149

52-
/**
53-
* For .zip / ZIP files.
54-
*/
55-
public data object Zip : Compression<ZipInputStream>(wrapStream = ::ZipInputStream) {
50+
/** For .zip / ZIP files */
51+
public data object Zip : Compression<ZipInputStream> by Compression(::ZipInputStream) {
5652

5753
override fun doFirst(inputStream: ZipInputStream) {
5854
// Make sure to call nextEntry once to prepare the stream
@@ -69,21 +65,8 @@ public sealed class Compression<I : InputStream>(public open val wrapStream: (In
6965
}
7066
}
7167

72-
/**
73-
* No compression.
74-
*/
75-
public data object None : Compression<InputStream>(wrapStream = { it })
76-
77-
/**
78-
* Custom decompression algorithm.
79-
*
80-
* Can either be extended or instantiated directly with a custom [wrapStream] function.
81-
* @param wrapStream function that wraps any [InputStream] into a decompressing [InputStream]
82-
*/
83-
public open class Custom<I : InputStream>(override val wrapStream: (InputStream) -> I) :
84-
Compression<I>(wrapStream = wrapStream) {
85-
override fun toString(): String = "Compression.Custom(wrapStream = $wrapStream)"
86-
}
68+
/** No compression */
69+
public data object None : Compression<InputStream> by Compression({ it })
8770
}
8871

8972
/**

dataframe-csv/api/dataframe-csv.api

-50
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,3 @@
1-
public abstract class org/jetbrains/kotlinx/dataframe/io/Compression {
2-
public static final field Companion Lorg/jetbrains/kotlinx/dataframe/io/Compression$Companion;
3-
public synthetic fun <init> (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
4-
public fun doFinally (Ljava/io/InputStream;)V
5-
public fun doFirst (Ljava/io/InputStream;)V
6-
public fun getWrapStream ()Lkotlin/jvm/functions/Function1;
7-
}
8-
9-
public final class org/jetbrains/kotlinx/dataframe/io/Compression$Companion {
10-
public final fun of (Ljava/io/File;)Lorg/jetbrains/kotlinx/dataframe/io/Compression;
11-
public final fun of (Ljava/lang/String;)Lorg/jetbrains/kotlinx/dataframe/io/Compression;
12-
public final fun of (Ljava/net/URL;)Lorg/jetbrains/kotlinx/dataframe/io/Compression;
13-
public final fun of (Ljava/nio/file/Path;)Lorg/jetbrains/kotlinx/dataframe/io/Compression;
14-
}
15-
16-
public class org/jetbrains/kotlinx/dataframe/io/Compression$Custom : org/jetbrains/kotlinx/dataframe/io/Compression {
17-
public fun <init> (Lkotlin/jvm/functions/Function1;)V
18-
public fun getWrapStream ()Lkotlin/jvm/functions/Function1;
19-
public fun toString ()Ljava/lang/String;
20-
}
21-
22-
public final class org/jetbrains/kotlinx/dataframe/io/Compression$Gzip : org/jetbrains/kotlinx/dataframe/io/Compression {
23-
public static final field INSTANCE Lorg/jetbrains/kotlinx/dataframe/io/Compression$Gzip;
24-
public fun equals (Ljava/lang/Object;)Z
25-
public fun hashCode ()I
26-
public fun toString ()Ljava/lang/String;
27-
}
28-
29-
public final class org/jetbrains/kotlinx/dataframe/io/Compression$None : org/jetbrains/kotlinx/dataframe/io/Compression {
30-
public static final field INSTANCE Lorg/jetbrains/kotlinx/dataframe/io/Compression$None;
31-
public fun equals (Ljava/lang/Object;)Z
32-
public fun hashCode ()I
33-
public fun toString ()Ljava/lang/String;
34-
}
35-
36-
public final class org/jetbrains/kotlinx/dataframe/io/Compression$Zip : org/jetbrains/kotlinx/dataframe/io/Compression {
37-
public static final field INSTANCE Lorg/jetbrains/kotlinx/dataframe/io/Compression$Zip;
38-
public synthetic fun doFinally (Ljava/io/InputStream;)V
39-
public fun doFinally (Ljava/util/zip/ZipInputStream;)V
40-
public synthetic fun doFirst (Ljava/io/InputStream;)V
41-
public fun doFirst (Ljava/util/zip/ZipInputStream;)V
42-
public fun equals (Ljava/lang/Object;)Z
43-
public fun hashCode ()I
44-
public fun toString ()Ljava/lang/String;
45-
}
46-
47-
public final class org/jetbrains/kotlinx/dataframe/io/CompressionKt {
48-
public static final fun useDecompressed (Ljava/io/InputStream;Lorg/jetbrains/kotlinx/dataframe/io/Compression;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
49-
}
50-
511
public final class org/jetbrains/kotlinx/dataframe/io/CsvDeephaven : org/jetbrains/kotlinx/dataframe/io/SupportedDataFrameFormat {
522
public fun <init> ()V
533
public fun <init> (C)V

dataframe-csv/src/main/kotlin/org/jetbrains/kotlinx/dataframe/documentation/DelimParams.kt

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import io.deephaven.csv.CsvSpecs
44
import org.apache.commons.csv.CSVFormat
55
import org.jetbrains.kotlinx.dataframe.DataFrame
66
import org.jetbrains.kotlinx.dataframe.api.ParserOptions
7-
import org.jetbrains.kotlinx.dataframe.api.parser
87
import org.jetbrains.kotlinx.dataframe.impl.io.typesDeephavenAlreadyParses
98
import org.jetbrains.kotlinx.dataframe.io.AdjustCSVFormat
109
import org.jetbrains.kotlinx.dataframe.io.AdjustCsvSpecs

dataframe-csv/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/DelimCsvTsvTests.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ class DelimCsvTsvTests {
122122
fun `read custom compression Csv`() {
123123
DataFrame.readCsv(
124124
simpleCsvGz,
125-
compression = Compression.Custom { GZIPInputStream(it) },
125+
compression = Compression(::GZIPInputStream),
126126
) shouldBe DataFrame.readCsv(simpleCsv)
127127
}
128128

0 commit comments

Comments
 (0)