Skip to content

Syntax error in generated stub when using dataclass #15966

@bramstroker

Description

@bramstroker

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: int

Expected 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.

Activity

JelleZijlstra

JelleZijlstra commented on Aug 26, 2023

@JelleZijlstra
Member

cf. #15689 which fixed a similar bug in stubtest

hamdanal

hamdanal commented on Aug 26, 2023

@hamdanal
Collaborator

cf. #15689 which fixed a similar bug in stubtest

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_ONLY field on pythons <3.10

added a commit that references this issue on Sep 15, 2023
2bbc42f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @JelleZijlstra@bramstroker@hamdanal

      Issue actions

        Syntax error in generated stub when using dataclass · Issue #15966 · python/mypy