summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_ast/utils.py
diff options
context:
space:
mode:
authorKirill Podoprigora <kirill.bast9@mail.ru>2024-07-29 14:16:46 (GMT)
committerGitHub <noreply@github.com>2024-07-29 14:16:46 (GMT)
commitb5e8b10de79916f54ec3a2110a5ba85560fd403b (patch)
tree932e1aa253bd25c9547bbca565b267fced2e76cb /Lib/test/test_ast/utils.py
parentc26dd270f7c7301636b23d70afaaeabb2f52eedf (diff)
downloadcpython-b5e8b10de79916f54ec3a2110a5ba85560fd403b.zip
cpython-b5e8b10de79916f54ec3a2110a5ba85560fd403b.tar.gz
cpython-b5e8b10de79916f54ec3a2110a5ba85560fd403b.tar.bz2
[3.13] gh-122292: Split up ``Lib/test/test_ast.py`` into a couple of … (#122393)
[3.13] gh-122292: Split up ``Lib/test/test_ast.py`` into a couple of files (GH-122293) (cherry picked from commit 9187484dd97f6beb94fc17676014706922e380e1)
Diffstat (limited to 'Lib/test/test_ast/utils.py')
-rw-r--r--Lib/test/test_ast/utils.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/Lib/test/test_ast/utils.py b/Lib/test/test_ast/utils.py
new file mode 100644
index 0000000..145e89e
--- /dev/null
+++ b/Lib/test/test_ast/utils.py
@@ -0,0 +1,15 @@
+def to_tuple(t):
+ if t is None or isinstance(t, (str, int, complex, float, bytes)) or t is Ellipsis:
+ return t
+ elif isinstance(t, list):
+ return [to_tuple(e) for e in t]
+ result = [t.__class__.__name__]
+ if hasattr(t, 'lineno') and hasattr(t, 'col_offset'):
+ result.append((t.lineno, t.col_offset))
+ if hasattr(t, 'end_lineno') and hasattr(t, 'end_col_offset'):
+ result[-1] += (t.end_lineno, t.end_col_offset)
+ if t._fields is None:
+ return tuple(result)
+ for f in t._fields:
+ result.append(to_tuple(getattr(t, f)))
+ return tuple(result)