rangebar 0.7.0

Non-lookahead range bar construction for cryptocurrency trading with temporal integrity guarantees
Documentation
[badges.maintenance]
status = "actively-developed"

[[bench]]
harness = false
name = "rangebar_bench"
path = "benches/rangebar_bench.rs"

[[bin]]
name = "data-structure-validator"
path = "src/bin/data_structure_validator.rs"

[[bin]]
name = "rangebar-analyze"
path = "src/bin/parallel_tier1_analysis.rs"

[[bin]]
name = "rangebar-export"
path = "src/bin/rangebar_export.rs"

[[bin]]
name = "rangebar_api"
path = "src/bin/rangebar_api.rs"

[[bin]]
name = "tier1-symbol-discovery"
path = "src/bin/tier1_symbol_discovery.rs"

[dependencies.anyhow]
optional = true
version = "1.0"

[dependencies.arrow]
optional = true
version = "53.0"

[dependencies.axum]
features = ["json", "multipart", "ws"]
optional = true
version = "0.7"

[dependencies.bufferpool]
optional = true
version = "0.1"

[dependencies.bytes]
version = "1.0"

[dependencies.chrono]
features = ["serde"]
version = "0.4"

[dependencies.clap]
features = ["derive", "env"]
version = "4.0"

[dependencies.comfy-table]
version = "7.2"

[dependencies.config]
version = "0.14"

[dependencies.crc32fast]
optional = true
version = "1.4"

[dependencies.csv]
version = "1.3"

[dependencies.csv-async]
features = ["tokio"]
version = "1.3"

[dependencies.futures]
version = "0.3"

[dependencies.futures-util]
version = "0.3"

[dependencies.md5]
optional = true
version = "0.7"

[dependencies.mempool]
optional = true
version = "0.3"

[dependencies.nalgebra]
optional = true
version = "0.33"

[dependencies.num_cpus]
version = "1.16"

[dependencies.parquet]
optional = true
version = "53.0"

[dependencies.polars]
features = ["lazy", "temporal", "strings", "parquet", "csv"]
optional = true
version = "0.49"

[dependencies.pyo3]
features = ["extension-module", "abi3-py38"]
optional = true
version = "0.26"

[dependencies.quantiles]
optional = true
version = "0.7"

[dependencies.rayon]
version = "1.11"

[dependencies.reqwest]
features = ["stream"]
version = "0.12"

[dependencies.rolling-stats]
optional = true
version = "0.1"

[dependencies.serde]
features = ["derive"]
version = "1.0"

[dependencies.serde_json]
features = ["arbitrary_precision"]
version = "1.0"

[dependencies.sha2]
optional = true
version = "0.10"

[dependencies.statrs]
optional = true
version = "0.17"

[dependencies.ta-statistics]
optional = true
version = "0.2"

[dependencies.tdigests]
optional = true
version = "1.0"

[dependencies.thiserror]
version = "2.0"

[dependencies.tikv-jemallocator]
optional = true
version = "0.6"

[dependencies.tokio]
features = ["full"]
version = "1.0"

[dependencies.tokio-stream]
version = "0.1"

[dependencies.tower]
features = ["limit", "timeout"]
optional = true
version = "0.4"

[dependencies.tower-http]
features = ["cors", "trace", "compression-br"]
optional = true
version = "0.5"

[dependencies.tracing]
optional = true
version = "0.1"

[dependencies.tracing-subscriber]
features = ["env-filter", "json"]
optional = true
version = "0.3"

[dependencies.utoipa]
features = ["axum_extras", "chrono", "uuid"]
optional = true
version = "4.2"

[dependencies.utoipa-swagger-ui]
features = ["axum"]
optional = true
version = "4.0"

[dependencies.uuid]
features = ["v4", "serde"]
optional = true
version = "1.6"

[dependencies.validator]
features = ["derive"]
optional = true
version = "0.18"

[dependencies.zip]
version = "2.2"

[dev-dependencies.criterion]
features = ["html_reports"]
version = "0.5"

[dev-dependencies.toml]
version = "0.8"

[[example]]
name = "basic_usage"
path = "examples/basic_usage.rs"

[[example]]
name = "tier1_symbols"
path = "examples/tier1_symbols.rs"

[features]
api = ["dep:axum", "dep:tower", "dep:tower-http", "dep:utoipa", "dep:utoipa-swagger-ui", "dep:anyhow", "dep:tracing", "dep:tracing-subscriber", "dep:validator", "dep:uuid"]
api-service = ["api", "streaming-analytics"]
arrow-support = ["dep:arrow", "dep:parquet"]
data-integrity = ["dep:sha2", "dep:crc32fast", "dep:md5"]
default = ["statistics", "data-integrity", "streaming-v2"]
dual-run-validation = []
full-analytics = ["statistics", "data-integrity"]
memory-optimized = ["dep:mempool", "dep:bufferpool", "dep:tikv-jemallocator"]
production = ["full-analytics", "arrow-support"]
python = ["dep:pyo3", "statistics"]
python-bindings = ["dep:pyo3", "statistics"]
simd = []
statistics = ["dep:statrs", "dep:quantiles", "dep:polars", "dep:nalgebra"]
streaming-analytics = ["streaming-stats", "data-integrity"]
streaming-production = ["streaming-analytics", "arrow-support"]
streaming-stats = ["dep:ta-statistics", "dep:rolling-stats", "dep:tdigests"]
streaming-v2 = []

[lib]
crate-type = ["rlib"]
name = "rangebar"
path = "src/lib.rs"

[package]
authors = ["Terry Li <terry@eonlabs.com>"]
autobenches = false
autobins = false
autoexamples = false
autolib = false
autotests = false
build = false
categories = ["algorithms", "data-structures", "finance"]
description = "Non-lookahead range bar construction for cryptocurrency trading with temporal integrity guarantees"
documentation = "https://docs.rs/rangebar"
edition = "2024"
exclude = ["CLAUDE.md", "docs/", "*.py", "*.ipynb", "test_data/", "test_output/", "test_regression/", "test_single/", "test_spot/", "test_thresholds/", "data/", "output/", "range_bar_charts/", "statistical_analysis/", "visualization/", "web/", "adversarial_test_output/", "milestones/", ".venv/", "repos/", ".pytest_cache/", "benchmark_data/", "binance_futures_*.txt"]
homepage = "https://github.com/Eon-Labs/rangebar"
keywords = ["finance", "trading", "range-bars", "cryptocurrency", "binance"]
license = "MIT"
name = "rangebar"
readme = "README.md"
repository = "https://github.com/Eon-Labs/rangebar"
rust-version = "1.90"
version = "0.7.0"

[profile.dev]
overflow-checks = true

[profile.release]
codegen-units = 1
lto = true
overflow-checks = false
panic = "abort"

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

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

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

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

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

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

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