New submission from Komiya Takeshi <i.tkom...@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 <rep...@bugs.python.org> <https://bugs.python.org/issue44799> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com