Skip to content

Commit 5689654

Browse files
polish: copilot feedback.
1 parent 26743fb commit 5689654

2 files changed

Lines changed: 28 additions & 10 deletions

File tree

util/opentelemetry-util-genai/src/opentelemetry/util/genai/stream.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,14 @@ def __getattr__(self, name: str) -> Any:
9696
def _finalize_success(self) -> None:
9797
if self._finalized:
9898
return
99-
self._stop_stream()
10099
self._finalized = True
100+
self._stop_stream()
101101

102102
def _finalize_failure(self, error: BaseException) -> None:
103103
if self._finalized:
104104
return
105-
self._fail_stream(error)
106105
self._finalized = True
106+
self._fail_stream(error)
107107

108108
def _safe_finalize_success(self) -> None:
109109
try:
@@ -217,14 +217,14 @@ def __getattr__(self, name: str) -> Any:
217217
def _finalize_success(self) -> None:
218218
if self._finalized:
219219
return
220-
self._stop_stream()
221220
self._finalized = True
221+
self._stop_stream()
222222

223223
def _finalize_failure(self, error: BaseException) -> None:
224224
if self._finalized:
225225
return
226-
self._fail_stream(error)
227226
self._finalized = True
227+
self._fail_stream(error)
228228

229229
def _safe_finalize_success(self) -> None:
230230
try:

util/opentelemetry-util-genai/tests/test_stream.py

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,13 @@ def _process_chunk(self, chunk):
8282

8383
class _FailingSyncStopStreamWrapper(_TestSyncStreamWrapper):
8484
def _stop_stream(self):
85+
self.stop_count += 1
8586
raise ValueError("instrumentation failed")
8687

8788

8889
class _FailingSyncFailStreamWrapper(_TestSyncStreamWrapper):
8990
def _fail_stream(self, error):
91+
self.failures.append(error)
9092
raise ValueError("instrumentation failed")
9193

9294

@@ -171,14 +173,22 @@ def test_sync_stream_wrapper_swallows_finalize_errors():
171173
wrapper = _FailingSyncStopStreamWrapper(_FakeSyncStream())
172174

173175
wrapper.close()
176+
wrapper.close()
177+
178+
assert wrapper.stop_count == 1
174179

175180

176181
def test_sync_stream_wrapper_swallows_failure_finalize_errors():
177-
error = RuntimeError("close failure")
178-
wrapper = _FailingSyncFailStreamWrapper(_FakeSyncStream(close_error=error))
182+
close_error = RuntimeError("close failure")
183+
stream = _FakeSyncStream(close_error=close_error)
184+
wrapper = _FailingSyncFailStreamWrapper(stream)
179185

180186
with pytest.raises(RuntimeError, match="close failure"):
181187
wrapper.close()
188+
stream._close_error = None
189+
wrapper.close()
190+
191+
assert wrapper.failures == [close_error]
182192

183193

184194
def test_sync_stream_wrapper_swallows_stop_iteration_finalize_errors():
@@ -267,11 +277,13 @@ def _process_chunk(self, chunk):
267277

268278
class _FailingAsyncStopStreamWrapper(_TestAsyncStreamWrapper):
269279
def _stop_stream(self):
280+
self.stop_count += 1
270281
raise ValueError("instrumentation failed")
271282

272283

273284
class _FailingAsyncFailStreamWrapper(_TestAsyncStreamWrapper):
274285
def _fail_stream(self, error):
286+
self.failures.append(error)
275287
raise ValueError("instrumentation failed")
276288

277289

@@ -371,20 +383,26 @@ def test_async_stream_wrapper_swallows_finalize_errors():
371383
async def exercise():
372384
wrapper = _FailingAsyncStopStreamWrapper(_FakeAsyncStream())
373385

386+
await wrapper.close()
374387
await wrapper.close()
375388

389+
assert wrapper.stop_count == 1
390+
376391
asyncio.run(exercise())
377392

378393

379394
def test_async_stream_wrapper_swallows_failure_finalize_errors():
380395
async def exercise():
381-
error = RuntimeError("close failure")
382-
wrapper = _FailingAsyncFailStreamWrapper(
383-
_FakeAsyncStream(close_error=error)
384-
)
396+
close_error = RuntimeError("close failure")
397+
stream = _FakeAsyncStream(close_error=close_error)
398+
wrapper = _FailingAsyncFailStreamWrapper(stream)
385399

386400
with pytest.raises(RuntimeError, match="close failure"):
387401
await wrapper.close()
402+
stream._close_error = None
403+
await wrapper.close()
404+
405+
assert wrapper.failures == [close_error]
388406

389407
asyncio.run(exercise())
390408

0 commit comments

Comments
 (0)