From c5c1fbc5a25ab2fae255a8039501537f0bb7f4a3 Mon Sep 17 00:00:00 2001 From: Sameer Kankute Date: Wed, 28 Jan 2026 18:00:42 +0530 Subject: [PATCH] Fix test_calculate_usage_completion_tokens_details_always_populated and logging object test --- litellm/litellm_core_utils/litellm_logging.py | 14 +++++++++++++- .../chat/test_anthropic_chat_transformation.py | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/litellm/litellm_core_utils/litellm_logging.py b/litellm/litellm_core_utils/litellm_logging.py index 66b14946c32..0d9245a686a 100644 --- a/litellm/litellm_core_utils/litellm_logging.py +++ b/litellm/litellm_core_utils/litellm_logging.py @@ -1638,11 +1638,19 @@ class Logging(LiteLLMLoggingBaseClass): "standard_logging_object" ) ) is not None: - standard_logging_payload["response"] = ( + response_dict = ( result.model_dump() if hasattr(result, "model_dump") else dict(result) ) + # Ensure usage is properly included with transformed chat format + if transformed_usage is not None: + response_dict["usage"] = ( + transformed_usage.model_dump() + if hasattr(transformed_usage, "model_dump") + else dict(transformed_usage) + ) + standard_logging_payload["response"] = response_dict elif isinstance(result, TranscriptionResponse): from litellm.litellm_core_utils.llm_cost_calc.usage_object_transformation import ( TranscriptionUsageObjectTransformation, @@ -4540,6 +4548,10 @@ class StandardLoggingPayloadSetup: ) elif isinstance(usage, Usage): return usage + elif isinstance(usage, ResponseAPIUsage): + return ResponseAPILoggingUtils._transform_response_api_usage_to_chat_usage( + usage + ) elif isinstance(usage, dict): if ResponseAPILoggingUtils._is_response_api_usage(usage): return ( diff --git a/tests/test_litellm/llms/anthropic/chat/test_anthropic_chat_transformation.py b/tests/test_litellm/llms/anthropic/chat/test_anthropic_chat_transformation.py index 7e96c4634fd..bd229dedfaa 100644 --- a/tests/test_litellm/llms/anthropic/chat/test_anthropic_chat_transformation.py +++ b/tests/test_litellm/llms/anthropic/chat/test_anthropic_chat_transformation.py @@ -1842,7 +1842,7 @@ def test_calculate_usage_completion_tokens_details_always_populated(): # completion_tokens_details should NOT be None assert usage.completion_tokens_details is not None - assert usage.completion_tokens_details.reasoning_tokens is None + assert usage.completion_tokens_details.reasoning_tokens is 0 assert usage.completion_tokens_details.text_tokens == 248 assert usage.completion_tokens == 248 assert usage.prompt_tokens == 37