https://github.com/python/cpython/commit/0c36c37841a66ebfcf1686777b76e7407efbe3ca
commit: 0c36c37841a66ebfcf1686777b76e7407efbe3ca
branch: 3.12
author: Miss Islington (bot) <[email protected]>
committer: sobolevn <[email protected]>
date: 2024-09-24T13:52:27Z
summary:

[3.12] gh-124120: Document `Annotated.__origin__` (GH-124125) (#124417)

gh-124120: Document `Annotated.__origin__` (GH-124125)
(cherry picked from commit faef3fa653f2901cc905f98eae0ddcd8dc334d33)

Co-authored-by: sobolevn <[email protected]>
Co-authored-by: Brian Schubert <[email protected]>
Co-authored-by: Alex Waygood <[email protected]>

files:
M Doc/library/typing.rst

diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst
index bb49093505278c..7f86b550b915b6 100644
--- a/Doc/library/typing.rst
+++ b/Doc/library/typing.rst
@@ -1405,6 +1405,23 @@ These can be used as types in annotations. They all 
support subscription using
         >>> X.__metadata__
         ('very', 'important', 'metadata')
 
+   * At runtime, if you want to retrieve the original
+     type wrapped by ``Annotated``, use the :attr:`!__origin__` attribute:
+
+     .. doctest::
+
+        >>> from typing import Annotated, get_origin
+        >>> Password = Annotated[str, "secret"]
+        >>> Password.__origin__
+        <class 'str'>
+
+     Note that using :func:`get_origin` will return ``Annotated`` itself:
+
+     .. doctest::
+
+        >>> get_origin(Password)
+        <class 'typing.Annotated'>
+
    .. seealso::
 
       :pep:`593` - Flexible function and variable annotations
@@ -3010,6 +3027,7 @@ Introspection helpers
       assert get_origin(str) is None
       assert get_origin(Dict[str, int]) is dict
       assert get_origin(Union[int, str]) is Union
+      assert get_origin(Annotated[str, "metadata"]) is Annotated
       P = ParamSpec('P')
       assert get_origin(P.args) is P
       assert get_origin(P.kwargs) is P

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to