Petr Viktorin schrieb am 10.02.22 um 11:22:
So, should there be a mechanism to set source/lineno/position on
tracebacks/exceptions, rather than always requiring a frame for it?
There's "_PyTraceback_Add()" currently, but it's incomplete in terms of
what Cython would need.
As it stands, Cython could make use of a function that accepted
- string object arguments for filename and function name
- (optionally) a 'globals' dict (or a reference to the current module)
- (optionally) a 'locals' mapping
- (optionally) a code object
- a C integer source line
- a C integer position, probably start and end lines and columns
to add a traceback level to the current exception.
I'm not sure about the code object since that's a rather heavy thing, but
given that Cython needs to create code objects in order for its functions
to be introspectible, that seems like a worthwhile option to have.
However, with the recent frame stack refactoring and frame object now being
lazily created, according to
https://bugs.python.org/issue44032
https://bugs.python.org/issue44590
I guess Cython should rather integrate with the new stack frame
infrastructure in general. That shifts the requirements a bit.
An API function like the above would then still be helpful for the reduced
API compile mode, I guess. But as soon as Cython uses InterpreterFrame
structs internally, it would no longer be helpful for the fast mode.
InterpreterFrame object are based on byte code instructions again, which
brings us back to co_positions.
Stefan
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/python-dev@python.org/message/YSP36JL5SRSPEG4X67G5RMWUWLVXSDC5/
Code of Conduct: http://python.org/psf/codeofconduct/