Update.

Le ven. 31 mai 2019 à 10:49, Petr Viktorin <encu...@gmail.com> a écrit :
> PEP 570 (Positional-Only Parameters) changed the signatures of
> PyCode_New() and types.CodeType(), adding a new argument for "posargcount".

Pablo proposed a PR to revert PyCode_New() API to Python 3.7 API:
https://github.com/python/cpython/pull/13959

I dislike "PyCode_NewEx"  name, it will become worse when another
parameter will be added in the future. I prefer "With" naming. I
prefer "PyCode_NewWithPosArgs()" name.

For types.CodeType constructor, well, I added CodeType.replace() to
help projects to be prepared for next CodeType constructor change :-)
But *I* am fine with breaking this constructor since very few projects
create explicitly code objects.


> Our policy for such changes seems to be fragmented tribal knowledge. I'm
> writing to check if my understanding is reasonable, so I can apply it
> and document it explicitly.

The doc has been updated:
https://bugs.python.org/issue36896

"If you instantiate any of these types, note that signatures may vary
between Python versions."


> There is a surprisingly large ecosystem of tools that create code objects.
> The expectation seems to be that these tools will need to be adapted for
> each minor version of Python.

For PyCode_New() change, it seems like (almost?) only projects using
Cython are affected, no?

To not require Cython when they are installed, many projects include C
files generated by Cython in their tarball (and other released files).

So yeah, the PyCode_New() change is very annoying in practical, since
every single project using Cython requires a new release in practice.

For this reason, I'm in favor of reverting PyCode_New() API and add a
new function with the extra positional only parameter.


> Also, the expected level of API stability should be documented in the docs.

Note: code.h header is excluded from the stable API :-) The whole file
is surrounded by "#ifndef Py_LIMITED_API".

Victor
--
Night gathers, and now my watch begins. It shall not end until my death.
_______________________________________________
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/5MKG3RWJXSM6ZEOSFUPNTPAKHQ7YRCCH/

Reply via email to