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>
185 lines
6.1 KiB
YAML
185 lines
6.1 KiB
YAML
name: LiteLLM Rust
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- "litellm-rust/**"
|
|
- "litellm/rust_bridge/**"
|
|
- "tests/test_litellm_rust/**"
|
|
- "litellm/integrations/custom_logger.py"
|
|
- "litellm/litellm_core_utils/litellm_logging.py"
|
|
- "litellm/litellm_core_utils/logging_worker.py"
|
|
- "litellm/proxy/guardrails/**"
|
|
- "litellm/utils.py"
|
|
- "litellm/ocr/**"
|
|
- "litellm/llms/base_llm/ocr/**"
|
|
- "litellm/llms/custom_httpx/llm_http_handler.py"
|
|
- "tests/test_litellm/ocr/**"
|
|
- "tests/test_litellm/conftest.py"
|
|
- "Makefile"
|
|
- ".cargo/**"
|
|
- "pyproject.toml"
|
|
- "uv.lock"
|
|
- "rust-toolchain.toml"
|
|
- ".github/actions/setup-uv-with-retries/**"
|
|
- ".github/scripts/smoke_test_native_wheel.py"
|
|
- ".github/scripts/verify_linux_native_wheel.py"
|
|
- "tests/test_litellm/rust_bridge/native_route_wheel_test.py"
|
|
- ".github/workflows/test-rust.yml"
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
- litellm_internal_staging
|
|
- litellm_oss_staging
|
|
- "litellm_**"
|
|
paths:
|
|
- "litellm-rust/**"
|
|
- "litellm/rust_bridge/**"
|
|
- "tests/test_litellm_rust/**"
|
|
- "litellm/integrations/custom_logger.py"
|
|
- "litellm/litellm_core_utils/litellm_logging.py"
|
|
- "litellm/litellm_core_utils/logging_worker.py"
|
|
- "litellm/proxy/guardrails/**"
|
|
- "litellm/utils.py"
|
|
- "litellm/ocr/**"
|
|
- "litellm/llms/base_llm/ocr/**"
|
|
- "litellm/llms/custom_httpx/llm_http_handler.py"
|
|
- "tests/test_litellm/ocr/**"
|
|
- "tests/test_litellm/conftest.py"
|
|
- "Makefile"
|
|
- ".cargo/**"
|
|
- "pyproject.toml"
|
|
- "uv.lock"
|
|
- "rust-toolchain.toml"
|
|
- ".github/actions/setup-uv-with-retries/**"
|
|
- ".github/scripts/smoke_test_native_wheel.py"
|
|
- ".github/scripts/verify_linux_native_wheel.py"
|
|
- "tests/test_litellm/rust_bridge/native_route_wheel_test.py"
|
|
- ".github/workflows/test-rust.yml"
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
|
|
jobs:
|
|
rust-lint:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
defaults:
|
|
run:
|
|
working-directory: litellm-rust
|
|
steps:
|
|
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- run: rustup toolchain install --no-self-update
|
|
|
|
- run: cargo fmt --all --check
|
|
|
|
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
|
|
with:
|
|
workspaces: litellm-rust
|
|
cache-on-failure: true
|
|
|
|
- run: cargo clippy --workspace --all-targets --locked -- -D warnings
|
|
|
|
rust-test:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 20
|
|
defaults:
|
|
run:
|
|
working-directory: litellm-rust
|
|
steps:
|
|
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
with:
|
|
python-version: "3.12"
|
|
|
|
- uses: ./.github/actions/setup-uv-with-retries
|
|
with:
|
|
version: "0.10.9"
|
|
|
|
- name: Install Python dependencies for the bridge tests
|
|
working-directory: .
|
|
run: |
|
|
uv sync --frozen --no-install-project
|
|
echo "PYTHONPATH=$PWD/.venv/lib/$(ls .venv/lib)/site-packages" >> "$GITHUB_ENV"
|
|
|
|
- run: rustup toolchain install --no-self-update
|
|
|
|
- uses: taiki-e/install-action@d438492cf8a250514fa2d34b30bc3c0dc37c65ff # v2.87.8
|
|
with:
|
|
tool: cargo-nextest@0.9.143
|
|
|
|
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
|
|
with:
|
|
workspaces: litellm-rust
|
|
cache-on-failure: true
|
|
|
|
- run: cargo nextest run --workspace --locked
|
|
|
|
- run: cargo test --workspace --doc --locked
|
|
|
|
- name: Test token counter feature combinations
|
|
run: |
|
|
for features in '' fast huggingface tiktoken fast,huggingface fast,tiktoken huggingface,tiktoken fast,huggingface,tiktoken; do
|
|
cargo test -p litellm-token-counter --locked --no-default-features --features "$features"
|
|
cargo check -p litellm-python-bridge --locked --no-default-features --features "abi3${features:+,$features}"
|
|
done
|
|
|
|
- name: Test secret manager feature combinations
|
|
run: |
|
|
cargo test -p litellm-auth-gcp --locked --no-default-features
|
|
for features in '' aws google hashicorp azure cyberark aws,google aws,azure google,azure aws,google,azure aws,google,cyberark aws,google,azure,cyberark aws,google,hashicorp,azure,cyberark; do
|
|
cargo test -p litellm-secrets --locked --no-default-features --features "$features"
|
|
done
|
|
|
|
rust-wheel:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 30
|
|
steps:
|
|
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
with:
|
|
python-version: "3.12"
|
|
|
|
- uses: ./.github/actions/setup-uv-with-retries
|
|
with:
|
|
version: "0.10.9"
|
|
|
|
- run: rustup toolchain install --no-self-update
|
|
|
|
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
|
|
with:
|
|
workspaces: litellm-rust
|
|
cache-on-failure: true
|
|
|
|
- run: uv build --wheel --out-dir dist
|
|
|
|
- run: python .github/scripts/verify_linux_native_wheel.py dist/*.whl
|
|
env:
|
|
RELEASE_WHEEL_COMMIT_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- run: python tests/test_litellm/rust_bridge/native_route_wheel_test.py dist/*.whl
|
|
|
|
- name: Run pytest tests/test_litellm_rust with the compiled extension
|
|
run: make test-rust-extension
|
|
|
|
- run: >-
|
|
uv build --wheel --out-dir panic-dist
|
|
--config-setting "maturin.build-args=--features panic-test,extension-module"
|
|
|
|
- run: python .github/scripts/smoke_test_native_wheel.py panic-dist/*.whl
|