On Fri, Sep 3, 2021 at 4:12 PM Victor Stinner <vstinner@python.org> wrote:
On Thu, Sep 2, 2021 at 11:15 PM Guido van Rossum <guido@python.org> wrote:
> FWIW I've applied for an exception from the two-release deprecation policy from the SC:
> https://github.com/python/steering-council/issues/75

On the PyPI top 5000 packages, 136 contain "PyCode" in the source. I
didn't check how many are using Cython.

Most of them. :-)

I wrote a script that to do a similar search on the 4000 most popular packages, disregarding Cython-generated files (these have "/* Generated by Cython <version> */" in their first line). Now the list collapsed to this:

Cython-3.0a7.tar.gz: 11 hits in 3 files
frozendict-2.0.6.tar.gz: 14 hits in 8 files
gevent-21.8.0.tar.gz: 1 hits in 1 files
JPype1-1.3.0.tar.gz: 1 hits in 1 files
mypy-0.910.tar.gz: 2 hits in 1 files
reportlab-3.6.1.tar.gz: 1 hits in 1 files
setuptools-9.1.tar.gz: 1 hits in 1 files

Of these:

Cython: obviously :-)
frozendict: calls PyCode_NewEmpty; seems to include modified CPython headers
gevent: Uses Cython's __Pyx_PyCode_New in a generated .h file
JPype: calls PyCode_NewEmpty
mypy: PyCode_NewEmpty mentioned in a comment
reportlab: calls PyCode_NewEmpty
setuptools: in a file generated by Pyrex (Cython's predecessor)

There wasn't a single call to PyCode_NewWithPosOnlyArgs in any of these apart from Cython.

In addition, I just heard from the SC that they've approved the exception. So we will remove these two APIs from 3.11 without deprecation. I've filed https://bugs.python.org/issue45122 to get this done (looking for volunteers).

--
--Guido van Rossum (python.org/~guido)