Skip to content

Commit 6e89470

Browse files
committed
test decorators
1 parent 6c9f9ea commit 6e89470

File tree

2 files changed

+378
-843
lines changed

2 files changed

+378
-843
lines changed

langfuse/_client/observe.py

Lines changed: 46 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -236,21 +236,33 @@ async def async_wrapper(*args, **kwargs):
236236
return await func(*args, **kwargs)
237237

238238
with context_manager as langfuse_span_or_generation:
239-
result = await func(*args, **kwargs)
239+
is_return_type_generator = False
240240

241-
if capture_output is True:
242-
if inspect.isasyncgen(result):
243-
return self._wrap_async_generator_result(
244-
langfuse_span_or_generation,
245-
result,
246-
transform_to_string,
247-
)
241+
try:
242+
result = await func(*args, **kwargs)
248243

249-
langfuse_span_or_generation.update(output=result)
244+
if capture_output is True:
245+
if inspect.isasyncgen(result):
246+
is_return_type_generator = True
250247

251-
langfuse_span_or_generation.end()
248+
return self._wrap_async_generator_result(
249+
langfuse_span_or_generation,
250+
result,
251+
transform_to_string,
252+
)
252253

253-
return result
254+
langfuse_span_or_generation.update(output=result)
255+
256+
return result
257+
except Exception as e:
258+
langfuse_span_or_generation.update(
259+
level="ERROR", status_message=str(e)
260+
)
261+
262+
raise e
263+
finally:
264+
if not is_return_type_generator:
265+
langfuse_span_or_generation.end()
254266

255267
return cast(F, async_wrapper)
256268

@@ -312,21 +324,33 @@ def sync_wrapper(*args, **kwargs):
312324
return func(*args, **kwargs)
313325

314326
with context_manager as langfuse_span_or_generation:
315-
result = func(*args, **kwargs)
327+
is_return_type_generator = False
316328

317-
if capture_output is True:
318-
if inspect.isgenerator(result):
319-
return self._wrap_sync_generator_result(
320-
langfuse_span_or_generation,
321-
result,
322-
transform_to_string,
323-
)
329+
try:
330+
result = func(*args, **kwargs)
324331

325-
langfuse_span_or_generation.update(output=result)
332+
if capture_output is True:
333+
if inspect.isgenerator(result):
334+
is_return_type_generator = True
326335

327-
langfuse_span_or_generation.end()
336+
return self._wrap_sync_generator_result(
337+
langfuse_span_or_generation,
338+
result,
339+
transform_to_string,
340+
)
341+
342+
langfuse_span_or_generation.update(output=result)
343+
344+
return result
345+
except Exception as e:
346+
langfuse_span_or_generation.update(
347+
level="ERROR", status_message=str(e)
348+
)
328349

329-
return result
350+
raise e
351+
finally:
352+
if not is_return_type_generator:
353+
langfuse_span_or_generation.end()
330354

331355
return cast(F, sync_wrapper)
332356

0 commit comments

Comments
 (0)