-
-
Couldn't load subscription status.
- 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
