gh-110309: Prune empty constant in format specs (#110320)

Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
This commit is contained in:
sunmy2019 2023-10-05 22:08:42 +08:00 committed by GitHub
parent cc389ef627
commit 2cb62c6437
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 80 additions and 11 deletions

View file

@ -514,6 +514,54 @@ x = (
self.assertEqual(type(format_spec), ast.JoinedStr)
self.assertEqual(len(format_spec.values), 0)
def test_ast_fstring_format_spec(self):
expr = "f'{1:{name}}'"
mod = ast.parse(expr)
self.assertEqual(type(mod), ast.Module)
self.assertEqual(len(mod.body), 1)
fstring = mod.body[0].value
self.assertEqual(type(fstring), ast.JoinedStr)
self.assertEqual(len(fstring.values), 1)
fv = fstring.values[0]
self.assertEqual(type(fv), ast.FormattedValue)
format_spec = fv.format_spec
self.assertEqual(type(format_spec), ast.JoinedStr)
self.assertEqual(len(format_spec.values), 1)
format_spec_value = format_spec.values[0]
self.assertEqual(type(format_spec_value), ast.FormattedValue)
self.assertEqual(format_spec_value.value.id, 'name')
expr = "f'{1:{name1}{name2}}'"
mod = ast.parse(expr)
self.assertEqual(type(mod), ast.Module)
self.assertEqual(len(mod.body), 1)
fstring = mod.body[0].value
self.assertEqual(type(fstring), ast.JoinedStr)
self.assertEqual(len(fstring.values), 1)
fv = fstring.values[0]
self.assertEqual(type(fv), ast.FormattedValue)
format_spec = fv.format_spec
self.assertEqual(type(format_spec), ast.JoinedStr)
self.assertEqual(len(format_spec.values), 2)
format_spec_value = format_spec.values[0]
self.assertEqual(type(format_spec_value), ast.FormattedValue)
self.assertEqual(format_spec_value.value.id, 'name1')
format_spec_value = format_spec.values[1]
self.assertEqual(type(format_spec_value), ast.FormattedValue)
self.assertEqual(format_spec_value.value.id, 'name2')
def test_docstring(self):
def f():
f'''Not a docstring'''