pluggy
pluggy copied to clipboard
Why `pluggy` ignore `hookimpl` kwargsnames?
Description
I try to set default argument for a hook and find it does not work.
class SomeClass:
@hookimpl
def my_func(self, a=1):
...
It seems like if I use a kwargs, pluggy will ignore this argument and won't call it anymore. I can see that HookImpl stores both kwargsnames and argnames but only argnames are called. Is this intentional or bug? I try to search in the docs but couldn't find anything related.
Context
https://github.com/pytest-dev/pluggy/blob/5c16e15a963d5e66f37d05b1ccfb90adf71e8e0f/src/pluggy/_callers.py#L71-L73
In docs, it said:
naming markers: HookSpecMarker and HookImplMarker must be initialized with the name of the host project (the name parameter in setup()) - so eggsample in our case.
But it never mentioned keywords arguments cannot be used.
p.s. I did a bit more digging, it seems that kwargnames is never used anywhere in the source code other than saving it as an attribute.
Currently default args are ignored
The discussion on support for them for forward or backward compatibility has not yet yielded implementations
@RonnyPfannschmidt Where can I find the related discussion? If it's not going to be implemented soon, does it makes sense to document this behavior for the time being? It would be great to get a view from pluggy standpoint as our users thought this is a bug on our side. We can add a few sentences in our own docs, but it will be nicer to reference pluggy's doc directly.
Something like `keyword arguments is not supported yet" is good enough.
Duplicate of #442, and I guess longer conversation goes all the way back to #15
Something like `keyword arguments is not supported yet" is good enough.
I agree, documenting the current status would be good.
Also the original post is a bit confusing, because the example is using a default value but mentioning keyword arguments, which are separate topics.