[Python-Dev] Error message for wrong number of arguments
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
* 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.