-
-
Notifications
You must be signed in to change notification settings - Fork 400
Description
Adding field transformer according to documentation (i.e. as a function of type Callable[[type, list[attr.Attribute[Any]]], list[attr.Attribute[Any]]]
)
breaks attrs
integration with hypothesis, because attributes transformed with such function are not casted to generated AttrsClass
, but remains just an list of attributes (here)
This causes error in hypothesis here, because fields
is an list, not an AttrsClass
instance, and therefore getattr(fields, name)
raises an AttributeError
.
Easy workaround for that is just to create an AttrsClass
again inside field transformer, like so:
def transformer(cls: type, fields: list[attr.Attribute[Any]]) -> list[attr.Attribute[Any]]:
attr_names = [f.name for f in fields]
AttrsClass = _make_attr_tuple_class(cls.__name__, attr_names)
... do something with fields ...
return AttrsClass(fields)
...but it's not very handy nor pretty, and messes with typing. So, I would very thankful if it could be resolved within attrs
(it would be quite easy, I guess).
BTW. I love your package, awesome job! Cheers!