Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-google-pasta for
openSUSE:Factory checked in at 2021-04-27 21:35:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-google-pasta (Old)
and /work/SRC/openSUSE:Factory/.python-google-pasta.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-google-pasta"
Tue Apr 27 21:35:25 2021 rev:2 rq:888830 version:0.2.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-google-pasta/python-google-pasta.changes
2020-08-10 15:07:07.000285665 +0200
+++
/work/SRC/openSUSE:Factory/.python-google-pasta.new.12324/python-google-pasta.changes
2021-04-27 21:35:57.916112488 +0200
@@ -1,0 +2,6 @@
+Tue Apr 27 14:16:55 UTC 2021 - Mark??ta Machov?? <[email protected]>
+
+- add golden39.patch to add test data for python 3.9
+- add bugfixes fstrings.patch and ast.patch to make the data relevant
+
+-------------------------------------------------------------------
New:
----
ast.patch
fstrings.patch
golden39.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-google-pasta.spec ++++++
--- /var/tmp/diff_new_pack.iv0ZGp/_old 2021-04-27 21:35:58.416113311 +0200
+++ /var/tmp/diff_new_pack.iv0ZGp/_new 2021-04-27 21:35:58.420113317 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-google-pasta
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -24,6 +24,12 @@
License: Apache-2.0
URL: https://github.com/google/pasta/
Source:
https://github.com/google/pasta/archive/v%{version}.tar.gz#/%{packagename}-%{version}.tar.gz
+# PATCH-FIX-UPSTREAM
https://github.com/google/pasta/commit/3451d8b9fb67a2fa3098edd73ea3dba98074d6dd
Add test for ast node support
+Patch0: ast.patch
+# PATCH-FIX-UPSTREAM
https://github.com/google/pasta/commit/6179ebf76faf38430180232d0e86198429afcd33
Bugfix for parsing fstrings in multiple parts
+Patch1: fstrings.patch
+# PATCH-FIX-UPSTREAM
https://github.com/google/pasta/commit/386d94c04e8d10c945ec330debc3a018ed4e91a4
Add test goldens for python 3.9
+Patch2: golden39.patch
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module six}
@@ -38,6 +44,7 @@
%prep
%setup -q -n %{packagename}-%{version}
+%autopatch -p1
%build
%python_build
++++++ ast.patch ++++++
>From 3451d8b9fb67a2fa3098edd73ea3dba98074d6dd Mon Sep 17 00:00:00 2001
From: Nick Smith <[email protected]>
Date: Wed, 18 Mar 2020 13:27:57 -0700
Subject: [PATCH] Add test for ast node support
Checks that there are not ast nodes which are unsupported, by checking
that there is a visit_<Node> function for each node type in the _ast
module.
---
pasta/base/annotate.py | 32 ++++++++++++++++++++
pasta/base/annotate_test.py | 45 ++++++++++++++++++++++++++++
pasta/base/codegen.py | 9 ++++++
testdata/ast/constant.in | 7 +++++
testdata/ast/golden/3.4/constant.out | 9 ++++++
testdata/ast/golden/3.5/constant.out | 9 ++++++
testdata/ast/golden/3.6/constant.out | 9 ++++++
testdata/ast/golden/3.7/constant.out | 9 ++++++
testdata/ast/golden/3.8/constant.out | 9 ++++++
testdata/ast/golden/3.8/ellipsis.out | 4 +--
10 files changed, 140 insertions(+), 2 deletions(-)
create mode 100644 testdata/ast/constant.in
create mode 100644 testdata/ast/golden/3.4/constant.out
create mode 100644 testdata/ast/golden/3.5/constant.out
create mode 100644 testdata/ast/golden/3.6/constant.out
create mode 100644 testdata/ast/golden/3.7/constant.out
create mode 100644 testdata/ast/golden/3.8/constant.out
diff --git a/pasta/base/annotate.py b/pasta/base/annotate.py
index af2a55a..5b53c76 100644
--- a/pasta/base/annotate.py
+++ b/pasta/base/annotate.py
@@ -23,6 +23,7 @@
import contextlib
import functools
import itertools
+import numbers
import six
from six.moves import zip
import sys
@@ -849,6 +850,27 @@ def visit_Compare(self, node):
self.attr(node, 'op_suffix_%d' % i, [self.ws], default=' ')
self.visit(comparator)
+ @expression
+ def visit_Constant(self, node):
+ if hasattr(node, 'kind') and node.kind:
+ self.attr(node, 'content', [self.tokens.str],
+ default='%s"%s"' % (node.kind, node.value), deps=('value',))
+ elif isinstance(node.value, bool):
+ self.attr(node, 'content', [str(node.value)], default=str(node.value),
+ deps=('value',))
+ elif node.value is Ellipsis:
+ self.token('...')
+ elif isinstance(node.value, numbers.Number):
+ token_number_type = token_generator.TOKENS.NUMBER
+ self.attr(node, 'content',
+ [lambda: self.tokens.next_of_type(token_number_type).src],
+ deps=('value',), default=str(node.value))
+ elif isinstance(node.value, six.text_type) or isinstance(node.value,
bytes):
+ self.attr(node, 'content', [self.tokens.str], deps=('value',),
+ default=node.value)
+ else:
+ self.token(str(node.value))
+
@expression
def visit_Dict(self, node):
self.token('{')
@@ -988,6 +1010,12 @@ def visit_UnaryOp(self, node):
def visit_Ellipsis(self, node):
self.token('...')
+ def visit_And(self, node):
+ self.token(ast_constants.NODE_TYPE_TO_TOKENS[type(node)][0])
+
+ def visit_Or(self, node):
+ self.token(ast_constants.NODE_TYPE_TO_TOKENS[type(node)][0])
+
def visit_Add(self, node):
self.token(ast_constants.NODE_TYPE_TO_TOKENS[type(node)][0])
@@ -1000,6 +1028,9 @@ def visit_Mult(self, node):
def visit_Div(self, node):
self.token(ast_constants.NODE_TYPE_TO_TOKENS[type(node)][0])
+ def visit_MatMult(self, node):
+ self.token(ast_constants.NODE_TYPE_TO_TOKENS[type(node)][0])
+
def visit_Mod(self, node):
self.token(ast_constants.NODE_TYPE_TO_TOKENS[type(node)][0])
@@ -1389,6 +1420,7 @@ def token(self, token_val):
"""Parse a single token with exactly the given value."""
token = self.tokens.next()
if token.src != token_val:
+ print(type(token.src), type(token_val))
raise AnnotationError("Expected %r but found %r\nline %d: %s" % (
token_val, token.src, token.start[0], token.line))
diff --git a/pasta/base/annotate_test.py b/pasta/base/annotate_test.py
index 44c969f..cfc251d 100644
--- a/pasta/base/annotate_test.py
+++ b/pasta/base/annotate_test.py
@@ -18,8 +18,10 @@
from __future__ import division
from __future__ import print_function
+import _ast
import ast
import difflib
+import inspect
import itertools
import os.path
from six import with_metaclass
@@ -452,6 +454,48 @@ def test_fstring_escaping(self):
'f"a {{{__pasta_fstring_val_0__} {{c}}"')
+
+class VersionSupportTest(test_utils.TestCase):
+
+ def test_all_ast_nodes_supported(self):
+ functions = inspect.getmembers(annotate.AstAnnotator)
+ handled_nodes = {name[6:] for name, _ in functions
+ if name.startswith('visit_')}
+
+ def should_ignore_type(n):
+ if not issubclass(n, _ast.AST):
+ return True
+ # Expression contexts are not visited since the have no formatting
+ if hasattr(_ast, 'expr_context') and issubclass(n, _ast.expr_context):
+ return True
+ return False
+
+ ast_nodes = {
+ name for name, member in inspect.getmembers(_ast, inspect.isclass)
+ if not should_ignore_type(member)
+ }
+ ignored_nodes = {
+ 'AST',
+ 'Expression',
+ 'FunctionType',
+ 'Interactive',
+ 'MatMult',
+ 'Suite',
+ 'TypeIgnore', # TODO: Support syntax for this?
+ 'boolop',
+ 'cmpop',
+ 'excepthandler',
+ 'expr',
+ 'mod',
+ 'operator',
+ 'slice',
+ 'stmt',
+ 'type_ignore',
+ 'unaryop',
+ }
+ self.assertEqual(set(), ast_nodes - handled_nodes - ignored_nodes)
+
+
def _get_diff(before, after):
return difflib.ndiff(after.splitlines(), before.splitlines())
@@ -463,6 +507,7 @@ def suite():
result.addTests(unittest.makeSuite(PrefixSuffixTest))
result.addTests(unittest.makeSuite(PrefixSuffixGoldenTest))
result.addTests(unittest.makeSuite(FstringTest))
+ result.addTests(unittest.makeSuite(VersionSupportTest))
return result
diff --git a/pasta/base/codegen.py b/pasta/base/codegen.py
index dfc74aa..dfdff1a 100644
--- a/pasta/base/codegen.py
+++ b/pasta/base/codegen.py
@@ -88,6 +88,15 @@ def visit_Bytes(self, node):
self.code += content if content is not None else repr(node.s)
self.suffix(node)
+ def visit_Constant(self, node):
+ self.prefix(node)
+ if node.value is Ellipsis:
+ content = '...'
+ else:
+ content = fmt.get(node, 'content')
+ self.code += content if content is not None else repr(node.s)
+ self.suffix(node)
+
def token(self, value):
self.code += value
diff --git a/testdata/ast/constant.in b/testdata/ast/constant.in
new file mode 100644
index 0000000..e801e03
--- /dev/null
+++ b/testdata/ast/constant.in
@@ -0,0 +1,7 @@
+None
+
+...
+
+u"None"
+
+u"..."
diff --git a/testdata/ast/golden/3.4/constant.out
b/testdata/ast/golden/3.4/constant.out
new file mode 100644
index 0000000..1a4097f
--- /dev/null
+++ b/testdata/ast/golden/3.4/constant.out
@@ -0,0 +1,9 @@
+(-1, -1) Module prefix=|| suffix=||
indent=||
+(1, 0) Expr prefix=|| suffix=|\n|
indent=||
+(3, 0) Expr prefix=|\n| suffix=||
indent=||
+(5, 0) Expr prefix=|| suffix=|\n|
indent=||
+(7, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(1, 0) NameConstant prefix=|| suffix=||
indent=||
+(3, 0) Ellipsis prefix=|| suffix=|\n\n|
indent=||
+(5, 0) Str prefix=|| suffix=||
indent=||
+(7, 0) Str prefix=|| suffix=||
indent=||
diff --git a/testdata/ast/golden/3.5/constant.out
b/testdata/ast/golden/3.5/constant.out
new file mode 100644
index 0000000..1a4097f
--- /dev/null
+++ b/testdata/ast/golden/3.5/constant.out
@@ -0,0 +1,9 @@
+(-1, -1) Module prefix=|| suffix=||
indent=||
+(1, 0) Expr prefix=|| suffix=|\n|
indent=||
+(3, 0) Expr prefix=|\n| suffix=||
indent=||
+(5, 0) Expr prefix=|| suffix=|\n|
indent=||
+(7, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(1, 0) NameConstant prefix=|| suffix=||
indent=||
+(3, 0) Ellipsis prefix=|| suffix=|\n\n|
indent=||
+(5, 0) Str prefix=|| suffix=||
indent=||
+(7, 0) Str prefix=|| suffix=||
indent=||
diff --git a/testdata/ast/golden/3.6/constant.out
b/testdata/ast/golden/3.6/constant.out
new file mode 100644
index 0000000..1a4097f
--- /dev/null
+++ b/testdata/ast/golden/3.6/constant.out
@@ -0,0 +1,9 @@
+(-1, -1) Module prefix=|| suffix=||
indent=||
+(1, 0) Expr prefix=|| suffix=|\n|
indent=||
+(3, 0) Expr prefix=|\n| suffix=||
indent=||
+(5, 0) Expr prefix=|| suffix=|\n|
indent=||
+(7, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(1, 0) NameConstant prefix=|| suffix=||
indent=||
+(3, 0) Ellipsis prefix=|| suffix=|\n\n|
indent=||
+(5, 0) Str prefix=|| suffix=||
indent=||
+(7, 0) Str prefix=|| suffix=||
indent=||
diff --git a/testdata/ast/golden/3.7/constant.out
b/testdata/ast/golden/3.7/constant.out
new file mode 100644
index 0000000..1a4097f
--- /dev/null
+++ b/testdata/ast/golden/3.7/constant.out
@@ -0,0 +1,9 @@
+(-1, -1) Module prefix=|| suffix=||
indent=||
+(1, 0) Expr prefix=|| suffix=|\n|
indent=||
+(3, 0) Expr prefix=|\n| suffix=||
indent=||
+(5, 0) Expr prefix=|| suffix=|\n|
indent=||
+(7, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(1, 0) NameConstant prefix=|| suffix=||
indent=||
+(3, 0) Ellipsis prefix=|| suffix=|\n\n|
indent=||
+(5, 0) Str prefix=|| suffix=||
indent=||
+(7, 0) Str prefix=|| suffix=||
indent=||
diff --git a/testdata/ast/golden/3.8/constant.out
b/testdata/ast/golden/3.8/constant.out
new file mode 100644
index 0000000..a376053
--- /dev/null
+++ b/testdata/ast/golden/3.8/constant.out
@@ -0,0 +1,9 @@
+(-1, -1) Module prefix=|| suffix=||
indent=||
+(1, 0) Expr prefix=|| suffix=|\n|
indent=||
+(3, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(5, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(7, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(1, 0) Constant prefix=|| suffix=||
indent=||
+(3, 0) Constant prefix=|| suffix=||
indent=||
+(5, 0) Constant prefix=|| suffix=||
indent=||
+(7, 0) Constant prefix=|| suffix=||
indent=||
diff --git a/testdata/ast/golden/3.8/ellipsis.out
b/testdata/ast/golden/3.8/ellipsis.out
index cadaa8e..a8ff894 100644
--- a/testdata/ast/golden/3.8/ellipsis.out
+++ b/testdata/ast/golden/3.8/ellipsis.out
@@ -1,5 +1,5 @@
(-1, -1) Module prefix=|| suffix=||
indent=||
(1, 0) FunctionDef a prefix=|| suffix=||
indent=||
(-1, -1) arguments prefix=|| suffix=||
indent=||
-(2, 2) Expr prefix=| | suffix=||
indent=| |
-(2, 2) Constant prefix=|| suffix=|\n|
indent=| |
+(2, 2) Expr prefix=| | suffix=|\n|
indent=| |
+(2, 2) Constant prefix=|| suffix=||
indent=| |
++++++ fstrings.patch ++++++
>From 6179ebf76faf38430180232d0e86198429afcd33 Mon Sep 17 00:00:00 2001
From: Nick Smith <[email protected]>
Date: Fri, 13 Nov 2020 17:10:49 -0800
Subject: [PATCH] Bugfix for parsing fstrings in multiple parts - fixes #66
---
pasta/base/token_generator.py | 45 +++++++++++++++++++++++++++++
testdata/ast/fstring.in | 10 +++++++
testdata/ast/golden/3.6/fstring.out | 26 +++++++++++++++--
testdata/ast/golden/3.7/fstring.out | 26 +++++++++++++++--
testdata/ast/golden/3.8/fstring.out | 26 +++++++++++++++--
5 files changed, 127 insertions(+), 6 deletions(-)
diff --git a/pasta/base/token_generator.py b/pasta/base/token_generator.py
index 23fe7ed..b58276c 100644
--- a/pasta/base/token_generator.py
+++ b/pasta/base/token_generator.py
@@ -375,10 +375,55 @@ def fstr_eater(tok):
val_idx = 0
i = -1
result = ''
+ in_fstring = False
+ string_quote = None
while i < len(str_content) - 1:
i, c = next(indexed_chars)
result += c
+ # If we haven't actually parsing string content yet, check if a string
+ # (with or without fstring prefix) has started
+ if string_quote is None:
+ if str_content[i:i+4] in ('f"""', "f'''"):
+ string_quote = str_content[i+1:i+4]
+ in_fstring = True
+ elif str_content[i:i+3] in ('"""', "'''"):
+ string_quote = str_content[i:i+3]
+ in_fstring = False
+ elif str_content[i:+2] in ('f"', "f'"):
+ string_quote = str_content[i+1]
+ in_fstring = True
+ elif c in ('"', "'"):
+ string_quote = c
+ in_fstring = False
+ if string_quote:
+ # Skip uneaten quote characters
+ for _ in range(len(string_quote) + (1 if in_fstring else 0) - 1):
+ i, c = next(indexed_chars)
+ result += c
+ continue
+
+ # If we are still not parsing characters in a string, no extra
+ # processing is needed
+ if string_quote is None:
+ continue
+
+ # If we ARE in a string, check if the next characters are the
+ # close-quote for that string
+ if (str_content[i:i+len(string_quote)] == string_quote and
+ str_content[i-1] != '\\'):
+ # Skip uneaten quote characters
+ for _ in range(len(string_quote) - 1):
+ i, c = next(indexed_chars)
+ result += c
+ string_quote = None
+ in_fstring = False
+ continue
+
+ # If we are NOT in an fstring, skip all FormattedValue processing.
+ if not in_fstring:
+ continue
+
# When an open bracket is encountered, start parsing a subexpression
if c == '{':
# First check if this is part of an escape sequence
diff --git a/testdata/ast/fstring.in b/testdata/ast/fstring.in
index 4d81bf7..3b56722 100644
--- a/testdata/ast/fstring.in
+++ b/testdata/ast/fstring.in
@@ -34,3 +34,13 @@ f"""{
l!r: {m} }"""
f"{(a.b).c}"
+
+foo(f"{d}"
+ "{"
+ "}")
+
+(f'e={e}'
+ ' f={f}')
+
+('g={g}'
+ f' h={h}')
diff --git a/testdata/ast/golden/3.6/fstring.out
b/testdata/ast/golden/3.6/fstring.out
index 0ff0ff4..9563e76 100644
--- a/testdata/ast/golden/3.6/fstring.out
+++ b/testdata/ast/golden/3.6/fstring.out
@@ -16,6 +16,9 @@
(31, 0) Expr prefix=|\n| suffix=|\n|
indent=||
(34, -1) Expr prefix=|\n| suffix=|\n|
indent=||
(36, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(38, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(42, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(45, 0) Expr prefix=|\n| suffix=|\n|
indent=||
(1, 0) JoinedStr prefix=|| suffix=||
indent=||
(3, 0) JoinedStr prefix=|| suffix=||
indent=||
(5, 0) JoinedStr prefix=|| suffix=||
indent=||
@@ -33,6 +36,9 @@
(31, 0) JoinedStr prefix=|| suffix=||
indent=||
(34, -1) JoinedStr prefix=|| suffix=||
indent=||
(36, 0) JoinedStr prefix=|| suffix=||
indent=||
+(38, 0) Call prefix=|| suffix=||
indent=||
+(42, 1) JoinedStr prefix=|(| suffix=|)|
indent=||
+(45, 1) JoinedStr prefix=|(| suffix=|)|
indent=||
(1, 0) Str prefix=|| suffix=||
indent=||
(3, 0) FormattedValue prefix=|| suffix=||
indent=||
(5, 0) Str prefix=|| suffix=||
indent=||
@@ -58,6 +64,13 @@
(31, 0) FormattedValue prefix=|| suffix=||
indent=||
(34, -1) FormattedValue prefix=|\n | suffix=||
indent=||
(36, 0) FormattedValue prefix=|| suffix=||
indent=||
+(38, 0) Name foo prefix=|| suffix=||
indent=||
+(38, 4) JoinedStr prefix=|| suffix=||
indent=||
+(42, 1) Str prefix=|| suffix=||
indent=||
+(42, 1) FormattedValue prefix=|| suffix=||
indent=||
+(42, 1) Str prefix=|| suffix=||
indent=||
+(45, 1) Str prefix=|| suffix=||
indent=||
+(45, 1) FormattedValue prefix=|| suffix=||
indent=||
(3, 3) Name b prefix=|| suffix=||
indent=||
(5, 5) Name d prefix=|| suffix=||
indent=||
(7, 5) Name g prefix=|| suffix=||
indent=||
@@ -80,6 +93,11 @@
(34, -1) JoinedStr prefix=|| suffix=| |
indent=||
(36, 4) Attribute c prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
+(38, 4) FormattedValue prefix=|| suffix=||
indent=||
+(38, 4) Str prefix=|| suffix=||
indent=||
+(42, 6) Name e prefix=|| suffix=||
indent=||
+(45, 2) Name h prefix=|| suffix=||
indent=||
+(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
@@ -100,15 +118,18 @@
(29, 0) FormattedValue prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(31, 0) Str prefix=|| suffix=||
indent=||
-(31, 0) FormattedValue prefix=| | suffix=||
indent=||
+(31, 0) FormattedValue prefix=|| suffix=||
indent=||
(31, 0) Str prefix=|| suffix=||
indent=||
-(31, 0) FormattedValue prefix=| | suffix=||
indent=||
+(31, 0) FormattedValue prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(34, -1) Str prefix=|| suffix=||
indent=||
(34, -1) FormattedValue prefix=|| suffix=||
indent=||
(34, -1) Str prefix=|| suffix=||
indent=||
(36, 4) Attribute b prefix=|(| suffix=|)|
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
+(38, 7) Name d prefix=|| suffix=||
indent=||
+(-1, -1) Load prefix=|| suffix=||
indent=||
+(-1, -1) Load prefix=|| suffix=||
indent=||
(29, 6) Name g prefix=|| suffix=||
indent=||
(31, 12) Name i prefix=|| suffix=||
indent=||
(31, 17) Name j prefix=|| suffix=||
indent=||
@@ -120,3 +141,4 @@
(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
+(-1, -1) Load prefix=|| suffix=||
indent=||
diff --git a/testdata/ast/golden/3.7/fstring.out
b/testdata/ast/golden/3.7/fstring.out
index 0ff0ff4..9563e76 100644
--- a/testdata/ast/golden/3.7/fstring.out
+++ b/testdata/ast/golden/3.7/fstring.out
@@ -16,6 +16,9 @@
(31, 0) Expr prefix=|\n| suffix=|\n|
indent=||
(34, -1) Expr prefix=|\n| suffix=|\n|
indent=||
(36, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(38, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(42, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(45, 0) Expr prefix=|\n| suffix=|\n|
indent=||
(1, 0) JoinedStr prefix=|| suffix=||
indent=||
(3, 0) JoinedStr prefix=|| suffix=||
indent=||
(5, 0) JoinedStr prefix=|| suffix=||
indent=||
@@ -33,6 +36,9 @@
(31, 0) JoinedStr prefix=|| suffix=||
indent=||
(34, -1) JoinedStr prefix=|| suffix=||
indent=||
(36, 0) JoinedStr prefix=|| suffix=||
indent=||
+(38, 0) Call prefix=|| suffix=||
indent=||
+(42, 1) JoinedStr prefix=|(| suffix=|)|
indent=||
+(45, 1) JoinedStr prefix=|(| suffix=|)|
indent=||
(1, 0) Str prefix=|| suffix=||
indent=||
(3, 0) FormattedValue prefix=|| suffix=||
indent=||
(5, 0) Str prefix=|| suffix=||
indent=||
@@ -58,6 +64,13 @@
(31, 0) FormattedValue prefix=|| suffix=||
indent=||
(34, -1) FormattedValue prefix=|\n | suffix=||
indent=||
(36, 0) FormattedValue prefix=|| suffix=||
indent=||
+(38, 0) Name foo prefix=|| suffix=||
indent=||
+(38, 4) JoinedStr prefix=|| suffix=||
indent=||
+(42, 1) Str prefix=|| suffix=||
indent=||
+(42, 1) FormattedValue prefix=|| suffix=||
indent=||
+(42, 1) Str prefix=|| suffix=||
indent=||
+(45, 1) Str prefix=|| suffix=||
indent=||
+(45, 1) FormattedValue prefix=|| suffix=||
indent=||
(3, 3) Name b prefix=|| suffix=||
indent=||
(5, 5) Name d prefix=|| suffix=||
indent=||
(7, 5) Name g prefix=|| suffix=||
indent=||
@@ -80,6 +93,11 @@
(34, -1) JoinedStr prefix=|| suffix=| |
indent=||
(36, 4) Attribute c prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
+(38, 4) FormattedValue prefix=|| suffix=||
indent=||
+(38, 4) Str prefix=|| suffix=||
indent=||
+(42, 6) Name e prefix=|| suffix=||
indent=||
+(45, 2) Name h prefix=|| suffix=||
indent=||
+(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
@@ -100,15 +118,18 @@
(29, 0) FormattedValue prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(31, 0) Str prefix=|| suffix=||
indent=||
-(31, 0) FormattedValue prefix=| | suffix=||
indent=||
+(31, 0) FormattedValue prefix=|| suffix=||
indent=||
(31, 0) Str prefix=|| suffix=||
indent=||
-(31, 0) FormattedValue prefix=| | suffix=||
indent=||
+(31, 0) FormattedValue prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(34, -1) Str prefix=|| suffix=||
indent=||
(34, -1) FormattedValue prefix=|| suffix=||
indent=||
(34, -1) Str prefix=|| suffix=||
indent=||
(36, 4) Attribute b prefix=|(| suffix=|)|
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
+(38, 7) Name d prefix=|| suffix=||
indent=||
+(-1, -1) Load prefix=|| suffix=||
indent=||
+(-1, -1) Load prefix=|| suffix=||
indent=||
(29, 6) Name g prefix=|| suffix=||
indent=||
(31, 12) Name i prefix=|| suffix=||
indent=||
(31, 17) Name j prefix=|| suffix=||
indent=||
@@ -120,3 +141,4 @@
(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
+(-1, -1) Load prefix=|| suffix=||
indent=||
diff --git a/testdata/ast/golden/3.8/fstring.out
b/testdata/ast/golden/3.8/fstring.out
index 5ebf576..f87c908 100644
--- a/testdata/ast/golden/3.8/fstring.out
+++ b/testdata/ast/golden/3.8/fstring.out
@@ -16,6 +16,9 @@
(31, 0) Expr prefix=|\n| suffix=|\n|
indent=||
(33, 0) Expr prefix=|\n| suffix=|\n|
indent=||
(36, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(38, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(42, 0) Expr prefix=|\n| suffix=|\n|
indent=||
+(45, 0) Expr prefix=|\n| suffix=|\n|
indent=||
(1, 0) JoinedStr prefix=|| suffix=||
indent=||
(3, 0) JoinedStr prefix=|| suffix=||
indent=||
(5, 0) JoinedStr prefix=|| suffix=||
indent=||
@@ -33,6 +36,9 @@
(31, 0) JoinedStr prefix=|| suffix=||
indent=||
(33, 0) JoinedStr prefix=|| suffix=||
indent=||
(36, 0) JoinedStr prefix=|| suffix=||
indent=||
+(38, 0) Call prefix=|| suffix=||
indent=||
+(42, 1) JoinedStr prefix=|(| suffix=|)|
indent=||
+(45, 1) JoinedStr prefix=|(| suffix=|)|
indent=||
(1, 0) Constant prefix=|| suffix=||
indent=||
(3, 0) FormattedValue prefix=|| suffix=||
indent=||
(5, 0) Constant prefix=|| suffix=||
indent=||
@@ -58,6 +64,13 @@
(31, 0) FormattedValue prefix=|| suffix=||
indent=||
(33, 0) FormattedValue prefix=|\n | suffix=||
indent=||
(36, 0) FormattedValue prefix=|| suffix=||
indent=||
+(38, 0) Name foo prefix=|| suffix=||
indent=||
+(38, 4) JoinedStr prefix=|| suffix=||
indent=||
+(42, 1) Constant prefix=|| suffix=||
indent=||
+(42, 1) FormattedValue prefix=|| suffix=||
indent=||
+(42, 1) Constant prefix=|| suffix=||
indent=||
+(45, 1) Constant prefix=|| suffix=||
indent=||
+(45, 1) FormattedValue prefix=|| suffix=||
indent=||
(3, 3) Name b prefix=|| suffix=||
indent=||
(5, 5) Name d prefix=|| suffix=||
indent=||
(7, 5) Name g prefix=|| suffix=||
indent=||
@@ -80,6 +93,11 @@
(33, 0) JoinedStr prefix=|| suffix=| |
indent=||
(36, 3) Attribute c prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
+(38, 4) FormattedValue prefix=|| suffix=||
indent=||
+(38, 4) Constant prefix=|| suffix=||
indent=||
+(42, 6) Name e prefix=|| suffix=||
indent=||
+(45, 2) Name h prefix=|| suffix=||
indent=||
+(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
@@ -100,15 +118,18 @@
(29, 0) FormattedValue prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(31, 0) Constant prefix=|| suffix=||
indent=||
-(31, 0) FormattedValue prefix=| | suffix=||
indent=||
+(31, 0) FormattedValue prefix=|| suffix=||
indent=||
(31, 0) Constant prefix=|| suffix=||
indent=||
-(31, 0) FormattedValue prefix=| | suffix=||
indent=||
+(31, 0) FormattedValue prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(33, 0) Constant prefix=|| suffix=||
indent=||
(33, 0) FormattedValue prefix=|| suffix=||
indent=||
(33, 0) Constant prefix=|| suffix=||
indent=||
(36, 4) Attribute b prefix=|(| suffix=|)|
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
+(38, 7) Name d prefix=|| suffix=||
indent=||
+(-1, -1) Load prefix=|| suffix=||
indent=||
+(-1, -1) Load prefix=|| suffix=||
indent=||
(29, 6) Name g prefix=|| suffix=||
indent=||
(31, 12) Name i prefix=|| suffix=||
indent=||
(31, 17) Name j prefix=|| suffix=||
indent=||
@@ -120,3 +141,4 @@
(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
(-1, -1) Load prefix=|| suffix=||
indent=||
+(-1, -1) Load prefix=|| suffix=||
indent=||
++++++ golden39.patch ++++++
++++ 2381 lines (skipped)