[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