wireform-arrow-0.1.0.0: wireform-arrow.cabal
cabal-version: 3.0
name: wireform-arrow
version: 0.1.0.0
synopsis: Apache Arrow IPC schema framing and record batch materialization
description:
Arrow column arrays and IPC file/stream codecs, with schema and record
derivation and optional LZ4 and Zstandard buffer compression.
category: Data, Codec
license: BSD-3-Clause
license-file: LICENSE
author: Ian Duncan
maintainer: ian@iankduncan.com
copyright: 2026 Ian Duncan
build-type: Simple
extra-source-files:
test-interop/pyarrow_interop.py
test/golden/*.arrow
test/golden/*.arrows
flag zstd
description: Enable Zstandard body-buffer compression for Arrow IPC.
default: False
manual: True
flag lz4
description: Enable LZ4 frame-format body-buffer compression for Arrow IPC.
default: False
manual: True
common defaults
ghc-options:
-Wall
-Wcompat
-Widentities
-Wincomplete-record-updates
-Wincomplete-uni-patterns
-Wpartial-fields
-Wredundant-constraints
-O2
default-language: GHC2021
default-extensions:
StrictData
DerivingStrategies
DeriveGeneric
DeriveAnyClass
OverloadedStrings
LambdaCase
library
import: defaults
hs-source-dirs: src
exposed-modules:
Arrow.Column
Arrow.Column.Buffer
Arrow.Column.Builder
Arrow.Column.Internal
Arrow.Derive
Arrow.File
Arrow.FlatBufferIPC
Arrow.FlatBufferIPC.Common
Arrow.FlatBufferIPC.Read
Arrow.FlatBufferIPC.Write
Arrow.IPC
Arrow.Read.Columns
Arrow.Record
Arrow.Record.Generic
Arrow.Record.TH
Arrow.Stream
Arrow.Types
Arrow.Vector
Arrow.Vector.Internal
Arrow.Write
Arrow.Write.Columns
build-depends:
base >= 4.20 && < 5,
wireform-core >= 0.3 && < 0.4,
wireform-columnar-core == 0.1.*,
wireform-derive == 0.2.*,
wireform-flatbuffers == 0.1.*,
bytestring >= 0.11 && < 0.13,
text >= 2.0 && < 2.2,
vector >= 0.13 && < 0.14,
primitive >= 0.7 && < 0.10,
containers >= 0.6 && < 0.9,
crypton >= 2.2.6 && < 2.3,
deepseq >= 1.4 && < 1.6,
ram >= 0.20.1 && < 0.23,
template-haskell >= 2.18 && < 2.25
if flag(zstd)
cpp-options: -DHAVE_ZSTD
build-depends: zstd >= 0.1 && < 0.2
if flag(lz4)
cpp-options: -DHAVE_LZ4
-- lz4-hs bundles LZ4 1.9.3 and exposes Codec.Lz4's frame-format
-- compress / decompress functions. Older Hackage "lz4" only
-- implements the block format (incompatible with arrow-cpp).
build-depends: lz4-hs >= 0.1 && < 0.2
test-suite wireform-arrow-test
import: defaults
type: exitcode-stdio-1.0
main-is: Main.hs
hs-source-dirs: test
other-modules:
Test.Arrow.Core
Test.Arrow.Decimal
Test.Arrow.Features
Test.Arrow.Gen
Test.Arrow.Malformed
Test.Arrow.Props
Test.Arrow.Sections
Test.Arrow.Vector
build-depends:
base >= 4.20 && < 5,
wireform-arrow,
wireform-columnar-core,
wireform-flatbuffers,
bytestring >= 0.11 && < 0.13,
containers >= 0.6 && < 0.9,
deepseq >= 1.4 && < 1.6,
directory,
hedgehog >= 1.2 && < 1.8,
text >= 2.0 && < 2.2,
vector >= 0.13 && < 0.14,
primitive >= 0.7 && < 0.10
test-suite wireform-arrow-derive-test
import: defaults
type: exitcode-stdio-1.0
main-is: Main.hs
hs-source-dirs: test-derive
other-modules:
Test.Arrow.Derive
Test.Arrow.Derive.Types
Test.Arrow.Derive.Instances
default-extensions:
ScopedTypeVariables
TemplateHaskell
build-depends:
base,
wireform-arrow,
wireform-derive,
template-haskell,
text,
vector,
sydtest
benchmark wireform-arrow-bench
import: defaults
type: exitcode-stdio-1.0
hs-source-dirs: bench
main-is: Bench.hs
-- A 64 MB nursery: the materializing and typed rows are otherwise
-- dominated by minor GCs (see README, Performance).
ghc-options: -O2 -rtsopts "-with-rtsopts=-A64m"
build-depends:
base,
wireform-arrow,
bytestring,
deepseq,
text,
vector,
criterion >= 1.5 && < 1.7
-- Bidirectional pyarrow interop (wireform-arrow writes / pyarrow reads,
-- pyarrow writes / wireform-arrow reads). Needs a Python with pyarrow:
-- WIREFORM_ARROW_PYTHON (default python3). Prints SKIP and passes when
-- pyarrow is missing unless WIREFORM_ARROW_REQUIRE_PYARROW=1.
test-suite wireform-arrow-pyarrow-interop
import: defaults
type: exitcode-stdio-1.0
main-is: Main.hs
hs-source-dirs: test-interop
build-depends:
base >= 4.20 && < 5,
wireform-arrow,
bytestring >= 0.11 && < 0.13,
containers >= 0.6 && < 0.9,
deepseq >= 1.4 && < 1.6,
directory >= 1.3 && < 1.4,
filepath >= 1.4 && < 1.6,
primitive >= 0.7 && < 0.10,
process >= 1.6 && < 1.8,
temporary >= 1.3 && < 1.4,
text >= 2.0 && < 2.2,
vector >= 0.13 && < 0.14
if flag(zstd)
cpp-options: -DHAVE_ZSTD
if flag(lz4)
cpp-options: -DHAVE_LZ4