diff --git a/traitlets/config/loader.py b/traitlets/config/loader.py index 20076c2c..21dbed1a 100644 --- a/traitlets/config/loader.py +++ b/traitlets/config/loader.py @@ -146,6 +146,12 @@ def to_dict(self): d['inserts'] = self._inserts return d + def __repr__(self): + if self._value is not None: + return "<%s value=%r>" % (self.__class__.__name__, self._value) + else: + return "<%s %r>" % (self.__class__.__name__, self.to_dict()) + def _is_section_key(key): """Is a Config key a section name (does it start with a capital)?""" diff --git a/traitlets/config/tests/test_loader.py b/traitlets/config/tests/test_loader.py index 0fca2566..bfca88ff 100644 --- a/traitlets/config/tests/test_loader.py +++ b/traitlets/config/tests/test_loader.py @@ -483,6 +483,20 @@ def test_getattr_private_missing(self): _ = cfg._repr_html_ self.assertNotIn('_repr_html_', cfg) self.assertEqual(len(cfg), 0) + + def test_lazy_config_repr(self): + cfg = Config() + cfg.Class.lazy.append(1) + cfg_repr = repr(cfg) + assert '" in cfg_repr + assert 'value=' not in cfg_repr + cfg.Class.lazy.get_value([0]) + repr2 = repr(cfg) + assert repr([0,1]) in repr2 + assert 'value=' in repr2 + def test_getitem_not_section(self): cfg = Config()