pluggy icon indicating copy to clipboard operation
pluggy copied to clipboard

Why `pluggy` ignore `hookimpl` kwargsnames?

Open noklam opened this issue 1 year ago • 4 comments
trafficstars

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.

image

noklam avatar Aug 15 '24 18:08 noklam

Currently default args are ignored

The discussion on support for them for forward or backward compatibility has not yet yielded implementations

RonnyPfannschmidt avatar Aug 16 '24 16:08 RonnyPfannschmidt

@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.

noklam avatar Aug 16 '24 16:08 noklam

Duplicate of #442, and I guess longer conversation goes all the way back to #15

astrojuanlu avatar Nov 08 '24 18:11 astrojuanlu

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.

nicoddemus avatar Dec 10 '24 10:12 nicoddemus