Hooking Mechanism when Entering and Leaving a Try Block
Sven R. Kunze
srkunze at mail.de
Tue Aug 11 17:47:43 EDT 2015
Hi everybody,
is there something like a hook that a Python module could register to in
order to 'trace' the entering and leaving of arbitrary try blocks?
What is this good for?
I am the maintainer of https://pypi.python.org/pypi/xfork . A package
for converting a classic sequential program to a parallel one.
In order to make sure exception handling basically works the same way as
in the sequential implementation, it would be great if I could hook into
try blocks.
Consider this:
try:
return 25+fork(b)
except:
return 11
finally:
print('finished')
25+fork(b) is a ResultProxy. That kind of object is basically wraps up
operators and evaluate them lazily.
In order to preserve sequential/classic exception handling, I would like
to evaluate all open/not-already-evaluated result proxies as soon as I
enter or leave a try: block.
Why when leaving try:?
Result proxies might raise exceptions once they evaluate. So, result
proxies evaluated outside of their origin try: block, might get caught
somewhere else by the wrong exception handler.
Why when entering try:?
Result proxies might raise exceptions once they evaluate. So, result
proxies from before the try: might raise exceptions which in turn might
be caught inside the try: by the wrong exception handler.
Best,
Sven
PS: I already looked into the source of CPython and discovered these places:
https://github.com/python/cpython/blob/d95bb1adefc7/Python/symtable.c#L947symtable_enter_block
https://github.com/python/cpython/blob/d95bb1adefc7/Python/symtable.c#L931
symtable_exit_block
Unfortunately, I cannot find anything specific to exception handling in
the source.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20150811/fa38ab42/attachment.html>
More information about the Python-list
mailing list