
[package]
name = "sec-fetcher"
version.workspace = true
edition.workspace = true
authors.workspace = true
repository.workspace = true
license.workspace = true
description.workspace = true
keywords.workspace = true
categories.workspace = true
autobins = false
[workspace]
members = ["sec-fetcher-shared"]

[workspace.package]
version = "0.3.0-alpha"
edition = "2024"
authors = ["Jeremy Harris <jeremy.harris@zenosmosis.com>"]
repository = "https://github.com/jzombie/rust-sec-fetcher"
license = "PolyForm-Noncommercial-1.0.0"
description = "Async Rust client for SEC EDGAR: fetch filings, fund holdings, XBRL data, and IPO registrations with compliant rate limiting."
keywords = ["sec", "edgar", "finance", "filings", "stocks"]
categories = ["api-bindings", "finance", "web-programming"]

[workspace.dependencies]
sec-fetcher-shared = { path = "sec-fetcher-shared", version = "0.3.0-alpha" }

# ── Stabilized utility bins ───────────────────────────────────────────────────

[[bin]]
name = "refresh-test-fixtures"
path = "src/bin/refresh_test_fixtures.rs"

[[bin]]
name = "check-form-type-coverage"
path = "src/bin/check_form_type_coverage.rs"

# ── Debug data-pull bins (src/bin/pulls/) ─────────────────────────────────────
# Experimental/in-progress scripts used to bulk-pull and explore SEC data
# locally.  Kept in a sub-directory to distinguish them from the stabilized
# bins above.

[[bin]]
name = "pull-us-gaap-bulk"
path = "src/bin/pulls/us_gaap_bulk.rs"

[[bin]]
name = "pull-fund-holdings"
path = "src/bin/pulls/fund_holdings.rs"

[features]
# Enables OS keychain integration for persisting the SEC contact email across
# sessions.  Requires libdbus-1-dev / pkg-config on Linux (provided
# automatically in the CI matrix that enables this feature).  Disabled by
# default so the crate builds on generic Linux environments without extra
# system packages.
keyring = ["dep:keyring"]

[dependencies]
bitcode = "0.6.9"
bytes = "1.11.1"
chrono = "0.4.44"
clap = { version = "4.6.0", features = ["derive"] }
config = "0.15.22"
csv = "1.4.0"
dashmap = { version = "6.1.0", features = ["rayon"] }
dirs = "6.0.0"
email_address = "0.2.9"
flate2 = "1.1"
futures = "0.3.32"
html-to-markdown-rs = "3.1.0"
html2text = "0.16.7"
indexmap = "2.13.0"
itertools = "0.14.0"
keyring = { version = "3.6.3", features = ["apple-native", "windows-native", "sync-secret-service"], optional = true }
merge = "0.2.0"
polars = { version = "0.46.0", features = ["json", "lazy", "pivot"] }
quick-xml = "0.39.2"
rand = "0.10.0"
rayon = "1.11.0"
regex = "1.12.3"
reqwest = { version = "0.13.2", features = ["json"] }
reqwest-drive = "0.13.2-alpha.2"
rust_decimal = { version = "1.41.0", features = ["serde"] }
rust_decimal_macros = "1.40.0"
schemars = "1.2.1"
sec-fetcher-shared.workspace = true
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
serde_with = "3.18.0"
simd-r-drive = "0.16.0-alpha"
simd-r-drive-extensions = "0.16.0-alpha"
strum = "0.28.0"
strum_macros = "0.28.0"
tempfile = "3.27.0"
tokio = { version = "1.50.0", features = ["full"] }
tracing = "0.1.44"
tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }

[dev-dependencies]
indoc = "2.0.7"
mockito = "1.7.2"
