____________________ TestJSON.test_json_serialization_types ____________________
self = Serializer(serialization_functions=RefinementDict(lookup={<class 'dict'>: <function <lambda> at 0x7ffff67221f0>, <clas...7ffff680eca0>), is_subset=<function issubclass at 0x7ffff680eca0>, is_element=<function issubclass at 0x7ffff680eca0>))
cls = typing.Dict, serialized_obj = {'name': 'Fred'}
@curry
def deserialize(self, cls, serialized_obj):
"""
Attempt to deserialize serialized object as given type
"""
try:
> deserialization_func = self.deserialization_functions[cls]
dataclasses_serialization/serializer_base/serializer.py:62:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = RefinementDict(lookup={<class 'dict'>: <function <lambda> at 0x7ffff6722310>, <class 'list'>: <function <lambda> at 0x...x7ffff680eca0>), is_subset=<function issubclass at 0x7ffff680eca0>, is_element=<function issubclass at 0x7ffff680eca0>)
key = typing.Dict
def __getitem__(self, key):
for order in self.dependency_orders:
ancestors = {st for st in order if self.is_element(key, st)}
if len(ancestors) > 1:
raise AmbiguousKeyError(f"{key!r} in all of {ancestors!r}")
if ancestors:
return self.lookup[ancestors.pop()]
if self.fallback is not None:
> return self.fallback[key]
dataclasses_serialization/serializer_base/refinement_dict.py:63:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = RefinementDict(lookup={<function dataclass at 0x7ffff697cca0>: <function dict_to_dataclass at 0x7ffff68d9670>, typing...., fallback=None, is_subset=<function issubclass at 0x7ffff680eca0>, is_element=<function issubclass at 0x7ffff680eca0>)
key = typing.Dict
def __getitem__(self, key):
for order in self.dependency_orders:
ancestors = {st for st in order if self.is_element(key, st)}
if len(ancestors) > 1:
raise AmbiguousKeyError(f"{key!r} in all of {ancestors!r}")
if ancestors:
return self.lookup[ancestors.pop()]
if self.fallback is not None:
return self.fallback[key]
> raise KeyError(f"{key!r}")
E KeyError: 'typing.Dict'
dataclasses_serialization/serializer_base/refinement_dict.py:65: KeyError
During handling of the above exception, another exception occurred:
self = <tests.test_json.TestJSON testMethod=test_json_serialization_types>
def test_json_serialization_types(self):
test_cases = [
(int, 1, 1),
(float, 1.0, 1.0),
(str, "Fred", "Fred"),
(bool, True, True),
(dict, {'name': "Fred"}, {'name': "Fred"}),
(Dict, {'name': "Fred"}, {'name': "Fred"}),
(Dict[str, Person], {'abc123': Person("Fred")}, {'abc123': {'name': "Fred"}}),
(list, [{'name': "Fred"}], [{'name': "Fred"}]),
(List, [{'name': "Fred"}], [{'name': "Fred"}]),
(List[Person], [Person("Fred")], [{'name': "Fred"}]),
(Union[int, Person], 1, 1),
(Union[int, Person], Person("Fred"), {'name': "Fred"}),
(Union[Song, Person], Person("Fred"), {'name': "Fred"}),
(type(None), None, None)
]
for type_, obj, serialized_obj in test_cases:
with self.subTest("Serialize object", obj=obj):
self.assertEqual(serialized_obj, JSONSerializer.serialize(obj))
with self.subTest("Deserialize object", obj=obj):
> self.assertEqual(obj, JSONSerializer.deserialize(type_, serialized_obj))
tests/test_json.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/nix/store/kpf97qpxp10675aw0kydwf5k7ksindqy-python3.9-toolz-0.11.2/lib/python3.9/site-packages/toolz/functoolz.py:306: in __call__
return self._partial(*args, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = Serializer(serialization_functions=RefinementDict(lookup={<class 'dict'>: <function <lambda> at 0x7ffff67221f0>, <clas...7ffff680eca0>), is_subset=<function issubclass at 0x7ffff680eca0>, is_element=<function issubclass at 0x7ffff680eca0>))
cls = typing.Dict, serialized_obj = {'name': 'Fred'}
@curry
def deserialize(self, cls, serialized_obj):
"""
Attempt to deserialize serialized object as given type
"""
try:
deserialization_func = self.deserialization_functions[cls]
except KeyError:
> raise DeserializationError("Cannot deserialize type {}".format(cls))
E dataclasses_serialization.serializer_base.errors.DeserializationError: Cannot deserialize type typing.Dict
dataclasses_serialization/serializer_base/serializer.py:64: DeserializationError