Victor Stinner wrote: > Since Cython is a common consumer of this C API, can somone please dig > into Cython to see exactly what it needs in terms of API? How does > Cython create all arguments of the __Pyx_PyCode_New() macro? Does it > copy an existing function to only override some fields, something like > CodeType.replace(field=new_value)? > If possible, I would prefer that Cython only uses the *public* C API. > Otherwise, it will be very likely that Cython will break at every > single Python release. Cython has a small team to maintain the code > base, whereas CPython evolves much faster with a larger team. > Victor
Cython only uses it here, to construct a fake code object with mostly blank values for each of the Cython function objects: https://github.com/cython/cython/blob/8af0271186cc642436306274564986888d5e64c8/Cython/Compiler/ExprNodes.py#L9722 It's not actually intending to execute the code object at any point, it's created so that fake tracebacks get a filename/line number, the function objects have the argument count values for inspect to read and so Cython can emulate profiler/tracer events. So for Cython's case in particular it could a more stable API function, though said hypothetical API would have to have updated to handle pos-only args anyway also. _______________________________________________ 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/7RM4XJBH3KVSP3T43YCT6VCELTPCCBME/ Code of Conduct: http://python.org/psf/codeofconduct/