Skip to content

Commit d9b2b07

Browse files
ericapisaniclaude
andcommitted
ref(openai): Rename streaming_message_token_usage to streaming_message_total_token_usage
Clarify that this variable holds the total token usage from streaming responses. Also fix the None check to use `is not None` instead of truthiness, preventing false negatives when usage has zero-valued fields. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 6d48100 commit d9b2b07

2 files changed

Lines changed: 18 additions & 17 deletions

File tree

sentry_sdk/integrations/openai.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ def _calculate_completions_token_usage(
153153
response: "Any",
154154
span: "Span",
155155
streaming_message_responses: "Optional[List[str]]",
156-
streaming_message_token_usage: "Optional[CompletionUsage]",
156+
streaming_message_total_token_usage: "Optional[CompletionUsage]",
157157
count_tokens: "Callable[..., Any]",
158158
) -> None:
159159
"""Extract and record token usage from a Chat Completions API response."""
@@ -164,8 +164,8 @@ def _calculate_completions_token_usage(
164164
total_tokens: "Optional[int]" = 0
165165
usage = None
166166

167-
if streaming_message_token_usage:
168-
usage = streaming_message_token_usage
167+
if streaming_message_total_token_usage is not None:
168+
usage = streaming_message_total_token_usage
169169
elif hasattr(response, "usage"):
170170
usage = response.usage
171171

@@ -579,7 +579,7 @@ def _set_common_output_data(
579579
response=response,
580580
span=span,
581581
streaming_message_responses=None,
582-
streaming_message_token_usage=None,
582+
streaming_message_total_token_usage=None,
583583
count_tokens=integration.count_tokens,
584584
)
585585

@@ -635,7 +635,7 @@ def _set_common_output_data(
635635
response=response,
636636
span=span,
637637
streaming_message_responses=None,
638-
streaming_message_token_usage=None,
638+
streaming_message_total_token_usage=None,
639639
count_tokens=integration.count_tokens,
640640
)
641641
if finish_span:
@@ -755,7 +755,7 @@ def _wrap_synchronous_completions_chunk_iterator(
755755
"""
756756
ttft = None
757757
data_buf: "list[list[str]]" = [] # one for each choice
758-
streaming_message_token_usage = None
758+
streaming_message_total_token_usage = None
759759

760760
for x in old_iterator:
761761
span.set_data(SPANDATA.GEN_AI_RESPONSE_MODEL, x.model)
@@ -773,7 +773,7 @@ def _wrap_synchronous_completions_chunk_iterator(
773773
data_buf[choice_index].append(content or "")
774774
choice_index += 1
775775
if hasattr(x, "usage"):
776-
streaming_message_token_usage = x.usage
776+
streaming_message_total_token_usage = x.usage
777777

778778
yield x
779779

@@ -791,7 +791,7 @@ def _wrap_synchronous_completions_chunk_iterator(
791791
response=response,
792792
span=span,
793793
streaming_message_responses=all_responses,
794-
streaming_message_token_usage=streaming_message_token_usage,
794+
streaming_message_total_token_usage=streaming_message_total_token_usage,
795795
count_tokens=integration.count_tokens,
796796
)
797797

@@ -815,7 +815,7 @@ async def _wrap_asynchronous_completions_chunk_iterator(
815815
"""
816816
ttft = None
817817
data_buf: "list[list[str]]" = [] # one for each choice
818-
streaming_message_token_usage = None
818+
streaming_message_total_token_usage = None
819819

820820
async for x in old_iterator:
821821
span.set_data(SPANDATA.GEN_AI_RESPONSE_MODEL, x.model)
@@ -833,7 +833,7 @@ async def _wrap_asynchronous_completions_chunk_iterator(
833833
data_buf[choice_index].append(content or "")
834834
choice_index += 1
835835
if hasattr(x, "usage"):
836-
streaming_message_token_usage = x.usage
836+
streaming_message_total_token_usage = x.usage
837837

838838
yield x
839839

@@ -851,7 +851,7 @@ async def _wrap_asynchronous_completions_chunk_iterator(
851851
response=response,
852852
span=span,
853853
streaming_message_responses=all_responses,
854-
streaming_message_token_usage=streaming_message_token_usage,
854+
streaming_message_total_token_usage=streaming_message_total_token_usage,
855855
count_tokens=integration.count_tokens,
856856
)
857857

tests/integrations/openai/test_openai.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1972,7 +1972,7 @@ def count_tokens(msg):
19721972
response=response,
19731973
span=span,
19741974
streaming_message_responses=streaming_message_responses,
1975-
streaming_message_token_usage=None,
1975+
streaming_message_total_token_usage=None,
19761976
count_tokens=count_tokens,
19771977
)
19781978
mock_record_token_usage.assert_called_once_with(
@@ -2010,7 +2010,7 @@ def count_tokens(msg):
20102010
response=response,
20112011
span=span,
20122012
streaming_message_responses=[],
2013-
streaming_message_token_usage=None,
2013+
streaming_message_total_token_usage=None,
20142014
count_tokens=count_tokens,
20152015
)
20162016
mock_record_token_usage.assert_called_once_with(
@@ -2049,7 +2049,7 @@ def count_tokens(msg):
20492049
response=response,
20502050
span=span,
20512051
streaming_message_responses=streaming_message_responses,
2052-
streaming_message_token_usage=None,
2052+
streaming_message_total_token_usage=None,
20532053
count_tokens=count_tokens,
20542054
)
20552055
mock_record_token_usage.assert_called_once_with(
@@ -2088,7 +2088,7 @@ def count_tokens(msg):
20882088
response=response,
20892089
span=span,
20902090
streaming_message_responses=streaming_message_responses,
2091-
streaming_message_token_usage=None,
2091+
streaming_message_total_token_usage=None,
20922092
count_tokens=count_tokens,
20932093
)
20942094
mock_record_token_usage.assert_called_once_with(
@@ -2140,7 +2140,7 @@ def count_tokens(msg):
21402140
response=response,
21412141
span=span,
21422142
streaming_message_responses=streaming_message_responses,
2143-
streaming_message_token_usage=None,
2143+
streaming_message_total_token_usage=None,
21442144
count_tokens=count_tokens,
21452145
)
21462146
mock_record_token_usage.assert_called_once_with(
@@ -2172,7 +2172,7 @@ def count_tokens(msg):
21722172
response=response,
21732173
span=span,
21742174
streaming_message_responses=streaming_message_responses,
2175-
streaming_message_token_usage=None,
2175+
streaming_message_total_token_usage=None,
21762176
count_tokens=count_tokens,
21772177
)
21782178
mock_record_token_usage.assert_called_once_with(
@@ -2227,6 +2227,7 @@ def count_tokens(msg):
22272227
return len(str(msg))
22282228

22292229
response = mock.MagicMock()
2230+
response.usage = None
22302231
input = []
22312232
streaming_message_responses = None
22322233

0 commit comments

Comments
 (0)