Syntax error in generated stub when using dataclass #15966
Copy link
Copy link
Closed
Labels
Description
Bug Report
Stubgen generates an output file with a syntax error.
It generates def __mypy-replace which is invalid python syntax because of the dash.
To Reproduce
With the following python code, generate a stub including the --include-private flag.
stubgen --include-private test.py
from dataclasses import dataclass
@dataclass
class MyDataClass:
foo: str
bar: intExpected Behavior
The stub is generated without syntax errors.
Actual Behavior
A syntax error is raised when parsing the file:
File "out/test.pyi", line 5
def __mypy-replace(*, foo, bar) -> None: ...
^
SyntaxError: invalid syntax
When I generate the file without --include-private than the stub is generated correctly.
Your Environment
- Mypy version used: 1.5.1
- Python version used: 3.11.4
Extra info
Also see KapJI/homeassistant-stubs#349 where this issue was raised.
These stubs are used in custom Home Assistant components, and currently this is broken.
Reactions are currently unavailable
Activity
JelleZijlstra commentedon Aug 26, 2023
cf. #15689 which fixed a similar bug in stubtest
hamdanal commentedon Aug 26, 2023
This is also fixed by #15625 which is functional
but still waiting on an answer on how to test a dataclass with a_: dataclasses.KW_ONLYfield on pythons <3.10stubgen: generate valid dataclass stubs (#15625)