diff --git a/avro_to_python/templates/fields/mapField.j2 b/avro_to_python/templates/fields/mapField.j2 index 1826ecf..a62fc9f 100644 --- a/avro_to_python/templates/fields/mapField.j2 +++ b/avro_to_python/templates/fields/mapField.j2 @@ -1,6 +1,9 @@ {%- block map %} - def set_{{name}}(self, values: list) -> None: - + def set_{{name}}(self, values) -> None: + if isinstance(values, dict): + self.{{name}} = values + return + self.{{name}} = [] if isinstance(values, list): for item in values: @@ -60,6 +63,6 @@ else: raise TypeError("Field '{{name}}' should be type list") - def get_{{name}}(self) -> list: + def get_{{name}}(self): return self.{{name}} -{%- endblock -%} \ No newline at end of file +{%- endblock -%} diff --git a/avro_to_python/templates/files/record.j2 b/avro_to_python/templates/files/record.j2 index 7ab9a61..df8585d 100644 --- a/avro_to_python/templates/files/record.j2 +++ b/avro_to_python/templates/files/record.j2 @@ -2,8 +2,11 @@ class {{file.name}}(object): {% include 'partials/avroSchema.j2'|indent(-4) %} - def __init__(self, obj: Union[str, dict, '{{file.name}}']) -> None: - if isinstance(obj, str): + def __init__(self, obj: Union[str, dict, '{{file.name}}'] = None) -> None: + if obj is None: + return + + elif isinstance(obj, str): obj = json.loads(obj) elif isinstance(obj, type(self)): @@ -22,4 +25,4 @@ class {{file.name}}(object): {% for name, field in file.fields.items() -%} {% include 'fields/fieldFactory.j2' %} {% endfor -%} -{%- endblock -%} \ No newline at end of file +{%- endblock -%}