On 4 August 2018 at 05:34, Jeroen Demeyer <j.deme...@ugent.be> wrote: > On 2018-07-30 17:28, Nick Coghlan wrote: >> >> I would, and I think it would make sense for the PEP to cite improving >> consistency (and reducing code duplication?) in that regard as an >> advantage of the PEP. > > > I'm not sure to which PEP you are referring (PEP 580 or a new PEP?). After > thinking a bit about the issue of error messages, I realized that PEP 580 > would make this easier to fix (to be clear: there are ways to fix it without > PEP 580, I'm just saying that PEP 580 makes it easier). There are two > related reasons for this: > > * The existing code which calls the actual underlying C function doesn't > have access to the Python-level function object. So it can't know whether > it's a function (where self doesn't count) or a method (where self counts). > > * Armin Rigo suggested to use a new flag to indicate this difference: that > would certainly work for Argument Clinic (just have Argument Clinic add that > flag). For methods defined without Argument Clinic, we cannot require such a > new flag though. We could still add the flag at runtime, but it's far from > clear if we can freely change the flags inside a PyMethodDef at runtime (at > least, no existing code that I know does that). > > PEP 580 solves the first issue by having the function object available and > it solves the second issue by not relying on PyMethodDef at all for calling > functions/methods. The second issue especially can be generalized as: PEP > 580 makes the implementation of functions/methods much less rigid, making it > easier to change the implementation. > > So maybe this can be seen as yet another advantage of PEP 580.
Yes, this is the kind of framing of the issue that I had in mind :) Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com