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

Reply via email to