Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9273ab3

Browse files
committed
Add locals on callable exception
1 parent cef6d35 commit 9273ab3

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

‎src/dependency_injector/providers.pxd‎

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,8 @@ cdef inline void __async_prepare_args_kwargs_callback(
477477
for value, (key, _) in zip(result, future_args_kwargs):
478478
args[key] = value
479479
except Exception as exception:
480+
exception.__traceback__.tb_frame.f_locals.clear()
481+
exception.__traceback__.tb_frame.f_locals.update(locals())
480482
future_result.set_exception(exception)
481483
else:
482484
future_result.set_result(args)
@@ -525,6 +527,8 @@ cdef inline void __async_inject_attributes_callback(object future_result, object
525527
for name, value in attributes.items():
526528
setattr(instance, name, value)
527529
except Exception as exception:
530+
exception.__traceback__.tb_frame.f_locals.clear()
531+
exception.__traceback__.tb_frame.f_locals.update(locals())
528532
future_result.set_exception(exception)
529533
else:
530534
future_result.set_result(instance)
@@ -575,15 +579,20 @@ cdef inline object __call(
575579
asyncio.ensure_future(args_kwargs_ready)
576580

577581
return future_result
578-
579-
return call(*args, **kwargs)
580-
582+
try:
583+
return call(*args, **kwargs)
584+
except Exception as exception:
585+
exception.__traceback__.tb_frame.f_locals.clear()
586+
exception.__traceback__.tb_frame.f_locals.update(locals())
587+
raise exception
581588

582589
cdef inline void __async_call_callback(object future_result, object call, object future):
583590
try:
584591
args, kwargs = future.result()
585592
result = call(*args, **kwargs)
586593
except Exception as exception:
594+
exception.__traceback__.tb_frame.f_locals.clear()
595+
exception.__traceback__.tb_frame.f_locals.update(locals())
587596
future_result.set_exception(exception)
588597
else:
589598
if __is_future_or_coroutine(result):
@@ -597,6 +606,8 @@ cdef inline object __async_result_callback(object future_result, object future):
597606
try:
598607
result = future.result()
599608
except Exception as exception:
609+
exception.__traceback__.tb_frame.f_locals.clear()
610+
exception.__traceback__.tb_frame.f_locals.update(locals())
600611
future_result.set_exception(exception)
601612
else:
602613
future_result.set_result(result)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /