New submission from Wojciech Łopata <[email protected]>:
I've checked this behaviour under Python 3.7.5 and 3.8.1.
```
from __future__ import annotations
from dataclasses import dataclass, fields
@dataclass
class Foo:
x: int
print(fields(Foo)[0].type)
```
With annotations imported, the `type` field of Field class becomes a string
with a name of a type, and the program outputs 'int'.
Without annotations, the `type` field of Field class is a type, and the program
outputs <class 'int'>.
I found this out when using dataclasses_serialization module. Following code
works fine when we remove import of annotations:
```
from __future__ import annotations
from dataclasses import dataclass
from dataclasses_serialization.json import JSONSerializer
@dataclass
class Foo:
x: int
JSONSerializer.deserialize(Foo, {'x': 42})
```
TypeError: issubclass() arg 1 must be a class
----------
components: Library (Lib)
messages: 360611
nosy: lopek
priority: normal
severity: normal
status: open
title: from __future__ import annotations breaks dataclasses.Field.type
type: behavior
versions: Python 3.7, Python 3.8
_______________________________________
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