[package]
name = "qsv"
version = "0.108.0" #:version
authors = ["Joel Natividad <joel@datHere.com>"]
description = "A high performance CSV data-wrangling toolkit."
documentation = "https://github.com/jqnatividad/qsv#qsv-ultra-fast-csv-data-wrangling-toolkit"
homepage = "https://github.com/jqnatividad/qsv#qsv-ultra-fast-csv-data-wrangling-toolkit"
repository = "https://github.com/jqnatividad/qsv"
readme = "README.md"
keywords = ["csv", "geocode", "data-engineering", "etl", "opendata"]
categories = ["command-line-utilities", "parser-implementations"]
license = "MIT OR Unlicense"
autotests = false
edition = "2021"
rust-version = "1.70.0"
autobins = false
include = [
    "src/**/*",
    "LICENSE-MIT",
    "README.md",
    "CHANGELOG.md",
    "resources/luau/vendor/luadate/date.lua",
]

[[bin]]
name              = "qsv"
test              = true
bench             = false
doctest           = false
path              = "src/main.rs"
required-features = ["feature_capable"]

[[bin]]
name              = "qsvlite"
test              = true
bench             = false
doctest           = false
path              = "src/mainlite.rs"
required-features = ["lite"]

[[bin]]
name              = "qsvdp"
test              = true
bench             = false
doctest           = false
path              = "src/maindp.rs"
required-features = ["datapusher_plus"]

[[test]]
name = "tests"
path = "tests/tests.rs"

[profile.release]
codegen-units = 1
debug         = false
lto           = true
opt-level     = 3
strip         = true

[profile.release-nightly]
inherits = "release"
panic    = "abort"

[dependencies]
ahash = "0.8"
bincode = "1.3"
byteorder = "1.4"
bytes = "1"
cached = { version = "0.44", default-features = false, features = [
    "proc_macro",
    "redis_ahash",
], optional = true }
calamine = { version = "0.21", features = ["dates"] }
censor = { version = "0.3", optional = true }
chrono = { version = "0.4", default-features = false }
console = { version = "0.15", optional = true }
cpc = { version = "1.9", optional = true }
crossbeam-channel = "0.5"
csv = "1.2"
csv-diff = "0.1.0-beta.4"
csv-index = "0.1"
csvs_convert = { version = "0.8", optional = true }
data-encoding = { version = "2.4", optional = true }
dotenvy = "0.15"
dynfmt = { version = "0.1", default-features = false, features = [
    "curly",
], optional = true }
eudex = { version = "0.1", optional = true }
ext-sort = { version = "0.1", features = [
    "memory-limit",
], default-features = false }
flate2 = { version = "1", optional = true }
file-format = {version = "0.17", features = ["reader"] }
filetime = "0.2"
flexi_logger = { version = "0.25", features = [
    "async",
    "compress",
], default-features = false }
futures = "0.3"
futures-util = "0.3"
governor = { version = "0.5", optional = true }
grex = { version = "1.4", default-features = false }
gzp = { version = "0.11", default-features = false, features = [
    "snappy_default",
] }
hashbrown = { version = "0.14", optional = true }
indexmap = "2.0"
indicatif = "0.17"
itertools = "0.11"
itoa = "1"
jemallocator = { version = "0.5", optional = true }
jsonschema = { version = "0.17", features = [
    "resolve-file",
    "resolve-http",
], default-features = false }
jsonxf = { version = "1", optional = true }
jql-runner = { version = "6.0", default-features = false, optional = true }
log = "0.4"
mimalloc = { version = "0.1", default-features = false, optional = true }
mlua = { version = "0.9.0-beta.3", features = [
    "luau",
    "serialize",
], optional = true }
num_cpus = "1"
odht = "0.3"
polars = { version = "0.30", features = [
    "lazy",
    "streaming",
    "object",
    "asof_join",
    "cross_join",
    "semi_anti_join",
    "sql",
    "json",
    "parquet",
    "ipc",
    "temporal",
    "performant",
], optional = true }
pyo3 = { version = "0.19", features = ["auto-initialize"], optional = true }
qsv-dateparser = "0.9"
qsv_docopt = "1.3"
qsv-stats = "0.10"
qsv_currency = { version = "0.6", optional = true }
qsv-sniffer = { version = "0.9", default-features = false, features = [
    "runtime-dispatch-simd",
] }
rand = "0.8"
rayon = "1.7"
redis = { version = "0.23", features = [
    "ahash",
], default-features = false, optional = true }
regex = "1"
reqwest = { version = "0.11", features = [
    "blocking",
    "brotli",
    "cookies",
    "deflate",
    "gzip",
    "rustls-tls",
    "stream",
], default-features = false }
reverse_geocoder = { version = "3", optional = true }
rust_decimal = "1.30"
ryu = "1"
sanitise-file-name = { version = "1.0", optional = true }
self_update = { version = "0.37", features = [
    "archive-zip",
    "compression-zip-deflate",
    "rustls",
], default-features = false, optional = true }
semver = "1"
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["preserve_order"] }
serde_stacker = { version = "0.1", optional = true }
serde_urlencoded = { version = "0.7", optional = true }
snap = "1"
strsim = { version = "0.10", optional = true }
strum = "0.25"
strum_macros = "0.25"
sysinfo = "0.29"
tabwriter = "1.2"
tempfile = "3"
test-data-generation = { version = "0.3", optional = true }
thousands = "0.2"
threadpool = "1.8"
titlecase = { version = "2", optional = true }
tokio = "1"
uuid = { version = "1", features = ["v4"] }
url = "2.4"
vader_sentiment = { version = "0.1", optional = true }
whatlang = { version = "0.16", optional = true }

[target.'cfg(not(target_arch = "aarch64"))'.dependencies]
simdutf8 = "0.1"

# use SIMD on aarch64 (Apple Silicon, Raspberry Pi 4, etc.)
[target.'cfg(target_arch = "aarch64")'.dependencies]
simdutf8 = { version = "0.1", features = ["aarch64_neon"] }

[dev-dependencies]
actix-governor = "0.4"
actix-web = { version = "4.3", default-features = false, features = [
    "compress-brotli",
    "compress-gzip",
] }
assert-json-diff = "2.0"
newline-converter = "0.3"
postgres = "0.19"
quickcheck = { version = "1", default-features = false }
rusqlite = { version = "0.29", features = ["bundled"] }
serial_test = { version = "2.0", features = ["file_locks"] }

[features]
default = ["mimalloc"]
all_features = [
    "feature_capable",
    "apply",
    "fetch",
    "foreach",
    "generate",
    "luau",
    "polars",
    "python",
    "self_update",
    "to",
]
apply = [
    "cached",
    "censor",
    "cpc",
    "data-encoding",
    "dynfmt",
    "eudex",
    "hashbrown",
    "qsv_currency",
    "reverse_geocoder",
    "strsim",
    "titlecase",
    "vader_sentiment",
    "whatlang",
]
fetch = [
    "cached",
    "console",
    "dynfmt",
    "flate2",
    "governor",
    "hashbrown",
    "jql-runner",
    "jsonxf",
    "redis",
    "serde_stacker",
    "serde_urlencoded",
]
foreach = []
generate = ["test-data-generation"]
luau = ["mlua", "sanitise-file-name"]
python = ["pyo3"]
to = ["csvs_convert"]
lite = []
datapusher_plus = ["dynfmt", "self_update"]
feature_capable = []
nightly = [
    "regex/unstable",
    "rand/nightly",
    "rand/simd_support",
    "pyo3/nightly",
    "hashbrown/nightly",
]
