From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Wed, 7 Jun 2023 18:11:33 +0000 (-0700) Subject: [3.11] gh-90015: Document that PEP-604 unions do not support forward references ... X-Git-Tag: v3.11.5~319 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=40d1d28b0729e9c1be21796565821fbbc0f92fdb;p=thirdparty%2FPython%2Fcpython.git [3.11] gh-90015: Document that PEP-604 unions do not support forward references (GH-105366) (#105461) gh-90015: Document that PEP-604 unions do not support forward references (GH-105366) (cherry picked from commit fbdee000de47ae96fbf53ce8908e8efbb23cfba4) Co-authored-by: Alex Waygood --- diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index 12f2fe9e2e89..a5b319dd62c3 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -5109,6 +5109,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: