Files
xet-core/Cargo.toml
Assaf Vayner 9c0cb6e4c8 Reduce workspace dependencies (batches 1-3) (#746)
## Summary

- **Remove unused dependencies**: warp (zero imports), paste (zero
invocations), tower-service (zero imports), and heed misplacement in
xet_core_structures
- **Move mockall to dev-dependencies** in xet_client by gating
`#[automock]` with `#[cfg_attr(test, automock)]`
- **Feature-gate simulation module** behind `simulation` cargo feature
in xet_client, making axum, heed, humantime, futures-util,
human-bandwidth, and tower-http optional
- **Replace duration-str with humantime** (~2 deps vs ~78 transitive
deps) across xet_runtime, xet_client simulation, and simulation crate

## Impact

| Metric | Before | After | Change |
|---|---|---|---|
| hf-xet production deps | 371 | 321 | **-50** |
| Workspace total | 575 | 569 | -6 |

## Test plan

- [x] `cargo check --workspace` passes
- [x] `cargo check -p hf-xet` passes (without simulation feature — key
validation)
- [x] `cargo test --workspace` — all tests pass (4 pre-existing auth
test failures in git_xet unrelated to this PR)
- [x] `cargo tree -p hf-xet -e normal --prefix none | sort -u | wc -l`
confirms 321 deps

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Medium Risk**
> Medium risk because it changes dependency graph and Cargo feature
gating (notably `xet-client` simulation modules and CI test features),
which can affect build/test behavior across targets despite minimal
runtime logic changes.
> 
> **Overview**
> Reduces workspace dependency surface by removing `duration-str`
(replaced with `humantime`) and trimming other transitive-heavy crates;
updates lockfiles accordingly across the workspace, `hf_xet`, and WASM
builds.
> 
> Introduces/propagates a `simulation` Cargo feature: `xet-client`’s
simulation server-related deps become optional and are only
compiled/exported when `feature = "simulation"` is enabled; `git_xet`
adds a `simulation` feature that forwards to dependent crates, and CI
now runs tests with `strict simulation git-xet-for-integration-test`.
> 
> Minor repo hygiene updates include ignoring `.claude/` in `.gitignore`
and wiring the `simulation` crate to depend on `xet-client` with
`features = ["simulation"]` (plus swapping its duration parsing helper
to `humantime`).
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
6abc194398. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 09:54:36 -07:00

140 lines
2.8 KiB
TOML

[workspace]
resolver = "2"
members = [
# Consolidated packages
"xet_runtime",
"xet_core_structures",
"xet_client",
"xet_data",
"xet_pkg",
# Top-level crates (not published as packages)
"git_xet",
"simulation",
]
exclude = ["simulation/chunk_cache_bench", "hf_xet", "wasm/hf_xet_wasm", "wasm/hf_xet_thin_wasm"]
[workspace.package]
version = "1.4.0"
edition = "2024"
license = "Apache-2.0"
repository = "https://github.com/huggingface/xet-core"
[profile.release]
opt-level = 3
lto = true
debug = 1
[profile.opt-test]
inherits = "dev"
opt-level = 3
debug = 1
[profile.smoke-test]
inherits = "dev"
[workspace.dependencies]
anyhow = "1"
async-std = "1"
async-trait = "0.1"
axum = "0.8"
base64 = "0.22"
bincode = "1.3"
bitflags = { version = "2.10", features = ["serde"] }
blake3 = "1.8"
bytemuck = "1"
bytes = "1.11"
chrono = "0.4"
clap = { version = "4", features = ["derive"] }
colored = "3"
console-subscriber = "0.5"
countio = { version = "0.3", features = ["futures"] }
crc32fast = "1.5"
csv = "1"
ctor = "0.6"
derivative = "2.2"
dirs = "6.0"
futures = "0.3"
humantime = "2.1"
futures-util = "0.3"
gearhash = "0.1"
getrandom = { version = "0.4", features = ["wasm_js"] }
git-url-parse = "0.4"
git-version = "0.3"
git2 = "0.20"
half = "2.7"
heapify = "0.2"
heed = "0.22"
http = "1"
human-bandwidth = "0.1"
hyper = "1.8"
hyper-util = "0.1"
itertools = "0.14"
lazy_static = "1.5"
libc = "0.2"
lz4_flex = "0.13"
mockall = "0.14"
more-asserts = "0.3"
oneshot = "0.1"
pin-project = "1"
pyo3 = { version = "0.26", features = ["abi3-py37", "multiple-pymethods"] }
prometheus = "0.14"
rand = "0.9"
rand_chacha = "0.9"
regex = "1"
reqwest = { version = "0.13.1", features = [
"json",
"stream",
"system-proxy",
"socks",
], default-features = false }
reqwest-middleware = "0.5"
reqwest-retry = "0.9"
rust-netrc = "0.1"
safe-transmute = "0.11"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_repr = "0.1"
sha2 = "0.10"
shell-words = "1.1"
shellexpand = "3.1"
smol = "2"
static_assertions = "1.1"
statrs = { version = "0.18", default-features = false }
sysinfo = "0.38"
tempfile = "3.25"
thiserror = "2.0"
tokio = { version = "1.49" }
tokio-retry = "0.3"
tokio-util = { version = "0.7" }
tracing = "0.1"
tracing-appender = "0.2"
tracing-log = "0.2"
tracing-subscriber = { version = "0.3", features = ["json", "env-filter"] }
ulid = "1.2"
url = "2.5"
urlencoding = "2.1"
uuid = "1"
walkdir = "2"
web-time = "1.1"
whoami = "2"
# windows
winapi = { version = "0.3", features = [
"winerror",
"winnt",
"handleapi",
"processthreadsapi",
"securitybaseapi",
] }
# dev-deps
approx = "0.5"
httpmock = "0.8"
rand_core = "0.6"
rand_distr = "0.5"
russh = "0.55"
serial_test = "3"
tracing-test = { version = "0.2", features = ["no-env-filter"] }
wiremock = "0.6"