STINNER Victor <vstin...@python.org> added the comment:

I had more time to think about this issue.

First, I decided to always include "pythoncapi_compat.h" and so there is no 
strict requirement to add new C API functions to Python.

Second, the _Py_Borrow() function looked nice, but there is a practical issue: 
its return type is always PyObject* which makes it not convenient to "convert" 
a function returning a different type.

For example, I replaced "frame->f_code" with "((PyCodeObject 
*)_Py_Borrow(PyFrame_GetCode(frame)))", but this expression requires 3 levels 
of parenthesis, it's long and it's hard to read :-( The outter parenthesis is 
needed if the modified expresion is used to get a code member, like: 
"frame->f_code->co_name".

I chose another approach: add a "Borrow" variant of the functions that I need.

For example, add _PyFrameGetCodeBorrow() variant of PyFrameGetCode(). This 
function is only added to pythoncapi_compat.h, and so Python doesn't have to be 
modified.

I reject my issue :-)

----------
resolution:  -> rejected
stage: patch review -> resolved
status: open -> closed

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue42522>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to