mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-11 03:38:38 +00:00
Merge dcada6b136 into 635085ac14
This commit is contained in:
commit
08c3b7b584
2 changed files with 48 additions and 2 deletions
|
|
@ -6301,7 +6301,7 @@ class StandardLoggingPayloadSetup:
|
|||
return None
|
||||
user_agent_tags: list[str] | None = None
|
||||
headers: Final = proxy_server_request.get("headers", {})
|
||||
if headers is not None and isinstance(headers, dict):
|
||||
if headers is not None and isinstance(headers, Mapping):
|
||||
if "user-agent" in headers:
|
||||
user_agent: Final = headers["user-agent"]
|
||||
if user_agent is not None:
|
||||
|
|
@ -6326,7 +6326,7 @@ class StandardLoggingPayloadSetup:
|
|||
return None
|
||||
|
||||
headers: Final = proxy_server_request.get("headers", {})
|
||||
if not isinstance(headers, dict):
|
||||
if not isinstance(headers, Mapping):
|
||||
return None
|
||||
|
||||
header_tags: Final = []
|
||||
|
|
|
|||
|
|
@ -2971,6 +2971,52 @@ def test_get_extra_header_tags():
|
|||
delattr(litellm, "extra_spend_tag_headers")
|
||||
|
||||
|
||||
|
||||
def test_header_derived_spend_tags_accept_starlette_headers_mapping():
|
||||
"""Pass-through stores Starlette Headers (a Mapping, not dict); tags must still extract.
|
||||
|
||||
Regression for https://github.com/BerriAI/litellm/issues/44032
|
||||
"""
|
||||
import litellm
|
||||
from starlette.datastructures import Headers
|
||||
|
||||
from litellm.litellm_core_utils.litellm_logging import StandardLoggingPayloadSetup
|
||||
|
||||
original_extra_headers = getattr(litellm, "extra_spend_tag_headers", None)
|
||||
original_disable_ua = getattr(litellm, "disable_add_user_agent_to_request_tags", False)
|
||||
try:
|
||||
litellm.disable_add_user_agent_to_request_tags = False
|
||||
litellm.extra_spend_tag_headers = ["x-custom-header"]
|
||||
proxy_server_request = {
|
||||
"headers": Headers(
|
||||
{
|
||||
"user-agent": "curl/8.0.0",
|
||||
"x-custom-header": "tenant-a",
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
ua_tags = StandardLoggingPayloadSetup._get_user_agent_tags(proxy_server_request)
|
||||
assert ua_tags is not None
|
||||
assert "User-Agent: curl" in ua_tags
|
||||
assert "User-Agent: curl/8.0.0" in ua_tags
|
||||
|
||||
extra_tags = StandardLoggingPayloadSetup._get_extra_header_tags(proxy_server_request)
|
||||
assert extra_tags is not None
|
||||
assert "x-custom-header: tenant-a" in extra_tags
|
||||
|
||||
request_tags = StandardLoggingPayloadSetup._get_request_tags(
|
||||
litellm_params={},
|
||||
proxy_server_request=proxy_server_request,
|
||||
)
|
||||
assert "User-Agent: curl" in request_tags
|
||||
assert "x-custom-header: tenant-a" in request_tags
|
||||
finally:
|
||||
litellm.extra_spend_tag_headers = original_extra_headers
|
||||
litellm.disable_add_user_agent_to_request_tags = original_disable_ua
|
||||
|
||||
|
||||
|
||||
def test_response_cost_calculator_with_response_cost_in_hidden_params(logging_obj):
|
||||
from litellm import Router
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue