gh-97797: Mention __metadata__ in docstrings of typing.{_AnnotatedAlias, Annotated} (#103405)

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
Co-authored-by: Kirill <80244920+Eclips4@users.noreply.github.com>
This commit is contained in:
Nikita Sobolev 2023-04-10 17:57:17 +03:00 committed by GitHub
parent a28e2ce3fb
commit dc604a8c58
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2154,6 +2154,8 @@ class _AnnotatedAlias(_NotIterable, _GenericAlias, _root=True):
with extra annotations. The alias behaves like a normal typing alias, with extra annotations. The alias behaves like a normal typing alias,
instantiating is the same as instantiating the underlying type, binding instantiating is the same as instantiating the underlying type, binding
it to types is also the same. it to types is also the same.
The metadata itself is stored in a '__metadata__' attribute as a tuple.
""" """
def __init__(self, origin, metadata): def __init__(self, origin, metadata):
if isinstance(origin, _AnnotatedAlias): if isinstance(origin, _AnnotatedAlias):
@ -2209,6 +2211,10 @@ class Annotated:
Details: Details:
- It's an error to call `Annotated` with less than two arguments. - It's an error to call `Annotated` with less than two arguments.
- Access the metadata via the ``__metadata__`` attribute::
Annotated[int, '$'].__metadata__ == ('$',)
- Nested Annotated are flattened:: - Nested Annotated are flattened::
Annotated[Annotated[T, Ann1, Ann2], Ann3] == Annotated[T, Ann1, Ann2, Ann3] Annotated[Annotated[T, Ann1, Ann2], Ann3] == Annotated[T, Ann1, Ann2, Ann3]