From: Henryk Plötz Date: Tue, 7 Aug 2018 14:45:56 +0000 (+0200) Subject: Make SegmentHeader output shorter X-Git-Tag: v2.0.0~1^2~158 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ab7c6f08a054f9414093cf3f72087574d495faa7;p=thirdparty%2Fpython-fints.git Make SegmentHeader output shorter --- diff --git a/fints/formals.py b/fints/formals.py index 7bb7cd7..6ad2023 100644 --- a/fints/formals.py +++ b/fints/formals.py @@ -338,11 +338,28 @@ class Container(metaclass=ContainerMeta): ) stream.write( (prefix + level*indent) + "){}\n".format(trailer) ) +class ShortReprMixin: + def __repr__(self): + return "{}{}({})".format( + "{}.".format(self.__class__.__module__), + self.__class__.__name__, + ", ".join( + [ "{!r}".format(getattr(self, name)) + for name in list(self._fields.keys())] + + ( ['_additional_data={!r}'.format(self._additional_data)] if self._additional_data else [] ) + ) + ) + + def print_nested(self, stream=None, level=0, indent=" ", prefix="", first_level_indent=True, trailer=""): + stream.write( + ( (prefix + level*indent) if first_level_indent else "") + + "{!r}{}\n".format(self, trailer) + ) class DataElementGroup(Container): pass -class SegmentHeader(DataElementGroup): +class SegmentHeader(ShortReprMixin, DataElementGroup): type = AlphanumericField(max_length=6) number = NumericField(max_length=3) version = NumericField(max_length=3) diff --git a/tests/test_formals.py b/tests/test_formals.py index 19fa5e9..556f9e4 100644 --- a/tests/test_formals.py +++ b/tests/test_formals.py @@ -1,5 +1,5 @@ import pytest -from fints.formals import Container, ContainerField, DataElementField, DataElementGroupField, DigitsField, NumericField, Field, SegmentSequence +from fints.formals import Container, ContainerField, DataElementField, DataElementGroupField, DigitsField, NumericField, Field, SegmentSequence, SegmentHeader def test_container_simple(): class A(Container): @@ -262,3 +262,8 @@ def test_sequence_repr(): s = SegmentSequence() assert repr(s) == 'SegmentSequence([])' + +def test_segmentheader_short(): + h = SegmentHeader('HNHBS', 5, 1) + + assert repr(h) == "fints.formals.SegmentHeader('HNHBS', 5, 1, None)"