8000 Support correct `__post_init__` signatures for dataclasses · Issue #15498 · python/mypy · GitHub
[go: up one dir, main page]

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

    0