From 868cd06ea93917031d13aed8c9662eaa78defba3 Mon Sep 17 00:00:00 2001 From: Yujong Lee Date: Mon, 19 Oct 2026 10:46:32 -0700 Subject: [PATCH] ci: drop the uv sync retry loop and call uv sync directly uv already retries network failures, so the wrapper only repeated deterministic uv sync failures five times. Cargo network settings it exported already live in .cargo/config.toml --- .circleci/scripts/classify_changes.sh | 2 +- .github/scripts/uv_sync_with_retries.sh | 31 ------------------- .github/workflows/codspeed.yml | 4 +-- .github/workflows/e2e_record_replay.yml | 4 +-- .github/workflows/mutation-test.yml | 2 +- .github/workflows/test-e2e-redis-chaos.yml | 2 +- .github/workflows/test-linting.yml | 2 +- .../test-mcp-dependency-resolution.yml | 3 +- .github/workflows/test-merge-smoke.yml | 8 ++--- .github/workflows/test-terraform-provider.yml | 2 +- .github/workflows/test-unit.yml | 12 +++---- .github/workflows/weekly_load_anomaly.yml | 2 +- 12 files changed, 20 insertions(+), 54 deletions(-) delete mode 100755 .github/scripts/uv_sync_with_retries.sh diff --git a/.circleci/scripts/classify_changes.sh b/.circleci/scripts/classify_changes.sh index d2ab3478397..54222a0a8b5 100755 --- a/.circleci/scripts/classify_changes.sh +++ b/.circleci/scripts/classify_changes.sh @@ -19,7 +19,7 @@ while IFS= read -r file || [ -n "$file" ]; do esac case "$file" in *.md | *.mdx) : ;; - pyproject.toml | */pyproject.toml | uv.lock | uv.toml | .python-version | rust-toolchain.toml | litellm-rust/* | litellm/__init__.py | litellm/proxy/proxy_server.py | litellm/*mcp* | tests/*mcp* | litellm/integrations/arize/* | tests/base_sdk_tests/* | scripts/check_mcp_sdk_install.py | .github/workflows/test-mcp-dependency-resolution.yml | .github/actions/detect-changes/* | .github/actions/setup-uv-with-retries/* | .github/actions/cache-cargo-build/* | .github/scripts/detect_changes.sh | .github/scripts/uv_sync_with_retries.sh | .circleci/scripts/classify_changes.sh | tests/unit/test_circleci_path_filter.py | tests/unit/test_detect_changes.py) + pyproject.toml | */pyproject.toml | uv.lock | uv.toml | .python-version | rust-toolchain.toml | litellm-rust/* | litellm/__init__.py | litellm/proxy/proxy_server.py | litellm/*mcp* | tests/*mcp* | litellm/integrations/arize/* | tests/base_sdk_tests/* | scripts/check_mcp_sdk_install.py | .github/workflows/test-mcp-dependency-resolution.yml | .github/actions/detect-changes/* | .github/actions/setup-uv-with-retries/* | .github/actions/cache-cargo-build/* | .github/scripts/detect_changes.sh | .circleci/scripts/classify_changes.sh | tests/unit/test_circleci_path_filter.py | tests/unit/test_detect_changes.py) has_mcp_dependencies=true ;; esac case "$file" in diff --git a/.github/scripts/uv_sync_with_retries.sh b/.github/scripts/uv_sync_with_retries.sh deleted file mode 100755 index 85ed75af566..00000000000 --- a/.github/scripts/uv_sync_with_retries.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -max_attempts="${UV_SYNC_MAX_ATTEMPTS:-5}" -delay_seconds="${UV_SYNC_RETRY_DELAY_SECONDS:-15}" - -export CARGO_HTTP_MULTIPLEXING="${CARGO_HTTP_MULTIPLEXING:-false}" -export CARGO_NET_RETRY="${CARGO_NET_RETRY:-5}" - -if [[ "$#" -eq 0 ]]; then - echo "usage: $0 " >&2 - exit 2 -fi - -for attempt in $(seq 1 "${max_attempts}"); do - echo "uv sync attempt ${attempt}/${max_attempts}" - status=0 - if uv sync "$@"; then - exit 0 - else - status=$? - fi - - if [[ "${attempt}" -eq "${max_attempts}" ]]; then - echo "uv sync failed after ${max_attempts} attempts" >&2 - exit "${status}" - fi - - echo "uv sync failed; retrying in ${delay_seconds}s..." - sleep "${delay_seconds}" -done diff --git a/.github/workflows/codspeed.yml b/.github/workflows/codspeed.yml index dfad57dc5ab..2b3f3931dc5 100644 --- a/.github/workflows/codspeed.yml +++ b/.github/workflows/codspeed.yml @@ -12,7 +12,6 @@ on: - ".github/workflows/codspeed.yml" - ".github/actions/setup-uv-with-retries/**" - ".github/actions/cache-cargo-build/**" - - ".github/scripts/uv_sync_with_retries.sh" pull_request: branches: - main @@ -24,7 +23,6 @@ on: - ".github/workflows/codspeed.yml" - ".github/actions/setup-uv-with-retries/**" - ".github/actions/cache-cargo-build/**" - - ".github/scripts/uv_sync_with_retries.sh" # Allow CodSpeed to trigger backtest performance analysis # in order to generate initial data workflow_dispatch: @@ -70,7 +68,7 @@ jobs: - name: Install the wheel into the benchmark environment run: | - UV_PROJECT_ENVIRONMENT="${RUNNER_TEMP}/benchmark-venv" .github/scripts/uv_sync_with_retries.sh --frozen --no-default-groups --group benchmarks --no-install-project --python 3.12 + UV_PROJECT_ENVIRONMENT="${RUNNER_TEMP}/benchmark-venv" uv sync --frozen --no-default-groups --group benchmarks --no-install-project --python 3.12 uv pip install --python "${RUNNER_TEMP}/benchmark-venv/bin/python" --no-deps dist/*.whl - name: Collect benchmarks diff --git a/.github/workflows/e2e_record_replay.yml b/.github/workflows/e2e_record_replay.yml index ca52f0b4d81..4ae0f68e3f3 100644 --- a/.github/workflows/e2e_record_replay.yml +++ b/.github/workflows/e2e_record_replay.yml @@ -66,7 +66,7 @@ jobs: - name: Install dependencies run: | - .github/scripts/uv_sync_with_retries.sh --frozen --group ci --group proxy-dev --extra proxy + uv sync --frozen --group ci --group proxy-dev --extra proxy - name: Cache Prisma binaries uses: ./.github/actions/cache-prisma-binaries @@ -164,7 +164,7 @@ jobs: - name: Install dependencies run: | - .github/scripts/uv_sync_with_retries.sh --frozen --group ci --group proxy-dev --extra proxy + uv sync --frozen --group ci --group proxy-dev --extra proxy - name: Cache Prisma binaries uses: ./.github/actions/cache-prisma-binaries diff --git a/.github/workflows/mutation-test.yml b/.github/workflows/mutation-test.yml index be271538bdf..41dd008f5c4 100644 --- a/.github/workflows/mutation-test.yml +++ b/.github/workflows/mutation-test.yml @@ -70,7 +70,7 @@ jobs: - name: Install dependencies run: | - .github/scripts/uv_sync_with_retries.sh --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router --extra saml + uv sync --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router --extra saml - name: Cache Prisma binaries uses: ./.github/actions/cache-prisma-binaries diff --git a/.github/workflows/test-e2e-redis-chaos.yml b/.github/workflows/test-e2e-redis-chaos.yml index 8f351a7a647..b954138c2ee 100644 --- a/.github/workflows/test-e2e-redis-chaos.yml +++ b/.github/workflows/test-e2e-redis-chaos.yml @@ -65,7 +65,7 @@ jobs: - name: Install dependencies run: | - .github/scripts/uv_sync_with_retries.sh --frozen --group ci --group proxy-dev --group e2e-dev --extra proxy + uv sync --frozen --group ci --group proxy-dev --group e2e-dev --extra proxy - name: Cache Prisma binaries uses: ./.github/actions/cache-prisma-binaries diff --git a/.github/workflows/test-linting.yml b/.github/workflows/test-linting.yml index 3b9a2614725..210feb6aae8 100644 --- a/.github/workflows/test-linting.yml +++ b/.github/workflows/test-linting.yml @@ -412,7 +412,7 @@ jobs: - name: Install backend dependencies if: steps.changes.outputs.relevant == 'true' - run: .github/scripts/uv_sync_with_retries.sh --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router + run: uv sync --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router - name: Cache Prisma binaries if: steps.changes.outputs.relevant == 'true' diff --git a/.github/workflows/test-mcp-dependency-resolution.yml b/.github/workflows/test-mcp-dependency-resolution.yml index 3f0d1260e49..107d6dda081 100644 --- a/.github/workflows/test-mcp-dependency-resolution.yml +++ b/.github/workflows/test-mcp-dependency-resolution.yml @@ -27,7 +27,6 @@ on: - ".github/actions/setup-uv-with-retries/**" - ".github/actions/cache-cargo-build/**" - ".github/scripts/detect_changes.sh" - - ".github/scripts/uv_sync_with_retries.sh" - ".circleci/scripts/classify_changes.sh" permissions: @@ -85,7 +84,7 @@ jobs: for extra in core mcp proxy; do args=() if [ "$extra" != core ]; then args=(--extra "$extra"); fi - UV_PROJECT_ENVIRONMENT=".venv-$extra" .github/scripts/uv_sync_with_retries.sh --frozen --no-dev --no-editable --python ${{ matrix.python-version }} "${args[@]}" + UV_PROJECT_ENVIRONMENT=".venv-$extra" uv sync --frozen --no-dev --no-editable --python ${{ matrix.python-version }} "${args[@]}" uv pip check --python ".venv-$extra" if [ "$extra" = core ]; then checker=("$GITHUB_WORKSPACE/tests/base_sdk_tests/check_base_sdk_install.py") diff --git a/.github/workflows/test-merge-smoke.yml b/.github/workflows/test-merge-smoke.yml index 0d1cc6596de..88f26794f73 100644 --- a/.github/workflows/test-merge-smoke.yml +++ b/.github/workflows/test-merge-smoke.yml @@ -53,7 +53,7 @@ jobs: version: "0.10.9" - name: Install dependencies - run: .github/scripts/uv_sync_with_retries.sh --frozen --extra proxy --extra cli --group dev --group proxy-dev --python ${{ matrix.python-version }} + run: uv sync --frozen --extra proxy --extra cli --group dev --group proxy-dev --python ${{ matrix.python-version }} - name: Create the loopback-only network namespace run: | @@ -118,7 +118,7 @@ jobs: version: "0.10.9" - name: Install every extra and dependency group - run: .github/scripts/uv_sync_with_retries.sh --frozen --all-groups --all-extras --python ${{ matrix.python-version }} + run: uv sync --frozen --all-groups --all-extras --python ${{ matrix.python-version }} - name: Import the SDK, the proxy server and the enterprise package run: .venv/bin/python -c "import litellm, litellm.proxy.proxy_server, litellm_enterprise" @@ -149,7 +149,7 @@ jobs: version: "0.10.9" - name: Install dependencies - run: .github/scripts/uv_sync_with_retries.sh --frozen --no-install-workspace --group dev --python 3.11 + run: uv sync --frozen --no-install-workspace --group dev --python 3.11 - name: Run the Windows tests run: uv run --no-sync python -m pytest --tb=short -v tests/windows_tests @@ -189,7 +189,7 @@ jobs: version: "0.10.9" - name: Install the test client dependencies - run: .github/scripts/uv_sync_with_retries.sh --frozen --no-install-workspace --extra proxy --group dev --python 3.12 + run: uv sync --frozen --no-install-workspace --extra proxy --group dev --python 3.12 - name: Build the image from the published package run: docker build -t litellm-build-from-pip:smoke -f docker/build_from_pip/Dockerfile.build_from_pip . diff --git a/.github/workflows/test-terraform-provider.yml b/.github/workflows/test-terraform-provider.yml index ff9db13bd25..78575d7cc7e 100644 --- a/.github/workflows/test-terraform-provider.yml +++ b/.github/workflows/test-terraform-provider.yml @@ -103,7 +103,7 @@ jobs: - name: Install dependencies run: | - .github/scripts/uv_sync_with_retries.sh --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router + uv sync --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router - name: Cache Prisma binaries uses: ./.github/actions/cache-prisma-binaries diff --git a/.github/workflows/test-unit.yml b/.github/workflows/test-unit.yml index cb1b595f3f0..cf476d36512 100644 --- a/.github/workflows/test-unit.yml +++ b/.github/workflows/test-unit.yml @@ -982,9 +982,9 @@ jobs: run: | diff -u model_prices_and_context_window.json litellm/model_prices_and_context_window_backup.json if [ -z "$RUST_BRIDGE_ARTIFACT" ]; then - .github/scripts/uv_sync_with_retries.sh --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router --extra saml --extra caching --extra extra_proxy --extra proxy-runtime --extra utils + uv sync --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router --extra saml --extra caching --extra extra_proxy --extra proxy-runtime --extra utils else - .github/scripts/uv_sync_with_retries.sh --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router --extra saml --extra caching --extra extra_proxy --extra proxy-runtime --extra utils --no-install-project + uv sync --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router --extra saml --extra caching --extra extra_proxy --extra proxy-runtime --extra utils --no-install-project uv pip install --no-deps --python .venv/bin/python rust-bridge-dist/*.whl cp rust-bridge-dist/litellm/rust_bridge/_native.abi3.so litellm/rust_bridge/_native.abi3.so uv run --no-sync python -c "import importlib.metadata; import litellm.rust_bridge._native; print(importlib.metadata.version('litellm'))" @@ -1227,7 +1227,7 @@ jobs: - name: Install dependencies if: steps.changes.outputs.decision != 'skip' run: | - .github/scripts/uv_sync_with_retries.sh --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router + uv sync --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router - name: Cache Prisma binaries if: steps.changes.outputs.decision != 'skip' @@ -1328,7 +1328,7 @@ jobs: - name: Install dependencies if: steps.changes.outputs.decision != 'skip' run: | - .github/scripts/uv_sync_with_retries.sh --frozen --group dev --group proxy-dev --extra proxy --no-install-workspace + uv sync --frozen --group dev --group proxy-dev --extra proxy --no-install-workspace uv pip install "openai==${OPENAI_VERSION:?}" --exclude-newer-package openai=2026-10-07T00:00:00Z uv run --no-sync python -c 'import os, openai; assert openai.__version__ == os.environ["OPENAI_VERSION"], openai.__version__' @@ -1420,9 +1420,9 @@ jobs: RUST_BRIDGE_ARTIFACT: ${{ needs.rust-bridge.outputs.artifact }} run: | if [ -z "$RUST_BRIDGE_ARTIFACT" ]; then - .github/scripts/uv_sync_with_retries.sh --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router --extra saml --extra caching --extra extra_proxy --extra proxy-runtime --extra utils + uv sync --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router --extra saml --extra caching --extra extra_proxy --extra proxy-runtime --extra utils else - .github/scripts/uv_sync_with_retries.sh --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router --extra saml --extra caching --extra extra_proxy --extra proxy-runtime --extra utils --no-install-project + uv sync --frozen --group ci --group proxy-dev --extra google --extra proxy --extra semantic-router --extra saml --extra caching --extra extra_proxy --extra proxy-runtime --extra utils --no-install-project uv pip install --no-deps --python .venv/bin/python rust-bridge-dist/*.whl cp rust-bridge-dist/litellm/rust_bridge/_native.abi3.so litellm/rust_bridge/_native.abi3.so fi diff --git a/.github/workflows/weekly_load_anomaly.yml b/.github/workflows/weekly_load_anomaly.yml index 0ba4df89cc4..4d7b1852e13 100644 --- a/.github/workflows/weekly_load_anomaly.yml +++ b/.github/workflows/weekly_load_anomaly.yml @@ -52,7 +52,7 @@ jobs: - name: Install dependencies run: | - .github/scripts/uv_sync_with_retries.sh --frozen --group ci --group proxy-dev --extra proxy + uv sync --frozen --group ci --group proxy-dev --extra proxy - name: Cache Prisma binaries uses: ./.github/actions/cache-prisma-binaries