diff --git a/madeleine/base.py b/madeleine/base.py index dd759d0..e9752b3 100644 --- a/madeleine/base.py +++ b/madeleine/base.py @@ -60,6 +60,31 @@ class Component(metaclass=ComponentMetaclass, register=False): Useful to perform some checks after parsing. """ + def __str__(self): + return str(self.serialize()) + + def __repr__(self): + return '{}({})'.format( + self.__class__.__name__, + ', '.join( + '{}={!r}'.format(k, v) + for k, v in self.serialize().items() + ), + ) + + def _repr_pretty_(self, p, cycle): + if cycle: + p.text('{}(...)'.format(self.__class__.__name__)) + else: + with p.group(2, '{}('.format(self.__class__.__name__), ')'): + p.breakable('') + for k, v in self.serialize().items(): + p.text(k) + p.text('=') + p.pretty(v) + p.text(',') + p.breakable() + @classmethod def from_path(cls, path, fmt=FileFormat.YAML): assert isinstance(fmt, FileFormat)