22
33import pytest
44
5- from json_to_models .dynamic_typing import (DList , DOptional , FloatString , IntString , ModelMeta , compile_imports )
5+ from json_to_models .dynamic_typing import (DDict , DList , DOptional , FloatString , IntString , ModelMeta , compile_imports )
66from json_to_models .models import sort_fields
77from json_to_models .models .attr import AttrsModelCodeGenerator , METADATA_FIELD_NAME , sort_kwargs
88from json_to_models .models .base import generate_code
@@ -87,7 +87,8 @@ class Test:
8787 "baz" : DOptional (DList (DList (str ))),
8888 "bar" : DOptional (IntString ),
8989 "qwerty" : FloatString ,
90- "asdfg" : DOptional (int )
90+ "asdfg" : DOptional (int ),
91+ "dict" : DDict (int )
9192 }),
9293 "fields_data" : {
9394 "foo" : {
@@ -114,19 +115,25 @@ class Test:
114115 "name" : "asdfg" ,
115116 "type" : "Optional[int]" ,
116117 "body" : f"attr.ib(default=None, { field_meta ('asdfg' )} )"
118+ },
119+ "dict" : {
120+ "name" : "dict" ,
121+ "type" : "Dict[str, int]" ,
122+ "body" : f"attr.ib({ field_meta ('dict' )} )"
117123 }
118124 },
119125 "generated" : trim (f"""
120126 import attr
121127 from attr.converter import optional
122128 from json_to_models.dynamic_typing import FloatString, IntString
123- from typing import List, Optional
129+ from typing import Dict, List, Optional
124130
125131
126132 @attr.s
127133 class Test:
128134 foo: int = attr.ib({ field_meta ('foo' )} )
129135 qwerty: FloatString = attr.ib(converter=FloatString, { field_meta ('qwerty' )} )
136+ dict: Dict[str, int] = attr.ib({ field_meta ('dict' )} )
130137 baz: Optional[List[List[str]]] = attr.ib(factory=list, { field_meta ('baz' )} )
131138 bar: Optional[IntString] = attr.ib(default=None, converter=optional(IntString), { field_meta ('bar' )} )
132139 asdfg: Optional[int] = attr.ib(default=None, { field_meta ('asdfg' )} )
0 commit comments