Wojciech Łopata <[email protected]> added the comment:
> Isn't that the entire point of "from __future__ import annotations"?
I'm not complaining about Foo.__annotations__ storing strings instead of types.
I'm complaining about dataclass.Field.type being a string instead of type. I
don't think the former needs to imply the latter. I'm trying to access Field
objects at runtime, when it should already be possible to resolve the types, as
far as I understand.
> Also, please show the traceback when reporting errors so that I can see
> what's going on.
That's the error I get trying to use dataclasses_serialization module:
$ cat test.py
from __future__ import annotations
from dataclasses import dataclass
from dataclasses_serialization.json import JSONSerializer
@dataclass
class Foo:
x: int
JSONSerializer.deserialize(Foo, {'x': 42})
$ python3 test.py
Traceback (most recent call last):
File
"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/dataclasses_serialization/serializer_base.py",
line 125, in dict_to_dataclass
for fld, fld_type in zip(flds, fld_types)
File
"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/dataclasses_serialization/serializer_base.py",
line 126, in <dictcomp>
if fld.name in dct
File
"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/toolz/functoolz.py",
line 303, in __call__
return self._partial(*args, **kwargs)
File
"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/dataclasses_serialization/serializer_base.py",
line 234, in deserialize
if issubclass(cls, type_):
File
"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/dataclasses_serialization/serializer_base.py",
line 72, in issubclass
return original_issubclass(cls, classinfo)
TypeError: issubclass() arg 1 must be a class
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "test.py", line 9, in <module>
JSONSerializer.deserialize(Foo, {'x': 42})
File
"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/toolz/functoolz.py",
line 303, in __call__
return self._partial(*args, **kwargs)
File
"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/dataclasses_serialization/serializer_base.py",
line 238, in deserialize
return self.deserialization_functions[dataclass](cls, serialized_obj)
File
"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/toolz/functoolz.py",
line 303, in __call__
return self._partial(*args, **kwargs)
File
"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/dataclasses_serialization/serializer_base.py",
line 131, in dict_to_dataclass
cls
dataclasses_serialization.serializer_base.DeserializationError: Missing one or
more required fields to deserialize {'x': 42} as <class '__main__.Foo'>
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue39442>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com