diff options
author | Marc Mueller <30130371+cdce8p@users.noreply.github.com> | 2023-04-24 10:57:36 +0200 |
---|---|---|
committer | Marc Mueller <30130371+cdce8p@users.noreply.github.com> | 2023-04-24 10:57:36 +0200 |
commit | c9da8f3e5874e0169ec9ebb26836d65573fa4ae4 (patch) | |
tree | 8b0e53ab967de68e5088882d05bd9871a052654d /astroid | |
parent | 65670d74cd28fa63aa7418272b04140daec13322 (diff) | |
parent | 420a59a7da81828e982fabfd34e1533ffddf6400 (diff) | |
download | astroid-git-c9da8f3e5874e0169ec9ebb26836d65573fa4ae4.tar.gz |
Merge branch 'maintenance/2.15.x' into main
Diffstat (limited to 'astroid')
-rw-r--r-- | astroid/__init__.py | 1 | ||||
-rw-r--r-- | astroid/node_classes.py | 1 | ||||
-rw-r--r-- | astroid/nodes/__init__.py | 2 | ||||
-rw-r--r-- | astroid/nodes/as_string.py | 22 | ||||
-rw-r--r-- | astroid/nodes/node_ng.py | 2 | ||||
-rw-r--r-- | astroid/rebuilder.py | 6 |
6 files changed, 30 insertions, 4 deletions
diff --git a/astroid/__init__.py b/astroid/__init__.py index 6711563a..d1251191 100644 --- a/astroid/__init__.py +++ b/astroid/__init__.py @@ -163,6 +163,7 @@ from astroid.nodes import ( # pylint: disable=redefined-builtin (Ellipsis) Subscript, TryExcept, TryFinally, + TryStar, Tuple, UnaryOp, Unknown, diff --git a/astroid/node_classes.py b/astroid/node_classes.py index de375917..fecb006e 100644 --- a/astroid/node_classes.py +++ b/astroid/node_classes.py @@ -76,6 +76,7 @@ from astroid.nodes.node_classes import ( # pylint: disable=redefined-builtin (E Subscript, TryExcept, TryFinally, + TryStar, Tuple, UnaryOp, Unknown, diff --git a/astroid/nodes/__init__.py b/astroid/nodes/__init__.py index 9b75ee65..d67c6a5b 100644 --- a/astroid/nodes/__init__.py +++ b/astroid/nodes/__init__.py @@ -197,6 +197,7 @@ ALL_NODE_CLASSES = ( Subscript, TryExcept, TryFinally, + TryStar, Tuple, UnaryOp, Unknown, @@ -291,6 +292,7 @@ __all__ = ( "Subscript", "TryExcept", "TryFinally", + "TryStar", "Tuple", "UnaryOp", "Unknown", diff --git a/astroid/nodes/as_string.py b/astroid/nodes/as_string.py index 48d933c7..49ef1b77 100644 --- a/astroid/nodes/as_string.py +++ b/astroid/nodes/as_string.py @@ -9,6 +9,8 @@ from __future__ import annotations from collections.abc import Iterator from typing import TYPE_CHECKING +from astroid import nodes + if TYPE_CHECKING: from astroid.nodes import Const from astroid.nodes.node_classes import ( @@ -254,13 +256,16 @@ class AsStringVisitor: return "" def visit_excepthandler(self, node) -> str: + n = "except" + if isinstance(getattr(node, "parent", None), nodes.TryStar): + n = "except*" if node.type: if node.name: - excs = f"except {node.type.accept(self)} as {node.name.accept(self)}" + excs = f"{n} {node.type.accept(self)} as {node.name.accept(self)}" else: - excs = f"except {node.type.accept(self)}" + excs = f"{n} {node.type.accept(self)}" else: - excs = "except" + excs = f"{n}" return f"{excs}:\n{self._stmt_list(node.body)}" def visit_empty(self, node) -> str: @@ -495,6 +500,17 @@ class AsStringVisitor: self._stmt_list(node.body), self._stmt_list(node.finalbody) ) + def visit_trystar(self, node) -> str: + """return an astroid.TryStar node as string""" + trys = [f"try:\n{self._stmt_list(node.body)}"] + for handler in node.handlers: + trys.append(handler.accept(self)) + if node.orelse: + trys.append(f"else:\n{self._stmt_list(node.orelse)}") + if node.finalbody: + trys.append(f"finally:\n{self._stmt_list(node.finalbody)}") + return "\n".join(trys) + def visit_tuple(self, node) -> str: """return an astroid.Tuple node as string""" if len(node.elts) == 1: diff --git a/astroid/nodes/node_ng.py b/astroid/nodes/node_ng.py index bc981b91..41abc451 100644 --- a/astroid/nodes/node_ng.py +++ b/astroid/nodes/node_ng.py @@ -587,7 +587,7 @@ class NodeNG: yield from () def _infer_name(self, frame, name): - # overridden for ImportFrom, Import, Global, TryExcept and Arguments + # overridden for ImportFrom, Import, Global, TryExcept, TryStar and Arguments pass def _infer( diff --git a/astroid/rebuilder.py b/astroid/rebuilder.py index dd5c74f2..64c1c123 100644 --- a/astroid/rebuilder.py +++ b/astroid/rebuilder.py @@ -422,6 +422,12 @@ class TreeRebuilder: ) -> nodes.TryExcept | nodes.TryFinally: ... + if sys.version_info >= (3, 11): + + @overload + def visit(self, node: ast.TryStar, parent: NodeNG) -> nodes.TryStar: + ... + @overload def visit(self, node: ast.Tuple, parent: NodeNG) -> nodes.Tuple: ... |