From 2f7e06937702210c3d9ff17d56b2b437849c03c9 Mon Sep 17 00:00:00 2001 From: Lucidiot Date: Mon, 30 Sep 2019 21:27:53 +0200 Subject: [PATCH] Add str, repr and IPython's pretty repr, close #7 --- madeleine/base.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) 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)