[ty] Enums: allow multiple aliases to point to the same member (#20669)

## Summary

closes https://github.com/astral-sh/ty/issues/1293

## Test Plan

Regression test
This commit is contained in:
David Peter 2025-10-01 15:51:53 +02:00 committed by GitHub
parent 963bc8c228
commit 56d630e303
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 45 additions and 3 deletions

View file

@ -265,6 +265,41 @@ reveal_type(enum_members(Color))
reveal_type(Color.red)
```
Multiple aliases to the same member are also supported. This is a regression test for
<https://github.com/astral-sh/ty/issues/1293>:
```py
from ty_extensions import enum_members
class ManyAliases(Enum):
real_member = "real_member"
alias1 = "real_member"
alias2 = "real_member"
alias3 = "real_member"
other_member = "other_real_member"
# revealed: tuple[Literal["real_member"], Literal["other_member"]]
reveal_type(enum_members(ManyAliases))
reveal_type(ManyAliases.real_member) # revealed: Literal[ManyAliases.real_member]
reveal_type(ManyAliases.alias1) # revealed: Literal[ManyAliases.real_member]
reveal_type(ManyAliases.alias2) # revealed: Literal[ManyAliases.real_member]
reveal_type(ManyAliases.alias3) # revealed: Literal[ManyAliases.real_member]
reveal_type(ManyAliases.real_member.value) # revealed: Literal["real_member"]
reveal_type(ManyAliases.real_member.name) # revealed: Literal["real_member"]
reveal_type(ManyAliases.alias1.value) # revealed: Literal["real_member"]
reveal_type(ManyAliases.alias1.name) # revealed: Literal["real_member"]
reveal_type(ManyAliases.alias2.value) # revealed: Literal["real_member"]
reveal_type(ManyAliases.alias2.name) # revealed: Literal["real_member"]
reveal_type(ManyAliases.alias3.value) # revealed: Literal["real_member"]
reveal_type(ManyAliases.alias3.name) # revealed: Literal["real_member"]
```
### Using `auto()`
```toml