@@ -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+
6784class 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