I read PEP 671 today, and I feel PEP 671 is not as useful as someone expected.

For example, PEP 671 has this example:

   def bisect_right(a, x, lo=0, hi=>len(a), *, key=None):

But I think we can not change the signature for backward
compatibility. For example,

   def search(self, x, lo=0, hi=None):
        return bisect_right(self._data, x, lo=lo, hi=hi)

If we just change the signature of bisect_right, this wrapper method
will be broken.
So bisect_right should support None for several versions and emit
frustrating DeprecationWarning.
I don't think this change has good cost/performance.

Additionally, this example illustrates that PEP 671 is not wrapper
functions friendly.
If the wrapped functions uses PEP 671, wrapper functions should:

* Copy & paste all default expressions, or
  * But default expression may contain module private variables...
* Use **kwds and hide real signatures.

I have not read all of PEP 671 threads so I am sorry if this is
already discussed.
But this topic is not covered in current PEP 671 yet.

Generally speaking, I don't want to add anything to Python language
that makes Python more complex.
But if I chose one PEP, I prefer PEP 505 than PEP 671.
PEP 505 can be used for default parameters (e.g. `hi ??= len(a)`)  and
many other places.
I feel it has far better benefit / language complexity ratio.

Regards,
-- 
Inada Naoki  <songofaca...@gmail.com>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/JRIKPS5GCMTHUX25UVBBIQ527ZI6VZHN/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to