mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-24 00:52:24 +00:00
* feat(logger): add shared Rust diagnostics and Python logging bridge * feat(logger): dispatch diagnostic processing through Rust * chore: regenerate Cargo.lock after rebase Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test: allowlist bounded logging tree walkers in recursive detector Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * perf(logger): skip decoding plain access arguments * test(logger): skip embedded-python logger test when litellm deps are absent Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * style: cargo fmt Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * test: expect NativeDiagnosticProcessor in the native public surface Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix(stub): export NativeDiagnosticProcessor via __new__ in _native.pyi Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * refactor(tracing): rename logger crate and document host sink contract * test(logger): cover exc, stack, and nested extras in the diagnostic filter Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix(logger): keep rendered redacted line when template scan flags a key pattern The blanket REDACTED for a changed msg/color template discarded lines whose rendered form was already redacted by the same pipeline, e.g. 'password=%s' became 'REDACTED' instead of 'password=REDACTED'. Only fall back to REDACTED when the rendered form did not change either, which is where interpolation can mangle the key pattern the scrub would otherwise see. Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * ci(rust): install python deps so the logger bridge test runs The end-to-end bridge test skipped silently when litellm's Python deps were absent. uv sync --no-install-project installs them without a maturin build, and PYTHONPATH makes them visible to the embedded interpreter Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --------- Co-authored-by: Yujong Lee <yujong@berri.ai> Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
100 lines
4.1 KiB
TOML
100 lines
4.1 KiB
TOML
[workspace]
|
|
members = ["crates/*"]
|
|
resolver = "2"
|
|
|
|
[workspace.package]
|
|
edition = "2024"
|
|
rust-version = "1.88"
|
|
license = "MIT"
|
|
repository = "https://github.com/BerriAI/litellm"
|
|
|
|
[workspace.dependencies]
|
|
litellm-tracing = { path = "crates/tracing" }
|
|
tracing = "0.1"
|
|
litellm-core = { path = "crates/core" }
|
|
litellm-host = { path = "crates/host" }
|
|
litellm-callbacks-legacy-python = { path = "crates/callbacks-legacy-python" }
|
|
litellm-framing = { path = "crates/framer" }
|
|
litellm-auth = { path = "crates/auth" }
|
|
litellm-auth-types = { path = "crates/auth-types" }
|
|
litellm-auth-aws = { path = "crates/auth-aws" }
|
|
litellm-auth-azure = { path = "crates/auth-azure" }
|
|
litellm-auth-gcp = { path = "crates/auth-gcp" }
|
|
litellm-secrets = { path = "crates/secrets" }
|
|
litellm-secrets-types = { path = "crates/secrets-types" }
|
|
litellm-secrets-aws = { path = "crates/secrets-aws" }
|
|
litellm-secrets-google = { path = "crates/secrets-google" }
|
|
litellm-secrets-hashicorp = { path = "crates/secrets-hashicorp" }
|
|
litellm-secrets-azure = { path = "crates/secrets-azure" }
|
|
litellm-secrets-cyberark = { path = "crates/secrets-cyberark" }
|
|
litellm-http = { path = "crates/http" }
|
|
litellm-llms = { path = "crates/llms" }
|
|
litellm-types = { path = "crates/types" }
|
|
litellm-core-utils = { path = "crates/core-utils" }
|
|
litellm-cache = { path = "crates/cache" }
|
|
litellm-cache-azure-blob = { path = "crates/cache-azure-blob" }
|
|
litellm-cache-memory = { path = "crates/cache-memory" }
|
|
litellm-cache-redis = { path = "crates/cache-redis" }
|
|
litellm-cache-s3 = { path = "crates/cache-s3" }
|
|
litellm-cache-gcs = { path = "crates/cache-gcs" }
|
|
litellm-cache-disk = { path = "crates/cache-disk" }
|
|
litellm-cache-redis-semantic = { path = "crates/cache-redis-semantic" }
|
|
litellm-cache-response = { path = "crates/cache-response" }
|
|
litellm-cache-qdrant-semantic = { path = "crates/cache-qdrant-semantic" }
|
|
litellm-cache-testing = { path = "crates/cache-testing" }
|
|
litellm-token-counter = { path = "crates/token-counter" }
|
|
litellm-token-counter-fast = { path = "crates/token-counter-fast" }
|
|
litellm-token-counter-huggingface = { path = "crates/token-counter-huggingface" }
|
|
litellm-token-counter-tiktoken = { path = "crates/token-counter-tiktoken" }
|
|
litellm-host-python = { path = "crates/host-python" }
|
|
|
|
bytes = "1"
|
|
http = "1"
|
|
google-cloud-auth = { version = "1.16.0", default-features = false }
|
|
jsonwebtoken = { version = "11.1.0", default-features = false }
|
|
hyper-util = { version = "0.1.20", default-features = false, features = ["client-proxy"] }
|
|
proptest = "1.7.0"
|
|
pyo3 = "0.29.2"
|
|
pyo3-async-runtimes = { version = "0.29.0", features = ["tokio-runtime"] }
|
|
pythonize = "0.29.0"
|
|
rand = "0.8"
|
|
reqwest = { version = "0.12", default-features = false, features = ["json", "multipart", "rustls-tls", "http2", "stream"] }
|
|
qdrant-client = { version = "1.19.0", default-features = false }
|
|
uuid = { version = "1", features = ["v4"] }
|
|
rstest = "0.26.1"
|
|
rstest_reuse = "0.7.0"
|
|
rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12"] }
|
|
rustify = "=0.7.0"
|
|
rustify_derive = "=0.5.5"
|
|
vaultrs = { version = "=0.8.0", default-features = false, features = ["rustls"] }
|
|
rustls-native-certs = "0.8"
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = { version = "1.0", features = ["float_roundtrip"] }
|
|
serde_with = { version = "=3.16.1", default-features = false, features = ["std", "macros"] }
|
|
sha2 = "0.10"
|
|
subtle = "2"
|
|
thiserror = "2.0"
|
|
tokenizers = { version = "0.23.1", default-features = false, features = ["onig"] }
|
|
tiktoken-rs = "0.12.0"
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "time", "net"] }
|
|
tokio-tungstenite = { version = "0.24", default-features = false, features = ["connect", "rustls-tls-native-roots"] }
|
|
futures-util = { version = "0.3", default-features = false, features = ["sink", "std"] }
|
|
base64 = "0.22"
|
|
moka = { version = "0.12.16", features = ["future"] }
|
|
strum = { version = "0.28.0", features = ["derive"] }
|
|
url = "2.5.8"
|
|
percent-encoding = "2.3"
|
|
webpki-roots = "1"
|
|
time = { version = "0.3.53", features = ["parsing"] }
|
|
criterion = "0.8.2"
|
|
fancy-regex = "0.19.2"
|
|
veil = "0.3.0"
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = "fat"
|
|
codegen-units = 1
|
|
panic = "unwind"
|
|
debug = false
|
|
incremental = false
|
|
strip = "symbols"
|