@@ -88,8 +88,11 @@ def reduce_init(clazz, **d):
8888 if type(sub) == str:
8989 sub = eval(sub) # attrs turns these into strings...why?
9090 reduce_arg = getattr(sub, "__args__", [None])[0]
91- if isinstance(d[k], list) and hasattr(reduce_arg, "__annotations__"):
92- setattr(self, k, [enusre_reserved(reduce_arg(**x)) for x in d[k]])
91+ if isinstance(d[k], list):
92+ if hasattr(reduce_arg, "__annotations__"):
93+ setattr(self, k, [enusre_reserved(reduce_arg(**x)) for x in d[k]])
94+ else:
95+ setattr(self, k, [enusre_reserved(reduce_arg(x)) for x in d[k]])
9396 elif isinstance(d[k], dict) and hasattr(sub, "__annotations__"):
9497 setattr(self, k, enusre_reserved(sub(**d[k])))
9598 else:
@@ -122,6 +125,7 @@ def __repr__(self) -> str:
122125def translate_name (m_Name : str , ** kwargs ):
123126 m_Name = m_Name .replace ("<>" , "__generic_" ) # Generic templates
124127 m_Name = m_Name .replace ("<" , "_" ).replace (">" , "_" ) # Templated
128+ m_Name = m_Name .replace ("=" , "_" ) # Special chars
125129 return m_Name
126130
127131
@@ -216,7 +220,7 @@ def emit_line(*lines: str):
216220 if import_root :
217221 emit_line (f"from { import_root } import *" )
218222 for clazz , parent in import_defs .items ():
219- emit_line (f"from { import_root } { parent } import { clazz } " )
223+ emit_line (f"from { import_root } { parent or '' } import { clazz } " )
220224
221225 emit_line ()
222226 # Emit by topo order
@@ -269,7 +273,7 @@ def emit_line(*lines: str):
269273 name , type = field ["m_Name" ], translate_type (
270274 field ["m_Type" ], typenames = typetree_defs | import_defs
271275 )
272- emit_line (f"\t { declare_field (name , type , field [" m_Type" ])} " )
276+ emit_line (f"\t { declare_field (name , type , field [' m_Type' ])} " )
273277 clazz_fields .append ((name , type , field ["m_Type" ]))
274278 cur_dep1 += 1
275279 dp [clazz ] = cur_dep1
@@ -280,7 +284,7 @@ def emit_line(*lines: str):
280284 name , type = field ["m_Name" ], translate_type (
281285 field ["m_Type" ], typenames = typetree_defs | import_defs
282286 )
283- emit_line (f"\t { declare_field (name , type , field [" m_Type" ])} " )
287+ emit_line (f"\t { declare_field (name , type , field [' m_Type' ])} " )
284288 clazz_fields .append ((name , type ))
285289 if not clazz_fields :
286290 # Empty class. Consider MRO
0 commit comments