[issue37053] Tools/parser/unparse.py does not handle u"bar" correctly
Chih-Hsuan Yen
report at bugs.python.org
Sun May 26 08:41:33 EDT 2019
New submission from Chih-Hsuan Yen <yan12125 at gmail.com>:
Currently (135c6a56e55d2f4f8718b3b9f03ce3c692b15f0f) the following test fails:
./python -m test.regrtest -v test_tools.test_unparse -u cpu
(Note that -u cpu is needed to force test_unparse.DirectoryTestCase to check all files under Lib/ and Lib/test/.)
An example error message:
======================================================================
FAIL: test_files (test.test_tools.test_unparse.DirectoryTestCase) (filename='/home/yen/Projects/cpython/Lib/test/test_typing.py'
)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/yen/Projects/cpython/Lib/test/test_tools/test_unparse.py", line 309, in test_files
self.check_roundtrip(source)
File "/home/yen/Projects/cpython/Lib/test/test_tools/test_unparse.py", line 132, in check_roundtrip
self.assertASTEqual(ast1, ast2)
File "/home/yen/Projects/cpython/Lib/test/test_tools/test_unparse.py", line 124, in assertASTEqual
self.assertEqual(ast.dump(ast1), ast.dump(ast2))
AssertionError: 'Modu[88178 chars]kind=\'u\')], ctx=Load())), ctx=Load()))], dec[421987 chars]=[])' != 'Modu[88178 chars]kind=No
ne)], ctx=Load())), ctx=Load()))], deco[421986 chars]=[])'
----------------------------------------------------------------------
Apparently that's because Tools/parser/unparse.py does not handle strings like u"bar" correctly. I managed to "fix" it with the following patch:
diff --git a/Tools/parser/unparse.py b/Tools/parser/unparse.py
index 385902ef4b..a25b5e49df 100644
--- a/Tools/parser/unparse.py
+++ b/Tools/parser/unparse.py
@@ -399,6 +399,8 @@ class Unparser:
elif value is ...:
self.write("...")
else:
+ if t.kind == 'u':
+ self.write("u")
self._write_constant(t.value)
def _List(self, t):
Not sure if this is the correct approach, though.
----------
components: Demos and Tools
messages: 343546
nosy: yan12125
priority: normal
severity: normal
status: open
title: Tools/parser/unparse.py does not handle u"bar" correctly
type: behavior
versions: Python 3.8
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue37053>
_______________________________________
More information about the Python-bugs-list
mailing list