cabal-version: 3.4
name: dataframe-parquet
version: 1.5.1.0
synopsis: Parquet reader and writer for the dataframe ecosystem.
description:
@DataFrame.IO.Parquet@ — pure-Haskell Parquet 2.0 reader and writer
(with snappy, zstd, gzip codecs, dictionary decoding, nested
list/repeated columns, and predicate pushdown).
Heavy package — pulls in @pinch@ and compression codecs.
Reading directly from HuggingFace (@hf://@) datasets lives in the
separate @dataframe-huggingface@ package. Most users want
@dataframe-csv@ instead unless they specifically need Parquet.
bug-reports: https://github.com/mchav/dataframe/issues
license: MIT
license-file: LICENSE
author: Michael Chavinda
maintainer: mschavinda@gmail.com
copyright: (c) 2024-2026 Michael Chavinda
category: Data
tested-with: GHC ==9.4.8 || ==9.6.7 || ==9.8.4 || ==9.10.3 || ==9.12.2
extra-source-files: tests/data/*.parquet
common warnings
ghc-options:
-Wincomplete-patterns
-Wincomplete-uni-patterns
-Wunused-imports
-Wunused-local-binds
-Wunused-packages
flag stress-tests
description: Build and run the opt-in 10 GiB Parquet roundtrip stress test.
default: False
manual: True
library
import: warnings
ghc-options: -O2
exposed-modules:
DataFrame.IO.Parquet
DataFrame.IO.Parquet.Binary
DataFrame.IO.Parquet.Decompress
DataFrame.IO.Parquet.Dictionary
DataFrame.IO.Parquet.Encoding
DataFrame.IO.Parquet.Levels
DataFrame.IO.Parquet.Page
DataFrame.IO.Parquet.Schema
DataFrame.IO.Parquet.Seeking
DataFrame.IO.Parquet.Thrift
DataFrame.IO.Parquet.Time
DataFrame.IO.Parquet.Utils
DataFrame.IO.Parquet.Writer
DataFrame.IO.Parquet.Writer.DefLevels
DataFrame.IO.Parquet.Writer.Encoder
DataFrame.IO.Parquet.Writer.Metadata
DataFrame.IO.Parquet.Writer.Options
DataFrame.IO.Utils.RandomAccess
DataFrame.Typed.IO.Parquet
build-depends: base >= 4 && < 5,
bytestring >= 0.11 && < 0.14,
containers >= 0.6.7 && < 0.10,
dataframe-core >= 2.5 && < 2.6,
dataframe-operations >= 2.5 && < 2.6,
dataframe-parsing >= 2.2 && < 2.3,
primitive >= 0.7 && < 0.11,
directory >= 1.3.0.0 && < 2,
filepath >= 1.4 && < 2,
Glob >= 0.10 && < 1,
pinch >= 0.5 && < 1,
snappy-hs >= 0.1 && < 0.3,
text >= 2.1 && < 3,
time >= 1.12 && < 2,
vector >= 0.13 && < 0.15,
zlib >= 0.5 && < 1,
zstd >= 0.1.2.0 && < 0.3
hs-source-dirs: src
default-language: Haskell2010
test-suite dataframe-parquet-tests
import: warnings
type: exitcode-stdio-1.0
main-is: Main.hs
hs-source-dirs: tests
build-depends: base >= 4 && < 5,
bytestring >= 0.11 && < 0.14,
dataframe-core >= 2.5 && < 2.6,
dataframe-parquet,
directory >= 1.3.0.0 && < 2,
filepath >= 1.4 && < 2,
temporary >= 1.3 && < 1.5,
text >= 2.1 && < 3,
HUnit >= 1.6 && < 1.8
default-language: Haskell2010
executable dataframe-parquet-10gb-stress
import: warnings
main-is: StressMain.hs
other-modules: DataFrame10GB
hs-source-dirs: stress
build-depends: base >= 4 && < 5,
dataframe-core >= 2.5 && < 2.6,
dataframe-parquet,
filepath >= 1.4 && < 2,
temporary >= 1.3 && < 1.5,
text >= 2.1 && < 3,
time >= 1.12 && < 2,
vector >= 0.13 && < 0.15
default-language: Haskell2010
-- ghc-options: -O2 -threaded -rtsopts -with-rtsopts=-N
benchmark dataframe-parquet-writer-10gb
import: warnings
type: exitcode-stdio-1.0
main-is: Writer10GB.hs
other-modules: DataFrame10GB
hs-source-dirs: benchmark, stress
build-depends: base >= 4 && < 5,
criterion >= 1 && < 2,
deepseq >= 1.4 && < 2,
dataframe-core >= 2.5 && < 2.6,
dataframe-parquet,
directory >= 1.3 && < 2,
filepath >= 1.4 && < 2,
temporary >= 1.3 && < 1.5,
text >= 2.1 && < 3,
time >= 1.12 && < 2,
vector >= 0.13 && < 0.15
default-language: Haskell2010
ghc-options: -O2 -threaded -rtsopts -with-rtsopts=-N