On 2020-01-03 14:36, Petr Viktorin wrote:
On 2019-11-25 13:15, Stefan Behnel wrote:
Hi all,

I think that PEP 573 is ready to be accepted, to greatly improve the state
of extension modules in CPython 3.9.

https://www.python.org/dev/peps/pep-0573/

It has come a long way since the original proposal and went through several
iterations and discussions by various interested people, effectively
reducing its scope quite a bit. So this is the last call for comments on
the latest version of the PEP, before I will pronounce on it. Please keep
the discussion in this thread.

I have received substantial private feedback, and I'll need to make another update to:

## Better separate C-API additions:[...]  from CPython implementation details:
## Clarify that ht_module is not inherited
## Specify what "defining class" means more rigorously

The update is here: https://github.com/python/peps/pull/1275

It also includes a more drastic change: it removes the MRO walker from the proposal. Reflecting on the feedback, it became clear to me that a MRO walker, as it was described, won't give correct results in all cases: specifically, is a slot is overridden by setting a special method from Python code, the walker won't be able to find module. Think something like:
    c_add = Class.__add__  # where nb_add uses the MRO walker
    Class.__add__ = lambda *args: "evil"
    c_add(Class(), 0)  # Exception: Defining type has not been found.

This can be solved, but it will need a different design and more discussion. I'd rather defer it to the future. Meanwhile, extension authors can use their own MRO walker if they're OK with some surprising edge cases.
_______________________________________________
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/PFBAQWQAD3GLDHE6Z7SZ2R6ML57GSN5N/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to