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", ], }, },