@@ -34,6 +34,7 @@ class InferenceFields(Dict[str, Union["SimpleField", "ObjectField", "ListField"]
3434
3535 def __init__ (self , raw_response : StringDict , indent_level : int = 0 ) -> None :
3636 super ().__init__ ()
37+ self ._indent_level = indent_level
3738 for key , value in raw_response .items ():
3839 field_obj = BaseField .create_field (value , indent_level )
3940 self [key ] = field_obj
@@ -45,10 +46,23 @@ def __getattr__(self, item):
4546 raise AttributeError (item ) from None
4647
4748 def __str__ (self ) -> str :
48- str_fields = ""
49+ out_str = ""
4950 for field_key , field_value in self .items ():
50- str_fields += f":{ field_key } : { field_value } "
51- return str_fields
51+ if isinstance (field_value , ListField ):
52+ value_str = " " * self ._indent_level
53+ if len (field_value .items ) > 0 :
54+ value_str = (
55+ " " * self ._indent_level + str (field_value )
56+ if field_value
57+ else ""
58+ )
59+ out_str += f"{ ' ' * self ._indent_level } :{ field_key } : { value_str } "
60+ elif isinstance (field_value , ObjectField ):
61+ out_str += f"{ ' ' * self ._indent_level } :{ field_key } : { field_value } "
62+ else :
63+ out_str += f"{ ' ' * self ._indent_level } :{ field_key } : { field_value if field_value else '' } "
64+ out_str += "\n "
65+ return out_str .rstrip ()
5266
5367
5468class ListField (BaseField ):
@@ -87,20 +101,7 @@ def __init__(self, raw_response: StringDict, indent_level: int = 0):
87101 self .fields = InferenceFields (inner_fields , self ._indent_level + 1 )
88102
89103 def __str__ (self ) -> str :
90- out_str = ""
91- for field_key , field_value in self .fields .items ():
92- if isinstance (field_value , ListField ):
93- value_str = ""
94- if len (field_value .items ) > 0 :
95- value_str = (
96- " " * self ._indent_level + str (field_value )
97- if field_value
98- else ""
99- )
100- out_str += f"{ ' ' * self ._indent_level } :{ field_key } : { value_str } "
101- else :
102- out_str += f"{ ' ' * self ._indent_level } :{ field_key } : { field_value if field_value else '' } "
103- return out_str
104+ return f"\n { self .fields } "
104105
105106
106107class SimpleField (BaseField ):
@@ -113,4 +114,4 @@ def __init__(self, raw_response: StringDict, indent_level: int = 0):
113114 self .value = raw_response ["value" ] = raw_response .get ("value" , None )
114115
115116 def __str__ (self ) -> str :
116- return f"{ self .value } \n " if self .value else "\n "
117+ return f"{ self .value } " if self .value else ""
0 commit comments