summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2024-05-03 13:09:05 (GMT)
committerGitHub <noreply@github.com>2024-05-03 13:09:05 (GMT)
commita7f495c7badd163ebc119d0ef78015dbb57f52b2 (patch)
treea42b056af1464fcaff5e0cb5a4d6186dde0da096 /Doc
parent23ba96e2433d17e86f4770a64b94aaf9ad22a25b (diff)
downloadcpython-a7f495c7badd163ebc119d0ef78015dbb57f52b2.zip
cpython-a7f495c7badd163ebc119d0ef78015dbb57f52b2.tar.gz
cpython-a7f495c7badd163ebc119d0ef78015dbb57f52b2.tar.bz2
[3.12] gh-117492: Clarify documentation of `typing.Never` (GH-117678) (#118547)
(cherry picked from commit 852263e1086748492602a90347ecc0a3925e1dda) Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com> Co-authored-by: Nice Zombies <nineteendo19d0@gmail.com> Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
Diffstat (limited to 'Doc')
-rw-r--r--Doc/library/typing.rst46
1 files changed, 22 insertions, 24 deletions
diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst
index 8523a1d..835cc26 100644
--- a/Doc/library/typing.rst
+++ b/Doc/library/typing.rst
@@ -842,14 +842,25 @@ using ``[]``.
.. versionadded:: 3.11
.. data:: Never
+ NoReturn
- The `bottom type <https://en.wikipedia.org/wiki/Bottom_type>`_,
+ :data:`!Never` and :data:`!NoReturn` represent the
+ `bottom type <https://en.wikipedia.org/wiki/Bottom_type>`_,
a type that has no members.
- This can be used to define a function that should never be
- called, or a function that never returns::
+ They can be used to indicate that a function never returns,
+ such as :func:`sys.exit`::
- from typing import Never
+ from typing import Never # or NoReturn
+
+ def stop() -> Never:
+ raise RuntimeError('no way')
+
+ Or to define a function that should never be
+ called, as there are no valid arguments, such as
+ :func:`assert_never`::
+
+ from typing import Never # or NoReturn
def never_call_me(arg: Never) -> None:
pass
@@ -862,31 +873,18 @@ using ``[]``.
case str():
print("It's a str")
case _:
- never_call_me(arg) # OK, arg is of type Never
-
- .. versionadded:: 3.11
-
- On older Python versions, :data:`NoReturn` may be used to express the
- same concept. ``Never`` was added to make the intended meaning more explicit.
+ never_call_me(arg) # OK, arg is of type Never (or NoReturn)
-.. data:: NoReturn
+ :data:`!Never` and :data:`!NoReturn` have the same meaning in the type system
+ and static type checkers treat both equivalently.
- Special type indicating that a function never returns.
-
- For example::
+ .. versionadded:: 3.6.2
- from typing import NoReturn
+ Added :data:`NoReturn`.
- def stop() -> NoReturn:
- raise RuntimeError('no way')
-
- ``NoReturn`` can also be used as a
- `bottom type <https://en.wikipedia.org/wiki/Bottom_type>`_, a type that
- has no values. Starting in Python 3.11, the :data:`Never` type should
- be used for this concept instead. Type checkers should treat the two
- equivalently.
+ .. versionadded:: 3.11
- .. versionadded:: 3.6.2
+ Added :data:`Never`.
.. data:: Self