From ab7c6f08a054f9414093cf3f72087574d495faa7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Henryk=20Pl=C3=B6tz?= Date: Tue, 7 Aug 2018 16:45:56 +0200 Subject: [PATCH] Make SegmentHeader output shorter --- fints/formals.py | 19 ++++++++++++++++++- tests/test_formals.py | 7 ++++++- 2 files changed, 24 insertions(+), 2 deletions(-) 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)" -- 2.47.3