From a3ea6bc9edc23b09c2737960b16eae791cbf18ff Mon Sep 17 00:00:00 2001 From: jesus Date: Fri, 18 Sep 2026 23:23:16 +0000 Subject: [PATCH] test(proxy): drop drive-by reformat of upstream tests so their suppressions stay attached Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- tests/test_litellm/proxy/test_proxy_server.py | 140 ++++++------------ 1 file changed, 45 insertions(+), 95 deletions(-) diff --git a/tests/test_litellm/proxy/test_proxy_server.py b/tests/test_litellm/proxy/test_proxy_server.py index a03bcbbc95e..eb712064b43 100644 --- a/tests/test_litellm/proxy/test_proxy_server.py +++ b/tests/test_litellm/proxy/test_proxy_server.py @@ -7481,9 +7481,7 @@ async def test_update_general_settings_clearing_a_db_override_falls_back_to_the_ proxy_config.settings.load_yaml({"maximum_spend_logs_cleanup_run_budget": "90s"}) with patch("litellm.proxy.proxy_server.general_settings", proxy_config.settings): - await proxy_config._update_general_settings( - db_general_settings={"maximum_spend_logs_cleanup_run_budget": "30s"} - ) + await proxy_config._update_general_settings(db_general_settings={"maximum_spend_logs_cleanup_run_budget": "30s"}) await proxy_config._update_general_settings(db_general_settings={"store_model_in_db": True}) import litellm.proxy.proxy_server as ps @@ -7526,18 +7524,10 @@ async def test_update_general_settings_keeps_yaml_pass_through_endpoints_next_to request.query_params = {} return request - settings: Final = patch( - "litellm.proxy.proxy_server.general_settings", {"pass_through_endpoints": [yaml_endpoint]} - ) # test-quality-ok: the method reads this module global; no injection seam - yaml_endpoints: Final = patch( - "litellm.proxy.proxy_server.config_passthrough_endpoints", [yaml_endpoint] - ) # test-quality-ok: module global holding the YAML endpoints the fix merges in - initialize: Final = patch( - "litellm.proxy.proxy_server.initialize_pass_through_endpoints", AsyncMock() - ) # test-quality-ok: route registration needs the FastAPI app; auth is the observable here - master_key: Final = patch( - "litellm.proxy.proxy_server.master_key", "sk-master" - ) # test-quality-ok: a set master key is what makes a missing Authorization header a 401 + settings: Final = patch("litellm.proxy.proxy_server.general_settings", {"pass_through_endpoints": [yaml_endpoint]}) # test-quality-ok: the method reads this module global; no injection seam + yaml_endpoints: Final = patch("litellm.proxy.proxy_server.config_passthrough_endpoints", [yaml_endpoint]) # test-quality-ok: module global holding the YAML endpoints the fix merges in + initialize: Final = patch("litellm.proxy.proxy_server.initialize_pass_through_endpoints", AsyncMock()) # test-quality-ok: route registration needs the FastAPI app; auth is the observable here + master_key: Final = patch("litellm.proxy.proxy_server.master_key", "sk-master") # test-quality-ok: a set master key is what makes a missing Authorization header a 401 with settings, yaml_endpoints, initialize, master_key: await ProxyConfig()._update_general_settings(db_general_settings={"pass_through_endpoints": [db_endpoint]}) @@ -7584,18 +7574,10 @@ async def test_update_general_settings_db_pass_through_endpoint_cannot_override_ request.headers = {} request.query_params = {} - settings: Final = patch( - "litellm.proxy.proxy_server.general_settings", {"pass_through_endpoints": [yaml_endpoint]} - ) # test-quality-ok: the method reads this module global; no injection seam - yaml_endpoints: Final = patch( - "litellm.proxy.proxy_server.config_passthrough_endpoints", [yaml_endpoint] - ) # test-quality-ok: module global holding the YAML endpoints the fix merges in - initialize: Final = patch( - "litellm.proxy.proxy_server.initialize_pass_through_endpoints", AsyncMock() - ) # test-quality-ok: route registration needs the FastAPI app; auth is the observable here - master_key: Final = patch( - "litellm.proxy.proxy_server.master_key", "sk-master" - ) # test-quality-ok: a set master key is what makes a missing Authorization header a 401 + settings: Final = patch("litellm.proxy.proxy_server.general_settings", {"pass_through_endpoints": [yaml_endpoint]}) # test-quality-ok: the method reads this module global; no injection seam + yaml_endpoints: Final = patch("litellm.proxy.proxy_server.config_passthrough_endpoints", [yaml_endpoint]) # test-quality-ok: module global holding the YAML endpoints the fix merges in + initialize: Final = patch("litellm.proxy.proxy_server.initialize_pass_through_endpoints", AsyncMock()) # test-quality-ok: route registration needs the FastAPI app; auth is the observable here + master_key: Final = patch("litellm.proxy.proxy_server.master_key", "sk-master") # test-quality-ok: a set master key is what makes a missing Authorization header a 401 with settings, yaml_endpoints, initialize, master_key: await ProxyConfig()._update_general_settings(db_general_settings={"pass_through_endpoints": [db_endpoint]}) @@ -7621,9 +7603,7 @@ async def test_deleting_the_stored_pass_through_row_takes_the_route_out_of_servi prior_registry: Final = dict(_registered_pass_through_routes) def live_routes() -> set[str]: - return { - route for route in InitPassThroughEndpointHelpers.get_all_registered_pass_through_routes() if path in route - } + return {route for route in InitPassThroughEndpointHelpers.get_all_registered_pass_through_routes() if path in route} settings: Final = patch("litellm.proxy.proxy_server.general_settings", {}) # test-quality-ok: the method reads this module global; no injection seam yaml_endpoints: Final = patch("litellm.proxy.proxy_server.config_passthrough_endpoints", None) # test-quality-ok: module global holding the YAML endpoints; this case has none @@ -8798,7 +8778,9 @@ async def test_increment_spend_counters_finalizes_after_unreserved_increments(): async def assert_reservation_not_finalized_yet(**kwargs): assert budget_reservation["finalized"] is False incremented_counters.append(kwargs["counter_key"]) - return ps.PendingSpendIncrement(counter_key=kwargs["counter_key"], increment=kwargs["increment"]) + return ps.PendingSpendIncrement( + counter_key=kwargs["counter_key"], increment=kwargs["increment"] + ) import litellm.proxy.proxy_server as ps @@ -10387,15 +10369,9 @@ async def _lit6973_drive_realtime_session( side_effect=pre_call_error, return_value=({"model": "vertex_ai/gemini-live-2.5-flash"}, logging_obj) ) ws: Final = websocket if websocket is not None else _lit6973_fake_realtime_ws() - can_call = patch.object( - ps, "can_key_call_resolved_model", new=AsyncMock(side_effect=model_access_error) - ) # test-quality-ok: no HTTP boundary; fakes in-process auth to reach the exit under test - pre = patch.object( - ps.ProxyBaseLLMRequestProcessing, "common_processing_pre_call_logic", new=pre_call - ) # test-quality-ok: fakes phase-1 wiring; assertion checks observable reservation state - route = patch.object( - ps, "route_request", new=AsyncMock(return_value=fake_llm_call()) - ) # test-quality-ok: fakes the relay whose success/refusal outcome the endpoint reads off the logging object + can_call = patch.object(ps, "can_key_call_resolved_model", new=AsyncMock(side_effect=model_access_error)) # test-quality-ok: no HTTP boundary; fakes in-process auth to reach the exit under test + pre = patch.object(ps.ProxyBaseLLMRequestProcessing, "common_processing_pre_call_logic", new=pre_call) # test-quality-ok: fakes phase-1 wiring; assertion checks observable reservation state + route = patch.object(ps, "route_request", new=AsyncMock(return_value=fake_llm_call())) # test-quality-ok: fakes the relay whose success/refusal outcome the endpoint reads off the logging object with can_call, pre, route: await ps.realtime_websocket_endpoint( websocket=ws, @@ -10527,9 +10503,13 @@ async def _lit6463_drive_realtime_session_holding_a_max_parallel_slot( from litellm.proxy.utils import InternalUsageCache dual_cache: Final = DualCache() - await dual_cache.async_set_cache(key=_LIT6463_COUNTER_KEY, value={"slot-1": 1.0, "slot-2": 2.0}, local_only=True) + await dual_cache.async_set_cache( + key=_LIT6463_COUNTER_KEY, value={"slot-1": 1.0, "slot-2": 2.0}, local_only=True + ) limiter: Final = _PROXY_MaxParallelRequestsHandler_v3(internal_usage_cache=InternalUsageCache(dual_cache)) - stash: Final = RequestRateLimiterStash(parallel_slot={"slot_id": "slot-1", "counter_keys": [_LIT6463_COUNTER_KEY]}) + stash: Final = RequestRateLimiterStash( + parallel_slot={"slot_id": "slot-1", "counter_keys": [_LIT6463_COUNTER_KEY]} + ) reservation: Final = {"reserved_cost": 0.55, "input_cost": 0.0, "finalized": False, "entries": []} stash_token: Final = _request_stash.set(stash) @@ -10581,7 +10561,9 @@ async def test_successful_realtime_session_leaves_the_max_parallel_slot_for_the_ limiter's integer in-memory fallback, double-decrement the counter so the key admits more sessions than max_parallel_requests allows. With the success stamp present the route leaves the slot and the stash alone.""" - dual_cache, stash = await _lit6463_drive_realtime_session_holding_a_max_parallel_slot(backend_logged_success=True) + dual_cache, stash = await _lit6463_drive_realtime_session_holding_a_max_parallel_slot( + backend_logged_success=True + ) assert await dual_cache.async_get_cache(key=_LIT6463_COUNTER_KEY, local_only=True) == { "slot-1": 1.0, @@ -10627,12 +10609,8 @@ async def test_release_or_invalidate_falls_back_to_invalidating_the_counters(): async def _record(counter_key: str) -> None: invalidated.append(counter_key) - failing_release = patch.object( - br, "release_budget_reservation", new=AsyncMock(side_effect=RuntimeError("counter store down")) - ) # test-quality-ok: forces the failure branch; assertion observes which counter key got invalidated - sink = patch.object( - ps, "_invalidate_spend_counter", new=_record - ) # test-quality-ok: fakes the counter-store sink so the invalidated key is observable + failing_release = patch.object(br, "release_budget_reservation", new=AsyncMock(side_effect=RuntimeError("counter store down"))) # test-quality-ok: forces the failure branch; assertion observes which counter key got invalidated + sink = patch.object(ps, "_invalidate_spend_counter", new=_record) # test-quality-ok: fakes the counter-store sink so the invalidated key is observable with failing_release, sink: await br.release_or_invalidate_budget_reservation(budget_reservation=reservation) @@ -10648,12 +10626,8 @@ async def test_release_or_invalidate_finalizes_even_when_the_invalidate_fallback from litellm.proxy.spend_tracking import budget_reservation as br reservation: Final = {"reserved_cost": 0.55, "input_cost": 0.0, "finalized": False, "entries": []} - failing_release = patch.object( - br, "release_budget_reservation", new=AsyncMock(side_effect=RuntimeError("counter store down")) - ) # test-quality-ok: forces the fallback branch - failing_invalidate = patch.object( - br, "invalidate_budget_reservation_counters", new=AsyncMock(side_effect=RuntimeError("still down")) - ) # test-quality-ok: forces the fallback itself to fail + failing_release = patch.object(br, "release_budget_reservation", new=AsyncMock(side_effect=RuntimeError("counter store down"))) # test-quality-ok: forces the fallback branch + failing_invalidate = patch.object(br, "invalidate_budget_reservation_counters", new=AsyncMock(side_effect=RuntimeError("still down"))) # test-quality-ok: forces the fallback itself to fail with failing_release, failing_invalidate: await br.release_or_invalidate_budget_reservation(budget_reservation=reservation) @@ -11908,7 +11882,9 @@ async def test_update_config_general_settings_refuses_a_key_the_config_file_decl admin = UserAPIKeyAuth(api_key="hashed-admin", user_id="admin-1", user_role=LitellmUserRoles.PROXY_ADMIN) with pytest.raises(HTTPException) as excinfo: await update_config_general_settings( - data=ConfigFieldUpdate(field_name="max_parallel_requests", field_value=999, config_type="general_settings"), + data=ConfigFieldUpdate( + field_name="max_parallel_requests", field_value=999, config_type="general_settings" + ), user_api_key_dict=admin, ) @@ -13501,15 +13477,9 @@ async def test_moderations_response_carries_litellm_call_id_header(): user_api_key_dict = UserAPIKeyAuth(api_key="sk-test", spend=0.0) with ( - patch.object( - proxy_server_module, "add_litellm_data_to_request", new=passthrough_add_litellm_data - ), # test-quality-ok: the route reads this module global, no injection point - patch.object( - proxy_server_module, "route_request", new=AsyncMock(return_value=fake_llm_call()) - ), # test-quality-ok: fakes the provider call so the response headers assembled by the real route are observable - patch.object( - proxy_server_module, "proxy_logging_obj" - ) as mock_logging, # test-quality-ok: module global, no injection point + patch.object(proxy_server_module, "add_litellm_data_to_request", new=passthrough_add_litellm_data), # test-quality-ok: the route reads this module global, no injection point + patch.object(proxy_server_module, "route_request", new=AsyncMock(return_value=fake_llm_call())), # test-quality-ok: fakes the provider call so the response headers assembled by the real route are observable + patch.object(proxy_server_module, "proxy_logging_obj") as mock_logging, # test-quality-ok: module global, no injection point ): mock_logging.pre_call_hook = AsyncMock(side_effect=lambda user_api_key_dict, data, call_type: data) mock_logging.update_request_status = AsyncMock() @@ -13546,15 +13516,9 @@ async def test_moderations_failure_log_carries_the_callers_litellm_call_id(caplo verbose_proxy_logger.propagate = True try: with ( - patch.object( - proxy_server_module, "add_litellm_data_to_request", new=passthrough_add_litellm_data - ), # test-quality-ok: the route reads this module global, no injection point - patch.object( - proxy_server_module, "route_request", new=AsyncMock(side_effect=Exception("bad key")) - ), # test-quality-ok: fakes the provider failure so the real route's error log is observable - patch.object( - proxy_server_module, "proxy_logging_obj", new=fake_logging - ), # test-quality-ok: module global, no injection point + patch.object(proxy_server_module, "add_litellm_data_to_request", new=passthrough_add_litellm_data), # test-quality-ok: the route reads this module global, no injection point + patch.object(proxy_server_module, "route_request", new=AsyncMock(side_effect=Exception("bad key"))), # test-quality-ok: fakes the provider failure so the real route's error log is observable + patch.object(proxy_server_module, "proxy_logging_obj", new=fake_logging), # test-quality-ok: module global, no injection point caplog.at_level(logging.ERROR, logger="LiteLLM Proxy"), pytest.raises(ProxyException) as raised, ): @@ -13587,9 +13551,7 @@ async def test_moderations_unparseable_body_bills_the_callers_litellm_call_id(): fake_logging.post_call_failure_hook = AsyncMock() with ( - patch.object( - proxy_server_module, "proxy_logging_obj", new=fake_logging - ), # test-quality-ok: module global, no injection point + patch.object(proxy_server_module, "proxy_logging_obj", new=fake_logging), # test-quality-ok: module global, no injection point pytest.raises(ProxyException) as raised, ): await proxy_server_module.moderations( @@ -13617,12 +13579,8 @@ async def test_moderations_already_shaped_failure_answers_with_the_callers_litel fake_logging.post_call_failure_hook = AsyncMock() with ( - patch.object( - proxy_server_module, "add_litellm_data_to_request", new=AsyncMock(side_effect=exc) - ), # test-quality-ok: the route reads this module global, no injection point - patch.object( - proxy_server_module, "proxy_logging_obj", new=fake_logging - ), # test-quality-ok: module global, no injection point + patch.object(proxy_server_module, "add_litellm_data_to_request", new=AsyncMock(side_effect=exc)), # test-quality-ok: the route reads this module global, no injection point + patch.object(proxy_server_module, "proxy_logging_obj", new=fake_logging), # test-quality-ok: module global, no injection point pytest.raises(ProxyException) as raised, ): await proxy_server_module.moderations( @@ -13657,12 +13615,8 @@ async def test_audio_speech_already_shaped_failure_answers_with_the_callers_lite fake_logging.post_call_failure_hook = AsyncMock() with ( - patch.object( - proxy_server_module, "add_litellm_data_to_request", new=AsyncMock(side_effect=exc) - ), # test-quality-ok: the route reads this module global, no injection point - patch.object( - proxy_server_module, "proxy_logging_obj", new=fake_logging - ), # test-quality-ok: module global, no injection point + patch.object(proxy_server_module, "add_litellm_data_to_request", new=AsyncMock(side_effect=exc)), # test-quality-ok: the route reads this module global, no injection point + patch.object(proxy_server_module, "proxy_logging_obj", new=fake_logging), # test-quality-ok: module global, no injection point pytest.raises(type(exc)) as raised, ): await proxy_server_module.audio_speech( @@ -14420,18 +14374,14 @@ async def test_token_counter_loads_a_custom_tokenizer_off_the_event_loop(monkeyp { "model_name": "self-hosted", "litellm_params": {"model": "openai/self-hosted-model", "api_base": "http://localhost:8080/v1"}, - "model_info": { - "custom_tokenizer": {"identifier": "my-org/tokenizer", "revision": "main", "auth_token": None} - }, + "model_info": {"custom_tokenizer": {"identifier": "my-org/tokenizer", "revision": "main", "auth_token": None}}, } ] ), ) response, took, lags = await timed_with_loop_lags( - lambda: proxy_server_module.token_counter( - TokenCountRequest(model="self-hosted", prompt="count me off the loop") - ) + lambda: proxy_server_module.token_counter(TokenCountRequest(model="self-hosted", prompt="count me off the loop")) ) assert response.tokenizer_type == "huggingface_tokenizer"