Skip to content

Support correct __post_init__ signatures for dataclasses #15498

Closed
@sobolevn

Description

@sobolevn

Feature

Right now mypy does not support proper __post_init__ signatures.
For example:

import dataclasses

@dataclasses.dataclass
class My:
    x: int
    y: dataclasses.InitVar[str] = 'a'

For now, mypy will allow a lot of incorrect code to slip in:

  • def __post_init__(self, y: str) -> str: ..., which needs to return None
  • def __post_init__(self, y: int) -> None: ..., which has incorrect type for y
  • def __post_init__(self) -> None: ..., which has no y
  • def __post_init__(self, x: int, y: str) -> None: ..., which has extra x param

Pitch

We can easily support this feature and make sure that __post_init__ signature is always correct for a dataclass.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions