-
-
Notifications
You must be signed in to change notification settings - Fork 206
Open
Description
Currently direct HasTraits
subclasses warn when they receive unrecognized arguments:
traitlets/tests/test_traitlets.py
Lines 2802 to 2810 in b0eaa6a
def test_super_bad_args(): | |
class SuperHasTraits(HasTraits): | |
a = Integer() | |
w = ["Passing unrecognized arguments"] | |
with expected_warnings(w): | |
obj = SuperHasTraits(a=1, b=2) | |
assert obj.a == 1 | |
assert not hasattr(obj, "b") |
However, this does not work with Configurable
and its subclasses, although it is a subclass of HasTraits
:
class Configurable(HasTraits): |
Context
This is implemented in:
traitlets/traitlets/traitlets.py
Lines 1381 to 1399 in b0eaa6a
try: | |
super().__init__(*super_args, **super_kwargs) | |
except TypeError as e: | |
arg_s_list = [repr(arg) for arg in super_args] | |
for k, v in super_kwargs.items(): | |
arg_s_list.append(f"{k}={v!r}") | |
arg_s = ", ".join(arg_s_list) | |
warn( | |
"Passing unrecognized arguments to super({classname}).__init__({arg_s}).\n" | |
"{error}\n" | |
"This is deprecated in traitlets 4.2." | |
"This error will be raised in a future release of traitlets.".format( | |
arg_s=arg_s, | |
classname=self.__class__.__name__, | |
error=e, | |
), | |
DeprecationWarning, | |
stacklevel=2, | |
) |
Related to #145.
minrk
Metadata
Metadata
Assignees
Labels
No labels