-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathCargo.toml
More file actions
106 lines (95 loc) · 3.11 KB
/
Copy pathCargo.toml
File metadata and controls
106 lines (95 loc) · 3.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
[package]
name = "mdfr"
version = "0.7.0"
description = "A package for reading and writing MDF files"
authors = ["ratal <ratal@ratal.org>"]
edition = "2024"
repository = "https://github.com/ratal/mdfr/"
categories = ["encoding", "filesystem"]
license = "GPL-3.0"
readme = "README.md"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[features]
default = ["numpy", "parquet", "polars"]
# Expose pyo3's extension-module as a top-level feature so cargo test (without this flag)
# links against libpython, enabling embedded-Python tests. maturin auto-enables this.
extension-module = ["pyo3/extension-module"]
numpy = ["dep:numpy", "dep:pyo3"]
polars = ["dep:polars", "dep:numpy", "dep:pyo3"] # numpy and pyo3 are required transitive deps for polars Python interop
parquet = ["dep:parquet"]
hdf5 = ["dep:hdf5", "ndarray"]
ndarray = ["dep:ndarray"]
hdf5-mpio = ["hdf5/mpio"]
[dependencies]
clap = "4.6.1" # for input arguments
anyhow = { version = "1.0.102", features = ["backtrace"] } # error handling
log = "0.4" # to log events
byteorder = "1.4" # for bytes conversions
binrw = "0.15.1" # to efficiently read blocks
num = "0.4"
half = "2.7" # for f16 handling
encoding_rs = "0.8" # for endian management and bytes to text conversion (utf8, SBC, UTF16)
unicode-bom = "2.0"
codepage = "0.1" # to convert code page into encoding
chrono = "0.4.41" # for time conversion
rayon = "1.11" # for general purpose parallel computations
crossbeam-channel = "0.5" # for efficient channel between threads
parking_lot = "0.12" # for efficient mutex
roxmltree = "0.21" # for xml parsing
flate2 = "1.1.9" # for DZ block data deflate
zstd = "0.13"
lz4 = "1.28"
md-5 = "0.11" # md5sum of attachments
transpose = "0.2" # for DZBlock transpose
fasteval = "0.2" # for algebraic conversion
itertools = "0.14"
serde = { version = "1.0", features = ["derive"] } # for serialization
whoami = "2.1.1" # to get user name for writing file
rand = "0.10" # for random numbers
arrow = { version = "58.1.0", features = [
"pyarrow",
"prettyprint",
"ffi",
] } # for efficient data storing in memory
env_logger = "0.11.10"
libc = "0.2.184" # for the C api
numpy = { version = "0.28", optional = true } # to export in numpy
polars = { version = "0.53", features = [
"dtype-full",
"object",
"fmt",
], optional = true } # for python dataframe
parquet = { version = "58.1.0", optional = true } # to write parquet file
hdf5 = { version = "0.8", optional = true, features = [
"lzf",
] } # to export into hdf5 file
ndarray = { version = "0.17", optional = true } # to convert arraw data into ndarray, needed for hdf5
[dependencies.pyo3]
version = "0.28.3"
features = ["num-complex", "anyhow"]
optional = true
[dev-dependencies]
criterion = "0.8.2" # for benchmark
test-log = "0.2"
glob = "0.3"
tempfile = "3"
[build-dependencies]
cbindgen = "0.29" # to generate C api headers
[lib]
name = "mdfr"
crate-type = ["rlib", "cdylib"]
[[bench]]
name = "mdf_benchmark"
harness = false
[profile.release]
opt-level = 3
debug = false
lto = true
[profile.bench]
debug = false
opt-level = 3
lto = true
[profile.dev]
debug = 2
lto = false
opt-level = 0