-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Recursively unpack Literal
values if using PEP 695 type aliases
#11114
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
Conversation
Deploying pydantic-docs with
|
Latest commit: |
fde4552
|
Status: | ✅ Deploy successful! |
Preview URL: | https://76e0a2d4.pydantic-docs.pages.dev |
Branch Preview URL: | https://literal-type-aliases.pydantic-docs.pages.dev |
CodSpeed Performance ReportMerging #11114 will not alter performanceComparing Summary
|
Coverage reportClick to see where and how coverage changed
This report was generated by python-coverage-comment-action |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice work, thanks!!
pydantic/_internal/_typing_extra.py
Outdated
# Note: we could also check for generic aliases with a type alias as an origin. | ||
# However, it is very unlikely that this happens as type variables can't appear in | ||
# `Literal` forms, so the only valid (but unnecessary) use case would be something like: | ||
# `type Test[T] = Literal['a']` (and then use `Test[int]`). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you mean to use a str literal here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, if you do:
type Test[T] = Literal['whatever']
MyLit = Literal[Test[int]]
MyLit.__args__[0]
is a GenericAlias
instance, and here we only check for is_type_alias_type
. But as I mentioned in the comment it is very unlikely to encounter such use cases, as it is not necessary (the type variable is useless here as you can't do something like type Test[T] = Literal[T]
).
cc3186a
to
b2f4844
Compare
b2f4844
to
fde4552
Compare
Change Summary
Fixes #9269.
Related issue number
Checklist