[New-bugs-announce] [issue44799] typing.get_type_hints() raises TypeError for a variable annotated by dataclasses.InitVar
Komiya Takeshi
report at bugs.python.org
Sat Jul 31 13:19:44 EDT 2021
New submission from Komiya Takeshi <i.tkomiya at gmail.com>:
I found `typing.get_type_hints()` raises TypeError for a variable annotated by `dataclasses.InitVar` when lazy annotations evaluation-feature is enabled (a.k.a `__future__.annotations`).
```
$ cat test.py
from __future__ import annotations
from dataclasses import dataclass, InitVar
from typing import get_type_hints
@dataclass
class Foo:
attr: InitVar[int]
get_type_hints(Foo)
```
```
$ python -V
Python 3.9.6
$ python test.py
Traceback (most recent call last):
File "/Users/tkomiya/work/sphinx/test.py", line 10, in <module>
get_type_hints(Foo)
File "/Users/tkomiya/.pyenv/versions/3.9.6/lib/python3.9/typing.py", line 1424, in get_type_hints
value = _eval_type(value, base_globals, localns)
File "/Users/tkomiya/.pyenv/versions/3.9.6/lib/python3.9/typing.py", line 290, in _eval_type
return t._evaluate(globalns, localns, recursive_guard)
File "/Users/tkomiya/.pyenv/versions/3.9.6/lib/python3.9/typing.py", line 545, in _evaluate
type_ =_type_check(
File "/Users/tkomiya/.pyenv/versions/3.9.6/lib/python3.9/typing.py", line 164, in _type_check
raise TypeError(f"{msg} Got {arg!r:.100}.")
TypeError: Forward references must evaluate to types. Got dataclasses.InitVar[int].
```
It goes well if lazy annotations evaluation is disabled.
----------
components: Library (Lib)
messages: 398650
nosy: tkomiya
priority: normal
severity: normal
status: open
title: typing.get_type_hints() raises TypeError for a variable annotated by dataclasses.InitVar
versions: Python 3.10, Python 3.8, Python 3.9
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue44799>
_______________________________________
More information about the New-bugs-announce
mailing list