-
-
Notifications
You must be signed in to change notification settings - Fork 30k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dataclass transform should ignore TypeAlias variables #91322
Comments
The dataclass transformation ignores attributes that are annotated as ClassVar. I think it should also ignore attributes that are annotated as TypeAlias. Specifically, I have this usecase in mind: class RunMode(Enum):
release = auto()
debug = auto()
@dataclass
class Run:
Mode: TypeAlias = RunMode
mode: Mode = Mode.release |
From a typing perspective this is reasonable. See this thread about type aliases in class scopes: https://mail.python.org/archives/list/typing-sig@python.org/thread/CGOO7GPPECGMLFDUDXSSXTRADI4BXYCS/ However, it's a niche use case and we could decide that we don't want to further complicate the annotation parsing in dataclasses.py. |
I think implementing this would add complexity to the code in dataclasses.py (though Eric's the expert!). For your use case, is it essential that the type alias declaration be inside the class scope? Would it be possible for you to simply have the alias declaration in the global scope instead? |
Same question as Alex: what does the TypeAlias being inside the class offer that being at module level doesn't? |
There is of course no hard reason for not using the global scope. I just often have enums (or other types) that are very closely linked to one class. And it makes sense to me then to have a TypeAlias in that class so that I don't have to import the enum separately. For normal classes, the nested TypeAlias works completely fine in the type checkers I tested (pyright and mypy). It's just dataclasses that are the problem. But I see now that there is a general wish to keep the implementation of dataclass simple, which I can understand. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: