]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-42669: Document that `except` rejects nested tuples (GH-23822)
authorColin Watson <cjwatson@debian.org>
Sun, 20 Dec 2020 18:24:10 +0000 (18:24 +0000)
committerGitHub <noreply@github.com>
Sun, 20 Dec 2020 18:24:10 +0000 (10:24 -0800)
In Python 2, it was possible to use `except` with a nested tuple, and occasionally natural.  For example, `zope.formlib.interfaces.InputErrors` is a tuple of several exception classes, and one might reasonably think to do something like this:

    try:
        self.getInputValue()
        return True
    except (InputErrors, SomethingElse):
        return False

As of Python 3.0, this raises `TypeError: catching classes that do not inherit from BaseException is not allowed` instead: one must instead either break it up into multiple `except` clauses or flatten the tuple.  However, the reference documentation was never updated to match this new restriction.  Make it clear that the definition is no longer recursive.

Automerge-Triggered-By: GH:ericvsmith
Doc/reference/compound_stmts.rst
Misc/ACKS

index a55aacccc16dfe59e42c352479400b4afacf1f61..8da74c79801be9d9126200a7b9cd7e523ee23644 100644 (file)
@@ -254,7 +254,8 @@ present, must be last; it matches any exception.  For an except clause with an
 expression, that expression is evaluated, and the clause matches the exception
 if the resulting object is "compatible" with the exception.  An object is
 compatible with an exception if it is the class or a base class of the exception
-object or a tuple containing an item compatible with the exception.
+object, or a tuple containing an item that is the class or a base class of
+the exception object.
 
 If no except clause matches the exception, the search for an exception handler
 continues in the surrounding code and on the invocation stack.  [#]_
index 381aed1009c1ae961a94ea3e70920b0393352558..80e51f93e3aa93511a7b50e0492089dce07a8427 100644 (file)
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1849,6 +1849,7 @@ Zachary Ware
 Barry Warsaw
 Steve Waterbury
 Bob Watson
+Colin Watson
 David Watson
 Aaron Watters
 Henrik Weber