From c1e2cb22da42129404fa17765a170c02901948be Mon Sep 17 00:00:00 2001 From: Alberto Garcia Hierro Date: Tue, 24 Mar 2026 14:37:05 +0000 Subject: [PATCH 1/2] chore: pin litellm versions --- a2a/pyproject.toml | 2 +- a2a/uv.lock | 2 +- adk-cerebras/pyproject.toml | 2 +- adk-cerebras/uv.lock | 2 +- adk-sock-shop/pyproject.toml | 2 +- adk-sock-shop/uv.lock | 2 +- adk/pyproject.toml | 2 +- adk/uv.lock | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/a2a/pyproject.toml b/a2a/pyproject.toml index 15558e0c..b1b46eab 100644 --- a/a2a/pyproject.toml +++ b/a2a/pyproject.toml @@ -9,7 +9,7 @@ dependencies = [ "click>=8.2.1", "google-adk>=1.4.2", "google-genai>=1.21.1", - "litellm>=1.73.0", + "litellm==1.73.0", "mcp>=1.9.4", "openai>=1.88.0", "pydantic>=2.11.7", diff --git a/a2a/uv.lock b/a2a/uv.lock index 82e26e06..8db7bcd5 100644 --- a/a2a/uv.lock +++ b/a2a/uv.lock @@ -34,7 +34,7 @@ requires-dist = [ { name = "click", specifier = ">=8.2.1" }, { name = "google-adk", specifier = ">=1.4.2" }, { name = "google-genai", specifier = ">=1.21.1" }, - { name = "litellm", specifier = ">=1.73.0" }, + { name = "litellm", specifier = "==1.73.0" }, { name = "mcp", specifier = ">=1.9.4" }, { name = "openai", specifier = ">=1.88.0" }, { name = "pydantic", specifier = ">=2.11.7" }, diff --git a/adk-cerebras/pyproject.toml b/adk-cerebras/pyproject.toml index 8c383ea7..e61c60b6 100644 --- a/adk-cerebras/pyproject.toml +++ b/adk-cerebras/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" requires-python = ">=3.13" dependencies = [ "google-adk>=1.5.0", - "litellm>=1.73.6", + "litellm==1.73.6", ] [dependency-groups] diff --git a/adk-cerebras/uv.lock b/adk-cerebras/uv.lock index 7688940c..66713919 100644 --- a/adk-cerebras/uv.lock +++ b/adk-cerebras/uv.lock @@ -20,7 +20,7 @@ dev = [ [package.metadata] requires-dist = [ { name = "google-adk", specifier = ">=1.5.0" }, - { name = "litellm", specifier = ">=1.73.6" }, + { name = "litellm", specifier = "==1.73.6" }, ] [package.metadata.requires-dev] diff --git a/adk-sock-shop/pyproject.toml b/adk-sock-shop/pyproject.toml index 3842ecba..73da63c0 100644 --- a/adk-sock-shop/pyproject.toml +++ b/adk-sock-shop/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" requires-python = ">=3.13" dependencies = [ "google-adk>=1.5.0", - "litellm>=1.73.2", + "litellm==1.73.2", "streamlit>=1.31.0", "requests>=2.31.0", "fastapi>=0.100.0", diff --git a/adk-sock-shop/uv.lock b/adk-sock-shop/uv.lock index 5e65efe4..f2d7b9e2 100644 --- a/adk-sock-shop/uv.lock +++ b/adk-sock-shop/uv.lock @@ -25,7 +25,7 @@ dev = [ requires-dist = [ { name = "fastapi", specifier = ">=0.100.0" }, { name = "google-adk", specifier = ">=1.5.0" }, - { name = "litellm", specifier = ">=1.73.2" }, + { name = "litellm", specifier = "==1.73.2" }, { name = "requests", specifier = ">=2.31.0" }, { name = "sseclient-py", specifier = ">=1.8.0" }, { name = "streamlit", specifier = ">=1.31.0" }, diff --git a/adk/pyproject.toml b/adk/pyproject.toml index d3c5e879..21c6a21f 100644 --- a/adk/pyproject.toml +++ b/adk/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" requires-python = ">=3.13" dependencies = [ "google-adk>=1.5.0", - "litellm>=1.73.2", + "litellm==1.73.2", ] [dependency-groups] diff --git a/adk/uv.lock b/adk/uv.lock index 9d15ec32..27e9973b 100644 --- a/adk/uv.lock +++ b/adk/uv.lock @@ -20,7 +20,7 @@ dev = [ [package.metadata] requires-dist = [ { name = "google-adk", specifier = ">=1.5.0" }, - { name = "litellm", specifier = ">=1.73.2" }, + { name = "litellm", specifier = "==1.73.2" }, ] [package.metadata.requires-dev] From 87a8da59e1f07a707af7ae558961973040eb905f Mon Sep 17 00:00:00 2001 From: Alberto Garcia Hierro Date: Tue, 24 Mar 2026 14:46:27 +0000 Subject: [PATCH 2/2] fix: stabilize CI for pinned litellm Pin the CI workflow Python version to 3.13 and install Docker dependencies from uv.lock so the exact litellm pins stay reproducible. --- .github/workflows/a2a.yaml | 7 +++++++ .github/workflows/adk-cerebras.yaml | 7 +++++++ .github/workflows/adk.yaml | 7 +++++++ a2a/Dockerfile | 5 +++-- adk-sock-shop/Dockerfile | 7 +++++-- adk/Dockerfile | 7 ++++--- 6 files changed, 33 insertions(+), 7 deletions(-) diff --git a/.github/workflows/a2a.yaml b/.github/workflows/a2a.yaml index 19513041..2dbf2e45 100644 --- a/.github/workflows/a2a.yaml +++ b/.github/workflows/a2a.yaml @@ -19,6 +19,8 @@ jobs: check: name: Format & Type Check runs-on: ubuntu-latest + env: + UV_PYTHON: "3.13" defaults: run: @@ -28,6 +30,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.13" + - name: Install uv run: | curl -LsSf https://astral.sh/uv/install.sh | sh diff --git a/.github/workflows/adk-cerebras.yaml b/.github/workflows/adk-cerebras.yaml index d1598493..f866088b 100644 --- a/.github/workflows/adk-cerebras.yaml +++ b/.github/workflows/adk-cerebras.yaml @@ -19,6 +19,8 @@ jobs: check: name: Format & Type Check runs-on: ubuntu-latest + env: + UV_PYTHON: "3.13" defaults: run: @@ -28,6 +30,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.13" + - name: Install uv run: | curl -LsSf https://astral.sh/uv/install.sh | sh diff --git a/.github/workflows/adk.yaml b/.github/workflows/adk.yaml index eaa2fb8b..3ead17f5 100644 --- a/.github/workflows/adk.yaml +++ b/.github/workflows/adk.yaml @@ -19,6 +19,8 @@ jobs: check: name: Format & Type Check runs-on: ubuntu-latest + env: + UV_PYTHON: "3.13" defaults: run: @@ -28,6 +30,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.13" + - name: Install uv run: | curl -LsSf https://astral.sh/uv/install.sh | sh diff --git a/a2a/Dockerfile b/a2a/Dockerfile index 6f6cef93..f25ba6c6 100644 --- a/a2a/Dockerfile +++ b/a2a/Dockerfile @@ -2,14 +2,15 @@ FROM python:3.13-slim AS base ENV PYTHONUNBUFFERED=1 +ENV UV_PROJECT_ENVIRONMENT=/app/.venv +ENV PATH="/app/.venv/bin:$PATH" RUN pip install uv WORKDIR /app COPY pyproject.toml uv.lock ./ RUN --mount=type=cache,target=/root/.cache/uv \ UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy \ - uv pip install --system . && \ - rm -fr build dist *.egg-info + uv sync --locked --no-dev --no-install-project COPY main.py src ./ RUN python -m compileall -q . diff --git a/adk-sock-shop/Dockerfile b/adk-sock-shop/Dockerfile index 74e9125e..f3f88a9e 100644 --- a/adk-sock-shop/Dockerfile +++ b/adk-sock-shop/Dockerfile @@ -1,6 +1,8 @@ -# Use Python 3.11 slim image as base +# Use Python 3.13 slim image as base FROM python:3.13-slim ENV PYTHONUNBUFFERED=1 +ENV UV_PROJECT_ENVIRONMENT=/app/.venv +ENV PATH="/app/.venv/bin:$PATH" RUN pip install uv @@ -8,7 +10,8 @@ WORKDIR /app # Install system dependencies COPY pyproject.toml uv.lock ./ RUN --mount=type=cache,target=/root/.cache/uv \ - UV_COMPILE_BYTECODE=1 uv pip install --system . + UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy \ + uv sync --locked --no-dev --no-install-project # Copy application code COPY agents/ ./agents/ RUN python -m compileall -q . diff --git a/adk/Dockerfile b/adk/Dockerfile index 4d24e2fd..a83fdb54 100644 --- a/adk/Dockerfile +++ b/adk/Dockerfile @@ -1,6 +1,8 @@ -# Use Python 3.11 slim image as base +# Use Python 3.13 slim image as base FROM python:3.13-slim ENV PYTHONUNBUFFERED=1 +ENV UV_PROJECT_ENVIRONMENT=/app/.venv +ENV PATH="/app/.venv/bin:$PATH" RUN pip install uv @@ -9,8 +11,7 @@ WORKDIR /app COPY pyproject.toml uv.lock ./ RUN --mount=type=cache,target=/root/.cache/uv \ UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy \ - uv pip install --system . && \ - rm -fr build dist *.egg-info + uv sync --locked --no-dev --no-install-project # Copy application code COPY agents/ ./agents/ RUN python -m compileall -q .