Skip to content

Commit ecf4aa4

Browse files
henrykraphaelm
authored andcommitted
Improve nested output of ValueList fields
1 parent aa651c3 commit ecf4aa4

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

fints/formals.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,23 @@ def __iter__(self):
6464
def __repr__(self):
6565
return "{!r}".format(list(self))
6666

67+
def print_nested(self, stream=None, level=0, indent=" ", prefix="", first_level_indent=True, trailer=""):
68+
import sys
69+
stream = stream or sys.stdout
70+
71+
stream.write(
72+
( (prefix + level*indent) if first_level_indent else "")
73+
+ "[\n"
74+
)
75+
for val in self:
76+
if not hasattr( getattr(val, 'print_nested', None), '__call__'):
77+
stream.write(
78+
(prefix + (level+1)*indent) + "{!r},\n".format(val)
79+
)
80+
else:
81+
val.print_nested(stream=stream, level=level+2, indent=indent, prefix=prefix, trailer=",")
82+
stream.write( (prefix + level*indent) + "]{}\n".format(trailer) )
83+
6784
class Field:
6885
def __init__(self, length=None, min_length=None, max_length=None, count=None, min_count=None, max_count=None, required=True):
6986
if length is not None and (min_length is not None or max_length is not None):
@@ -368,6 +385,9 @@ def _repr_items(self):
368385
if isinstance(val, Container):
369386
if val.is_unset():
370387
continue
388+
elif isinstance(val, ValueList):
389+
if len(val) == 0:
390+
continue
371391
elif val is None:
372392
continue
373393
yield (name, val)
@@ -492,4 +512,4 @@ class Response(DataElementGroup):
492512
response_code = DataElementField(type='dig', length=4)
493513
reference_element = DataElementField(type='an', max_length=7)
494514
response_text = DataElementField(type='an', max_length=80)
495-
parameters = DataElementField(type='an', max_length=35, max_count=10)
515+
parameters = DataElementField(type='an', max_length=35, max_count=10, required=False)

0 commit comments

Comments
 (0)