[New-bugs-announce] [issue38431] dataclasses.InitVar breaks with typing.Optional
Samuel Colvin
report at bugs.python.org
Thu Oct 10 11:31:02 EDT 2019
New submission from Samuel Colvin <samcolvin at gmail.com>:
The following code works fine with python 3.7 but breaks with 3.8:
```
import dataclasses
from typing import Optional
@dataclasses.dataclass
class TestingDataclass:
base_path: dataclasses.InitVar[Optional[str]] = None
```
Exception traceback:
```
Traceback (most recent call last):
File "test.py", line 6, in <module>
class TestingDataclass:
File "/usr/local/lib/python3.8/dataclasses.py", line 995, in dataclass
return wrap(cls)
File "/usr/local/lib/python3.8/dataclasses.py", line 987, in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash, frozen)
File "/usr/local/lib/python3.8/dataclasses.py", line 967, in _process_class
str(inspect.signature(cls)).replace(' -> None', ''))
File "/usr/local/lib/python3.8/inspect.py", line 3050, in __str__
formatted = str(param)
File "/usr/local/lib/python3.8/inspect.py", line 2568, in __str__
formatannotation(self._annotation))
File "/usr/local/lib/python3.8/inspect.py", line 1202, in formatannotation
return repr(annotation)
File "/usr/local/lib/python3.8/dataclasses.py", line 213, in __repr__
return f'dataclasses.InitVar[{self.type.__name__}]'
File "/usr/local/lib/python3.8/typing.py", line 757, in __getattr__
raise AttributeError(attr)
AttributeError: __name__
```
The code runs fine with `str` instead of `Optional[str]`.
Tested locally with `Python 3.8.0rc1 (tags/v3.8.0rc1:34214de6ab, Oct 10 2019, 16:15:14)`. The same error can be seen (in a more involved context) on travis [here](https://travis-ci.org/samuelcolvin/pydantic/jobs/596131963)
----------
components: Library (Lib)
messages: 354388
nosy: samuelcolvin
priority: normal
severity: normal
status: open
title: dataclasses.InitVar breaks with typing.Optional
type: behavior
versions: Python 3.8
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue38431>
_______________________________________
More information about the New-bugs-announce
mailing list