fix(usage): Normalize None token detail objects on Usage initialization - #2141
Merged
seratch merged 1 commit intoDec 3, 2025
Merged
Conversation
Member
|
It seems the tests are failing |
seratch
marked this pull request as draft
December 2, 2025 23:36
codefromthecrypt
force-pushed
the
fix/non-streaming-token-details
branch
2 times, most recently
from
December 3, 2025 02:14
881c90a to
053bdc1
Compare
Extends openai#2034 to handle providers that return None for entire input_tokens_details and output_tokens_details objects (not just the fields within them). This affects non-streaming responses. Related to openai#1179 (which fixed the streaming case). Some providers like llama-stack return null for these optional fields in their JSON responses. The OpenAI SDK maps these to None in Python. Previously, passing None to the Usage constructor would fail Pydantic validation before __post_init__ could normalize them. This PR uses Pydantic's BeforeValidator to normalize None values at the field level, before Pydantic's type validation runs. The validators also convert Chat Completions API types (PromptTokensDetails, CompletionTokensDetails) to Responses API types (InputTokensDetails, OutputTokensDetails).
codefromthecrypt
force-pushed
the
fix/non-streaming-token-details
branch
from
December 3, 2025 02:47
053bdc1 to
aac01ef
Compare
codefromthecrypt
marked this pull request as ready for review
December 3, 2025 02:52
Contributor
Author
|
sorry about that @seratch |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Extends #2034 to handle providers that return None for entire input_tokens_details and output_tokens_details objects (not just the fields within them). This affects non-streaming responses.
Related to #1179 (which fixed the streaming case).
Some providers like llama-stack return null for these optional fields in their JSON responses. The OpenAI SDK maps these to None in Python. Previously, passing None to the Usage constructor would fail Pydantic validation before
__post_init__could normalize them.This PR uses Pydantic's BeforeValidator to normalize None values at the field level, before Pydantic's type validation runs.