From 93f2e9f5bd99fa65cba1324b49d52429a2fcc7eb Mon Sep 17 00:00:00 2001 From: Harshit28j Date: Thu, 5 Mar 2026 11:01:50 +0530 Subject: [PATCH] fix(ci): fix failing CI tests and version mismatches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR addresses multiple CI pipeline failures identified in the main branch: **Test Fixes:** - Fixed test_unit_test_custom_stream_wrapper_repeating_chunk (9 tests): Changed ModelResponse to ModelResponseStream and added MidStreamFallbackError exception handling - Fixed test_add_update_server_fallback_to_server_id (3 MCP tests): Added missing mock object fields - Fixed test_aaamodel_prices_and_context_window_json_is_valid: Updated JSON schema validation to include new supported endpoints ("realtime", "/vertex_ai/live") **Dependency Updates:** - Bumped litellm-proxy-extras from 0.4.50 to 0.4.51 (3 files) to reflect schema migrations - Updated docker/build_from_pip/requirements.txt: litellm[proxy] 1.67.4.dev1 → 1.82.1, openai 1.99.9 → >=2.8.0 (fixes schema compatibility) These are minimal, focused fixes following the CI/CD fixer playbook patterns for dependency resolution and code logic fixes. Co-Authored-By: Claude Haiku 4.5 --- docker/build_from_pip/requirements.txt | 4 ++-- litellm-proxy-extras/pyproject.toml | 4 ++-- pyproject.toml | 2 +- requirements.txt | 2 +- tests/local_testing/test_streaming.py | 9 ++++++--- tests/mcp_tests/test_mcp_server.py | 15 +++++++++++++++ tests/test_litellm/test_utils.py | 2 ++ 7 files changed, 29 insertions(+), 9 deletions(-) diff --git a/docker/build_from_pip/requirements.txt b/docker/build_from_pip/requirements.txt index cc14b99727f..809cc234eb5 100644 --- a/docker/build_from_pip/requirements.txt +++ b/docker/build_from_pip/requirements.txt @@ -1,6 +1,6 @@ -litellm[proxy]==1.67.4.dev1 # Specify the litellm version you want to use +litellm[proxy]==1.82.1 # Specify the litellm version you want to use prometheus_client langfuse prisma -openai==1.99.9 +openai>=2.8.0 ddtrace==2.19.0 # for advanced DD tracing / profiling diff --git a/litellm-proxy-extras/pyproject.toml b/litellm-proxy-extras/pyproject.toml index 45c88564417..634d5ba6d41 100644 --- a/litellm-proxy-extras/pyproject.toml +++ b/litellm-proxy-extras/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "litellm-proxy-extras" -version = "0.4.50" +version = "0.4.51" description = "Additional files for the LiteLLM Proxy. Reduces the size of the main litellm package." authors = ["BerriAI"] readme = "README.md" @@ -22,7 +22,7 @@ requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.commitizen] -version = "0.4.50" +version = "0.4.51" version_files = [ "pyproject.toml:version", "../requirements.txt:litellm-proxy-extras==", diff --git a/pyproject.toml b/pyproject.toml index a432c1ac832..96f800d9e15 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -61,7 +61,7 @@ boto3 = { version = "1.40.76", optional = true } redisvl = {version = "^0.4.1", optional = true, markers = "python_version >= '3.9' and python_version < '3.14'"} mcp = {version = ">=1.25.0,<2.0.0", optional = true, python = ">=3.10"} a2a-sdk = {version = "^0.3.22", optional = true, python = ">=3.10"} -litellm-proxy-extras = {version = "0.4.50", optional = true} +litellm-proxy-extras = {version = "0.4.51", optional = true} rich = {version = "13.7.1", optional = true} litellm-enterprise = {version = "0.1.33", optional = true} diskcache = {version = "^5.6.1", optional = true} diff --git a/requirements.txt b/requirements.txt index aef0e1d271e..c44c97ac6c8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -57,7 +57,7 @@ grpcio>=1.75.0; python_version >= "3.14" sentry_sdk==2.21.0 # for sentry error handling detect-secrets==1.5.0 # Enterprise - secret detection / masking in LLM requests tzdata==2025.1 # IANA time zone database -litellm-proxy-extras==0.4.50 # for proxy extras - e.g. prisma migrations +litellm-proxy-extras==0.4.51 # for proxy extras - e.g. prisma migrations llm-sandbox==0.3.31 # for skill execution in sandbox ### LITELLM PACKAGE DEPENDENCIES python-dotenv==1.0.1 # for env diff --git a/tests/local_testing/test_streaming.py b/tests/local_testing/test_streaming.py index bbeaacccb00..0d44a647ca3 100644 --- a/tests/local_testing/test_streaming.py +++ b/tests/local_testing/test_streaming.py @@ -3075,7 +3075,7 @@ def test_unit_test_custom_stream_wrapper_repeating_chunk( """ litellm.set_verbose = False chunks = [ - litellm.ModelResponse( + litellm.ModelResponseStream( **{ "id": "chatcmpl-123", "object": "chat.completion.chunk", @@ -3090,7 +3090,6 @@ def test_unit_test_custom_stream_wrapper_repeating_chunk( } ], }, - stream=True, ) ] * loop_amount completion_stream = ModelResponseListIterator(model_responses=chunks) @@ -3113,7 +3112,11 @@ def test_unit_test_custom_stream_wrapper_repeating_chunk( print(f"expected_chunk_fail: {expected_chunk_fail}") if (loop_amount > litellm.REPEATED_STREAMING_CHUNK_LIMIT) and expected_chunk_fail: - with pytest.raises(litellm.InternalServerError): + from litellm.exceptions import MidStreamFallbackError + + with pytest.raises( + (litellm.InternalServerError, MidStreamFallbackError) + ): for chunk in response: continue else: diff --git a/tests/mcp_tests/test_mcp_server.py b/tests/mcp_tests/test_mcp_server.py index d3ec7863504..55ca2452e7b 100644 --- a/tests/mcp_tests/test_mcp_server.py +++ b/tests/mcp_tests/test_mcp_server.py @@ -1453,6 +1453,11 @@ async def test_add_update_server_with_alias(): mock_mcp_server.authorization_url = None mock_mcp_server.registration_url = None mock_mcp_server.token_url = None + # Additional fields - set explicitly to avoid MagicMock objects + mock_mcp_server.allow_all_keys = False + mock_mcp_server.available_on_public_internet = True + mock_mcp_server.created_at = None + mock_mcp_server.updated_at = None # Add server to manager await test_manager.add_server(mock_mcp_server) @@ -1494,6 +1499,11 @@ async def test_add_update_server_without_alias(): mock_mcp_server.authorization_url = None mock_mcp_server.registration_url = None mock_mcp_server.token_url = None + # Additional fields - set explicitly to avoid MagicMock objects + mock_mcp_server.allow_all_keys = False + mock_mcp_server.available_on_public_internet = True + mock_mcp_server.created_at = None + mock_mcp_server.updated_at = None # Add server to manager await test_manager.add_server(mock_mcp_server) @@ -1535,6 +1545,11 @@ async def test_add_update_server_fallback_to_server_id(): mock_mcp_server.authorization_url = None mock_mcp_server.registration_url = None mock_mcp_server.token_url = None + # Additional fields - set explicitly to avoid MagicMock objects + mock_mcp_server.allow_all_keys = False + mock_mcp_server.available_on_public_internet = True + mock_mcp_server.created_at = None + mock_mcp_server.updated_at = None # Add server to manager await test_manager.add_server(mock_mcp_server) diff --git a/tests/test_litellm/test_utils.py b/tests/test_litellm/test_utils.py index 92a7b8096e6..238167713c7 100644 --- a/tests/test_litellm/test_utils.py +++ b/tests/test_litellm/test_utils.py @@ -676,6 +676,7 @@ def test_aaamodel_prices_and_context_window_json_is_valid(): "image_generation", "video_generation", "moderation", + "realtime", "rerank", "responses", "ocr", @@ -753,6 +754,7 @@ def test_aaamodel_prices_and_context_window_json_is_valid(): "/v1/audio/transcriptions", "/v1/audio/speech", "/v1/ocr", + "/vertex_ai/live", ], }, },