[Python-checkins] [3.12] gh-90015: Document that PEP-604 unions do not support forward references (GH-105366) (#105460)
AlexWaygood
webhook-mailer at python.org
Wed Jun 7 14:28:44 EDT 2023
https://github.com/python/cpython/commit/4eadfb1c1a035970905b00263db8d9bd277098fc
commit: 4eadfb1c1a035970905b00263db8d9bd277098fc
branch: 3.12
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: AlexWaygood <Alex.Waygood at Gmail.com>
date: 2023-06-07T19:11:48+01:00
summary:
[3.12] gh-90015: Document that PEP-604 unions do not support forward references (GH-105366) (#105460)
gh-90015: Document that PEP-604 unions do not support forward references (GH-105366)
(cherry picked from commit fbdee000de47ae96fbf53ce8908e8efbb23cfba4)
Co-authored-by: Alex Waygood <Alex.Waygood at Gmail.com>
files:
M Doc/library/stdtypes.rst
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index fdef5314b9a4..0caa725f75e6 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -5162,6 +5162,14 @@ enables cleaner type hinting syntax compared to :data:`typing.Union`.
def square(number: int | float) -> int | float:
return number ** 2
+ .. note::
+
+ The ``|`` operand cannot be used at runtime to define unions where one or
+ more members is a forward reference. For example, ``int | "Foo"``, where
+ ``"Foo"`` is a reference to a class not yet defined, will fail at
+ runtime. For unions which include forward references, present the
+ whole expression as a string, e.g. ``"int | Foo"``.
+
.. describe:: union_object == other
Union objects can be tested for equality with other union objects. Details:
More information about the Python-checkins
mailing list