packages feed

Cabal revisions of dataframe-2.1.0.0

Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.

revision 1
-cabal-version:      3.0-name:               dataframe-version:            2.1.0.0--synopsis: A fast, safe, and intuitive DataFrame library.--description: A fast, safe, and intuitive DataFrame library for exploratory data analysis.--bug-reports: https://github.com/mchav/dataframe/issues-license:            MIT-license-file:       LICENSE-author:             Michael Chavinda-maintainer:         mschavinda@gmail.com--copyright: (c) 2024-2025 Michael Chavinda-category: Data-tested-with: GHC ==9.4.8 || ==9.6.7 || ==9.8.4 || ==9.10.3 || ==9.12.2-extra-doc-files: CHANGELOG.md README.md-extra-source-files: cbits/arrow_abi.h-                    tests/data/typing/texts.txt-                    tests/data/typing/texts_with_empties.txt-                    tests/data/typing/texts_with_empties_and_nullish.txt-                    data/titanic/*.csv-                    data/sharded/*.parquet-                    tests/data/*.csv-                    tests/data/*.tsv-                    tests/data/*.parquet-                    tests/data/unstable_csv/*.csv-                    tests/data/unstable_csv/*.tsv-                    -- tests/data/*.md-                    -- tests/data/*.bin-                    -- tests/data/*.json-                    -- tests/data/*.txt-                    -- tests/data/*.encrypted--source-repository head-  type:     git-  location: https://github.com/mchav/dataframe--common warnings-    ghc-options:-        -Wall--flag no-csv-    default:     False-    manual:      True-    description: Exclude the CSV reader/writer (@dataframe-csv@). Enable-                 with @-f +no-csv@ (or @flags: no-csv@ in cabal.project)-                 to trim the dep set of the meta package when CSV is not-                 needed.--flag no-parquet-    default:     False-    manual:      True-    description: Exclude the Parquet reader/writer (@dataframe-parquet@-                 plus pinch, zstd, snappy, streamly, http-conduit).-                 Enable with @-f +no-parquet@.--flag no-th-    default:     False-    manual:      True-    description: Exclude the Template Haskell splices (@dataframe-th@,-                 @dataframe-csv-th@, @dataframe-parquet-th@). Enable-                 with @-f +no-th@ to drop the @template-haskell@ dep for-                 downstream packages that don't use compile-time schema-                 derivation.--library-    import: warnings-    default-extensions: Strict-    -- Lock the unused-packages gate locally; haskell-ci already runs the-    -- same Werror against this stanza. Catches the case where a satellite-    -- gets added to build-depends but never re-exported.-    ghc-options: -Werror=unused-packages-    exposed-modules: DataFrame,-                    DataFrame.Typed-    reexported-modules: DataFrame.Functions,-                        DataFrame.Synthesis,-                        DataFrame.Display.Web.Plot,-                        DataFrame.Internal.Types,-                        DataFrame.Internal.Expression,-                        DataFrame.Internal.Grouping,-                        DataFrame.Internal.Interpreter,-                        DataFrame.Internal.Nullable,-                        DataFrame.Internal.Parsing,-                        DataFrame.Internal.Column,-                        DataFrame.Internal.Binary,-                        DataFrame.Internal.Statistics,-                        DataFrame.Display.Terminal.PrettyPrint,-                        DataFrame.Display.Terminal.Colours,-                        DataFrame.Internal.DataFrame,-                        DataFrame.Internal.Row,-                        DataFrame.Internal.Schema,-                        DataFrame.Errors,-                        DataFrame.Operations.Core,-                        DataFrame.Operations.Join,-                        DataFrame.Operations.Merge,-                        DataFrame.Operators,-                        DataFrame.Operations.Permutation,-                        DataFrame.Operations.Subset,-                        DataFrame.Operations.Statistics,-                        DataFrame.Operations.Transformations,-                        DataFrame.Operations.Typing,-                        DataFrame.Operations.Aggregation,-                        DataFrame.Display,-                        DataFrame.Display.Terminal.Plot,-                        DataFrame.Monad,-                        DataFrame.DecisionTree,-                        DataFrame.IO.JSON,-                        DataFrame.Typed.Types,-                        DataFrame.Typed.Schema,-                        DataFrame.Typed.Freeze,-                        DataFrame.Typed.Access,-                        DataFrame.Typed.Operations,-                        DataFrame.Typed.Join,-                        DataFrame.Typed.Aggregate,-                        DataFrame.Typed.Expr,-                        DataFrame.Typed.Record,-                        DataFrame.Typed.Generic-    build-depends:    base >= 4 && <5,-                      dataframe-core ^>= 1.0,-                      dataframe-json ^>= 1.0,-                      dataframe-operations ^>= 1.0,-                      dataframe-parsing ^>= 1.0,-                      dataframe-viz ^>= 1.0,-                      dataframe-learn ^>= 1.0--    if !flag(no-csv)-        reexported-modules: DataFrame.IO.CSV-        build-depends:   dataframe-csv ^>= 1.0-        cpp-options:     -DWITH_CSV--    if !flag(no-parquet)-        reexported-modules: DataFrame.IO.Parquet,-                            DataFrame.IO.Parquet.Binary,-                            DataFrame.IO.Parquet.Dictionary,-                            DataFrame.IO.Parquet.Levels,-                            DataFrame.IO.Parquet.Thrift,-                            DataFrame.IO.Parquet.Decompress,-                            DataFrame.IO.Parquet.Encoding,-                            DataFrame.IO.Parquet.Page,-                            DataFrame.IO.Parquet.Schema,-                            DataFrame.IO.Parquet.Utils,-                            DataFrame.IO.Parquet.Seeking,-                            DataFrame.IO.Parquet.Time,-                            DataFrame.IO.Utils.RandomAccess-        build-depends:   dataframe-parquet ^>= 1.0-        cpp-options:     -DWITH_PARQUET--    -- The lazy executor calls both CSV and Parquet readers directly, so-    -- it can only be pulled in when both backends are present.-    if !flag(no-csv) && !flag(no-parquet)-        reexported-modules: DataFrame.Lazy,-                            DataFrame.Lazy.IO.Binary,-                            DataFrame.Lazy.IO.CSV,-                            DataFrame.Lazy.Internal.DataFrame,-                            DataFrame.Lazy.Internal.LogicalPlan,-                            DataFrame.Lazy.Internal.PhysicalPlan,-                            DataFrame.Lazy.Internal.Optimizer,-                            DataFrame.Lazy.Internal.Executor,-                            DataFrame.Typed.Lazy-        build-depends:   dataframe-lazy ^>= 1.0-        cpp-options:     -DWITH_LAZY--    if !flag(no-th)-        build-depends:   dataframe-th ^>= 1.0-        cpp-options:     -DWITH_TH-        exposed-modules: DataFrame.TH,-                         DataFrame.Typed.TH--    if !flag(no-th) && !flag(no-csv)-        build-depends:   dataframe-csv-th ^>= 1.0-        cpp-options:     -DWITH_CSV_TH--    if !flag(no-th) && !flag(no-parquet)-        build-depends:   dataframe-parquet-th ^>= 1.0-        cpp-options:     -DWITH_PARQUET_TH--    hs-source-dirs:   src-    default-language: Haskell2010--library arrow-bridge-    import: warnings-    visibility: public-    hs-source-dirs:   ffi-    exposed-modules:  DataFrame.IO.Arrow-                      DataFrame.IR-                      DataFrame.IR.ExprJson-    -- The Arrow bridge IR loads CSV + Parquet readers, so it requires-    -- both backends. If either flag is off, skip building it.-    if flag(no-csv) || flag(no-parquet)-        buildable: False-    build-depends:-        base        >= 4   && < 5,-        dataframe,-        dataframe-core ^>= 1.0,-        dataframe-csv ^>= 1.0,-        dataframe-json ^>= 1.0,-        dataframe-lazy ^>= 1.0,-        dataframe-operations ^>= 1.0,-        dataframe-parquet ^>= 1.0,-        dataframe-parsing ^>= 1.0,-        text        >= 2.0 && < 3,-        aeson       >= 0.11 && < 3,-        bytestring  >= 0.11 && < 0.13,-        containers  >= 0.6.7 && < 0.9,-        vector      ^>= 0.13-    include-dirs:     cbits-    default-language: Haskell2010--executable dataframe-benchmark-example-    import: warnings-    main-is: Benchmark.hs-    build-depends:    base >= 4 && < 5,-                      dataframe >= 1 && < 3,-                      dataframe-operations ^>= 1.0,-                      random >= 1 && < 2,-                      time >= 1.12 && < 2,-                      vector ^>= 0.13,-    hs-source-dirs:   app-    default-language: Haskell2010-    ghc-options: -rtsopts -threaded -with-rtsopts=-N--executable synthesis-    import: warnings-    main-is: Synthesis.hs-    build-depends:    base >= 4 && < 5,-                      dataframe >= 1 && < 3,-                      dataframe-core ^>= 1.0,-                      dataframe-learn ^>= 1.0,-                      dataframe-operations ^>= 1.0,-                      random >= 1 && < 2,-                      text >= 2.0 && < 3-    hs-source-dirs:   app-    default-language: Haskell2010-    ghc-options: -rtsopts -threaded -with-rtsopts=-N--executable dataframe-    import: warnings-    main-is: Main.hs-    build-depends:    base >= 4 && < 5,-                      directory >= 1.3.0.0 && < 2,-                      filepath >= 1.4 && < 2,-                      process >= 1.6 && < 2,-                      time >= 1.12 && < 2-    if !os(windows)-        build-depends: unix >= 2 && < 3-    hs-source-dirs:   app-    default-language: Haskell2010-    ghc-options: -rtsopts -threaded -with-rtsopts=-N--executable lazy-bench-    import: warnings-    main-is: LazyBenchmark.hs-    -- lazy-bench drives the lazy executor against CSV/Parquet sources, so-    -- it can only build when both backends are present.-    if flag(no-csv) || flag(no-parquet)-        buildable: False-    build-depends:    base >= 4 && < 5,-                      bytestring >= 0.11 && < 0.13,-                      containers >= 0.6.7 && < 0.9,-                      dataframe >= 1 && < 3,-                      dataframe-core ^>= 1.0,-                      dataframe-lazy ^>= 1.0,-                      dataframe-parsing ^>= 1.0,-                      directory >= 1.3.0.0 && < 2,-                      random >= 1 && < 2,-                      text >= 2.0 && < 3,-                      time >= 1.12 && < 2,-    hs-source-dirs:   app-    default-language: Haskell2010-    ghc-options: -rtsopts -threaded -with-rtsopts=-N--benchmark dataframe-benchmark-    import: warnings-    type: exitcode-stdio-1.0-    main-is: Main.hs-    hs-source-dirs: benchmark-    build-depends: base >= 4 && < 5,-                   criterion >= 1 && < 2,-                   process >= 1.6 && < 2,-                   dataframe >= 1 && < 3,-                   random >= 1 && < 2,-    default-language: Haskell2010-    ghc-options:-      -threaded-      -rtsopts-      -with-rtsopts=-N--test-suite tests-    import: warnings-    type: exitcode-stdio-1.0-    main-is: Main.hs-    -- The test runner imports CSV, JSON, Parquet, Lazy, and TH-derived-    -- schema modules. All features must be enabled for it to compile.-    if flag(no-csv) || flag(no-parquet) || flag(no-th)-        buildable: False-    other-modules: Assertions,-                   DecisionTree,-                   Functions,-                   GenDataFrame,-                   Internal.Parsing,-                   IO.CSV,-                   IO.JSON,-                   Operations.Aggregations,-                   Operations.Apply,-                   Operations.Core,-                   Operations.Derive,-                   Operations.Filter,-                   Operations.GroupBy,-                   Operations.InsertColumn,-                   Operations.Join,-                   Operations.Merge,-                   Operations.Nullable,-                   Operations.Provenance,-                   Operations.ReadCsv,-                   Operations.Window,-                   Operations.WriteCsv,-                   Operations.Shuffle,-                   Operations.Sort,-                   Operations.Subset,-                   Operations.Statistics,-                   Operations.Take,-                   Operations.Typing,-                   Operations.Record,-                   LazyParquet,-                   Parquet,-                   ParquetTestData,-                   Properties,-                   Monad-    build-depends:  base >= 4 && < 5,-                    bytestring >= 0.11 && < 0.13,-                    dataframe >= 1 && < 3,-                    dataframe-core ^>= 1.0,-                    dataframe-csv ^>= 1.0,-                    dataframe-json ^>= 1.0,-                    dataframe-lazy ^>= 1.0,-                    dataframe-learn ^>= 1.0,-                    dataframe-operations ^>= 1.0,-                    dataframe-parquet ^>= 1.0,-                    dataframe-parsing ^>= 1.0,-                    dataframe-th ^>= 1.0,-                    HUnit ^>= 1.6,-                    QuickCheck >= 2 && < 3,-                    random-shuffle >= 0.0.4 && < 1,-                    random >= 1 && < 2,-                    text >= 2.0 && < 3,-                    time >= 1.12 && < 2,-                    vector ^>= 0.13,-                    containers >= 0.6.7 && < 0.9-    hs-source-dirs: tests-    default-language: Haskell2010+cabal-version:      3.0
+name:               dataframe
+version:            2.1.0.0
+x-revision: 1
+
+synopsis: A fast, safe, and intuitive DataFrame library.
+
+description: A fast, safe, and intuitive DataFrame library for exploratory data analysis.
+
+bug-reports: https://github.com/mchav/dataframe/issues
+license:            MIT
+license-file:       LICENSE
+author:             Michael Chavinda
+maintainer:         mschavinda@gmail.com
+
+copyright: (c) 2024-2025 Michael Chavinda
+category: Data
+tested-with: GHC ==9.4.8 || ==9.6.7 || ==9.8.4 || ==9.10.3 || ==9.12.2
+extra-doc-files: CHANGELOG.md README.md
+extra-source-files: cbits/arrow_abi.h
+                    tests/data/typing/texts.txt
+                    tests/data/typing/texts_with_empties.txt
+                    tests/data/typing/texts_with_empties_and_nullish.txt
+                    data/titanic/*.csv
+                    data/sharded/*.parquet
+                    tests/data/*.csv
+                    tests/data/*.tsv
+                    tests/data/*.parquet
+                    tests/data/unstable_csv/*.csv
+                    tests/data/unstable_csv/*.tsv
+                    -- tests/data/*.md
+                    -- tests/data/*.bin
+                    -- tests/data/*.json
+                    -- tests/data/*.txt
+                    -- tests/data/*.encrypted
+
+source-repository head
+  type:     git
+  location: https://github.com/mchav/dataframe
+
+common warnings
+    ghc-options:
+        -Wall
+
+flag no-csv
+    default:     False
+    manual:      True
+    description: Exclude the CSV reader/writer (@dataframe-csv@). Enable
+                 with @-f +no-csv@ (or @flags: no-csv@ in cabal.project)
+                 to trim the dep set of the meta package when CSV is not
+                 needed.
+
+flag no-parquet
+    default:     False
+    manual:      True
+    description: Exclude the Parquet reader/writer (@dataframe-parquet@
+                 plus pinch, zstd, snappy, streamly, http-conduit).
+                 Enable with @-f +no-parquet@.
+
+flag no-th
+    default:     False
+    manual:      True
+    description: Exclude the Template Haskell splices (@dataframe-th@,
+                 @dataframe-csv-th@, @dataframe-parquet-th@). Enable
+                 with @-f +no-th@ to drop the @template-haskell@ dep for
+                 downstream packages that don't use compile-time schema
+                 derivation.
+
+library
+    import: warnings
+    default-extensions: Strict
+    -- Lock the unused-packages gate locally; haskell-ci already runs the
+    -- same Werror against this stanza. Catches the case where a satellite
+    -- gets added to build-depends but never re-exported.
+    ghc-options: -Werror=unused-packages
+    exposed-modules: DataFrame,
+                    DataFrame.Typed
+    reexported-modules: DataFrame.Functions,
+                        DataFrame.Synthesis,
+                        DataFrame.Display.Web.Plot,
+                        DataFrame.Internal.Types,
+                        DataFrame.Internal.Expression,
+                        DataFrame.Internal.Grouping,
+                        DataFrame.Internal.Interpreter,
+                        DataFrame.Internal.Nullable,
+                        DataFrame.Internal.Parsing,
+                        DataFrame.Internal.Column,
+                        DataFrame.Internal.Binary,
+                        DataFrame.Internal.Statistics,
+                        DataFrame.Display.Terminal.PrettyPrint,
+                        DataFrame.Display.Terminal.Colours,
+                        DataFrame.Internal.DataFrame,
+                        DataFrame.Internal.Row,
+                        DataFrame.Internal.Schema,
+                        DataFrame.Errors,
+                        DataFrame.Operations.Core,
+                        DataFrame.Operations.Join,
+                        DataFrame.Operations.Merge,
+                        DataFrame.Operators,
+                        DataFrame.Operations.Permutation,
+                        DataFrame.Operations.Subset,
+                        DataFrame.Operations.Statistics,
+                        DataFrame.Operations.Transformations,
+                        DataFrame.Operations.Typing,
+                        DataFrame.Operations.Aggregation,
+                        DataFrame.Display,
+                        DataFrame.Display.Terminal.Plot,
+                        DataFrame.Monad,
+                        DataFrame.DecisionTree,
+                        DataFrame.IO.JSON,
+                        DataFrame.Typed.Types,
+                        DataFrame.Typed.Schema,
+                        DataFrame.Typed.Freeze,
+                        DataFrame.Typed.Access,
+                        DataFrame.Typed.Operations,
+                        DataFrame.Typed.Join,
+                        DataFrame.Typed.Aggregate,
+                        DataFrame.Typed.Expr,
+                        DataFrame.Typed.Record,
+                        DataFrame.Typed.Generic
+    build-depends:    base <0,
+                      dataframe-core ^>= 1.0,
+                      dataframe-json ^>= 1.0,
+                      dataframe-operations ^>= 1.0,
+                      dataframe-parsing ^>= 1.0,
+                      dataframe-viz ^>= 1.0,
+                      dataframe-learn ^>= 1.0
+
+    if !flag(no-csv)
+        reexported-modules: DataFrame.IO.CSV
+        build-depends:   dataframe-csv ^>= 1.0
+        cpp-options:     -DWITH_CSV
+
+    if !flag(no-parquet)
+        reexported-modules: DataFrame.IO.Parquet,
+                            DataFrame.IO.Parquet.Binary,
+                            DataFrame.IO.Parquet.Dictionary,
+                            DataFrame.IO.Parquet.Levels,
+                            DataFrame.IO.Parquet.Thrift,
+                            DataFrame.IO.Parquet.Decompress,
+                            DataFrame.IO.Parquet.Encoding,
+                            DataFrame.IO.Parquet.Page,
+                            DataFrame.IO.Parquet.Schema,
+                            DataFrame.IO.Parquet.Utils,
+                            DataFrame.IO.Parquet.Seeking,
+                            DataFrame.IO.Parquet.Time,
+                            DataFrame.IO.Utils.RandomAccess
+        build-depends:   dataframe-parquet ^>= 1.0
+        cpp-options:     -DWITH_PARQUET
+
+    -- The lazy executor calls both CSV and Parquet readers directly, so
+    -- it can only be pulled in when both backends are present.
+    if !flag(no-csv) && !flag(no-parquet)
+        reexported-modules: DataFrame.Lazy,
+                            DataFrame.Lazy.IO.Binary,
+                            DataFrame.Lazy.IO.CSV,
+                            DataFrame.Lazy.Internal.DataFrame,
+                            DataFrame.Lazy.Internal.LogicalPlan,
+                            DataFrame.Lazy.Internal.PhysicalPlan,
+                            DataFrame.Lazy.Internal.Optimizer,
+                            DataFrame.Lazy.Internal.Executor,
+                            DataFrame.Typed.Lazy
+        build-depends:   dataframe-lazy ^>= 1.0
+        cpp-options:     -DWITH_LAZY
+
+    if !flag(no-th)
+        build-depends:   dataframe-th ^>= 1.0
+        cpp-options:     -DWITH_TH
+        exposed-modules: DataFrame.TH,
+                         DataFrame.Typed.TH
+
+    if !flag(no-th) && !flag(no-csv)
+        build-depends:   dataframe-csv-th ^>= 1.0
+        cpp-options:     -DWITH_CSV_TH
+
+    if !flag(no-th) && !flag(no-parquet)
+        build-depends:   dataframe-parquet-th ^>= 1.0
+        cpp-options:     -DWITH_PARQUET_TH
+
+    hs-source-dirs:   src
+    default-language: Haskell2010
+
+library arrow-bridge
+    import: warnings
+    visibility: public
+    hs-source-dirs:   ffi
+    exposed-modules:  DataFrame.IO.Arrow
+                      DataFrame.IR
+                      DataFrame.IR.ExprJson
+    -- The Arrow bridge IR loads CSV + Parquet readers, so it requires
+    -- both backends. If either flag is off, skip building it.
+    if flag(no-csv) || flag(no-parquet)
+        buildable: False
+    build-depends:
+        base        >= 4   && < 5,
+        dataframe,
+        dataframe-core ^>= 1.0,
+        dataframe-csv ^>= 1.0,
+        dataframe-json ^>= 1.0,
+        dataframe-lazy ^>= 1.0,
+        dataframe-operations ^>= 1.0,
+        dataframe-parquet ^>= 1.0,
+        dataframe-parsing ^>= 1.0,
+        text        >= 2.0 && < 3,
+        aeson       >= 0.11 && < 3,
+        bytestring  >= 0.11 && < 0.13,
+        containers  >= 0.6.7 && < 0.9,
+        vector      ^>= 0.13
+    include-dirs:     cbits
+    default-language: Haskell2010
+
+executable dataframe-benchmark-example
+    import: warnings
+    main-is: Benchmark.hs
+    build-depends:    base >= 4 && < 5,
+                      dataframe >= 1 && < 3,
+                      dataframe-operations ^>= 1.0,
+                      random >= 1 && < 2,
+                      time >= 1.12 && < 2,
+                      vector ^>= 0.13,
+    hs-source-dirs:   app
+    default-language: Haskell2010
+    ghc-options: -rtsopts -threaded -with-rtsopts=-N
+
+executable synthesis
+    import: warnings
+    main-is: Synthesis.hs
+    build-depends:    base >= 4 && < 5,
+                      dataframe >= 1 && < 3,
+                      dataframe-core ^>= 1.0,
+                      dataframe-learn ^>= 1.0,
+                      dataframe-operations ^>= 1.0,
+                      random >= 1 && < 2,
+                      text >= 2.0 && < 3
+    hs-source-dirs:   app
+    default-language: Haskell2010
+    ghc-options: -rtsopts -threaded -with-rtsopts=-N
+
+executable dataframe
+    import: warnings
+    main-is: Main.hs
+    build-depends:    base >= 4 && < 5,
+                      directory >= 1.3.0.0 && < 2,
+                      filepath >= 1.4 && < 2,
+                      process >= 1.6 && < 2,
+                      time >= 1.12 && < 2
+    if !os(windows)
+        build-depends: unix >= 2 && < 3
+    hs-source-dirs:   app
+    default-language: Haskell2010
+    ghc-options: -rtsopts -threaded -with-rtsopts=-N
+
+executable lazy-bench
+    import: warnings
+    main-is: LazyBenchmark.hs
+    -- lazy-bench drives the lazy executor against CSV/Parquet sources, so
+    -- it can only build when both backends are present.
+    if flag(no-csv) || flag(no-parquet)
+        buildable: False
+    build-depends:    base >= 4 && < 5,
+                      bytestring >= 0.11 && < 0.13,
+                      containers >= 0.6.7 && < 0.9,
+                      dataframe >= 1 && < 3,
+                      dataframe-core ^>= 1.0,
+                      dataframe-lazy ^>= 1.0,
+                      dataframe-parsing ^>= 1.0,
+                      directory >= 1.3.0.0 && < 2,
+                      random >= 1 && < 2,
+                      text >= 2.0 && < 3,
+                      time >= 1.12 && < 2,
+    hs-source-dirs:   app
+    default-language: Haskell2010
+    ghc-options: -rtsopts -threaded -with-rtsopts=-N
+
+benchmark dataframe-benchmark
+    import: warnings
+    type: exitcode-stdio-1.0
+    main-is: Main.hs
+    hs-source-dirs: benchmark
+    build-depends: base >= 4 && < 5,
+                   criterion >= 1 && < 2,
+                   process >= 1.6 && < 2,
+                   dataframe >= 1 && < 3,
+                   random >= 1 && < 2,
+    default-language: Haskell2010
+    ghc-options:
+      -threaded
+      -rtsopts
+      -with-rtsopts=-N
+
+test-suite tests
+    import: warnings
+    type: exitcode-stdio-1.0
+    main-is: Main.hs
+    -- The test runner imports CSV, JSON, Parquet, Lazy, and TH-derived
+    -- schema modules. All features must be enabled for it to compile.
+    if flag(no-csv) || flag(no-parquet) || flag(no-th)
+        buildable: False
+    other-modules: Assertions,
+                   DecisionTree,
+                   Functions,
+                   GenDataFrame,
+                   Internal.Parsing,
+                   IO.CSV,
+                   IO.JSON,
+                   Operations.Aggregations,
+                   Operations.Apply,
+                   Operations.Core,
+                   Operations.Derive,
+                   Operations.Filter,
+                   Operations.GroupBy,
+                   Operations.InsertColumn,
+                   Operations.Join,
+                   Operations.Merge,
+                   Operations.Nullable,
+                   Operations.Provenance,
+                   Operations.ReadCsv,
+                   Operations.Window,
+                   Operations.WriteCsv,
+                   Operations.Shuffle,
+                   Operations.Sort,
+                   Operations.Subset,
+                   Operations.Statistics,
+                   Operations.Take,
+                   Operations.Typing,
+                   Operations.Record,
+                   LazyParquet,
+                   Parquet,
+                   ParquetTestData,
+                   Properties,
+                   Monad
+    build-depends:  base >= 4 && < 5,
+                    bytestring >= 0.11 && < 0.13,
+                    dataframe >= 1 && < 3,
+                    dataframe-core ^>= 1.0,
+                    dataframe-csv ^>= 1.0,
+                    dataframe-json ^>= 1.0,
+                    dataframe-lazy ^>= 1.0,
+                    dataframe-learn ^>= 1.0,
+                    dataframe-operations ^>= 1.0,
+                    dataframe-parquet ^>= 1.0,
+                    dataframe-parsing ^>= 1.0,
+                    dataframe-th ^>= 1.0,
+                    HUnit ^>= 1.6,
+                    QuickCheck >= 2 && < 3,
+                    random-shuffle >= 0.0.4 && < 1,
+                    random >= 1 && < 2,
+                    text >= 2.0 && < 3,
+                    time >= 1.12 && < 2,
+                    vector ^>= 0.13,
+                    containers >= 0.6.7 && < 0.9
+    hs-source-dirs: tests
+    default-language: Haskell2010