bpo-38870: Don't put unnecessary parentheses on class declarations in ast.parse (GH-20134)

This commit is contained in:
Batuhan Taskaya 2020-05-17 00:53:25 +03:00 committed by GitHub
parent ce4a753dcb
commit 25160cdc47
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 2 deletions

View File

@ -930,7 +930,7 @@ class _Unparser(NodeVisitor):
self.fill("@") self.fill("@")
self.traverse(deco) self.traverse(deco)
self.fill("class " + node.name) self.fill("class " + node.name)
with self.delimit("(", ")"): with self.delimit_if("(", ")", condition = node.bases or node.keywords):
comma = False comma = False
for e in node.bases: for e in node.bases:
if comma: if comma:

View File

@ -110,7 +110,7 @@ with f() as x, g() as y:
docstring_prefixes = [ docstring_prefixes = [
"", "",
"class foo():\n ", "class foo:\n ",
"def foo():\n ", "def foo():\n ",
"async def foo():\n ", "async def foo():\n ",
] ]
@ -367,6 +367,19 @@ class CosmeticTestCase(ASTTestCase):
self.check_src_roundtrip("call((yield x))") self.check_src_roundtrip("call((yield x))")
self.check_src_roundtrip("return x + (yield x)") self.check_src_roundtrip("return x + (yield x)")
def test_class_bases_and_keywords(self):
self.check_src_roundtrip("class X:\n pass")
self.check_src_roundtrip("class X(A):\n pass")
self.check_src_roundtrip("class X(A, B, C, D):\n pass")
self.check_src_roundtrip("class X(x=y):\n pass")
self.check_src_roundtrip("class X(metaclass=z):\n pass")
self.check_src_roundtrip("class X(x=y, z=d):\n pass")
self.check_src_roundtrip("class X(A, x=y):\n pass")
self.check_src_roundtrip("class X(A, **kw):\n pass")
self.check_src_roundtrip("class X(*args):\n pass")
self.check_src_roundtrip("class X(*args, **kwargs):\n pass")
def test_docstrings(self): def test_docstrings(self):
docstrings = ( docstrings = (
'"""simple doc string"""', '"""simple doc string"""',