google / google/yapf

yapf fails on PEP 448 dictionary unpacking syntax

Open
#321 1 comment 0 reactions 0 assignees View on GitHub
duplicate
Dominant language
Python
Stars
14k
Forks
904
PR merge metrics
No merged PRs in 30d

Description

yapf seemingly cannot handle the new PEP 448 syntax for unpacking dictionaries. Example:

I have yapf `0.12.2`.

```
$ echo "print({**{'a':1}, **{'a':2}})" | python3
{'a': 2}
```

Works perfectly fine, but when I use yapf, the following happens:

```
$ echo "print({**{'a':1}, **{'a':2}})" | yapf
Traceback (most recent call last):
File "/Users/tritlo/.pyenv/versions/3.5.1/lib/python3.5/site-packages/yapf/yapflib/pytree_utils.py", line 101, in ParseCodeToTree
tree = parser_driver.parse_string(code, debug=False)
File "/Users/tritlo/.pyenv/versions/3.5.1/lib/python3.5/lib2to3/pgen2/driver.py", line 106, in parse_string
return self.parse_tokens(tokens, debug)
File "/Users/tritlo/.pyenv/versions/3.5.1/lib/python3.5/lib2to3/pgen2/driver.py", line 71, in parse_tokens
if p.addtoken(type, value, (prefix, start)):
File "/Users/tritlo/.pyenv/versions/3.5.1/lib/python3.5/lib2to3/pgen2/parse.py", line 159, in addtoken
raise ParseError("bad input", type, value, context)
lib2to3.pgen2.parse.ParseError: bad input: type=36, value='**', context=('', (1, 7))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/tritlo/.pyenv/versions/3.5.1/bin/yapf", line 11, in
sys.exit(run_main())
File "/Users/tritlo/.pyenv/versions/3.5.1/lib/python3.5/site-packages/yapf/__init__.py", line 259, in run_main
sys.exit(main(sys.argv))
File "/Users/tritlo/.pyenv/versions/3.5.1/lib/python3.5/site-packages/yapf/__init__.py", line 162, in main
verify=args.verify)
File "/Users/tritlo/.pyenv/versions/3.5.1/lib/python3.5/site-packages/yapf/yapflib/yapf_api.py", line 123, in FormatCode
tree = pytree_utils.ParseCodeToTree(unformatted_source)
File "/Users/tritlo/.pyenv/versions/3.5.1/lib/python3.5/site-packages/yapf/yapflib/pytree_utils.py", line 107, in ParseCodeToTree
tree = parser_driver.parse_string(code, debug=False)
File "/Users/tritlo/.pyenv/versions/3.5.1/lib/python3.5/lib2to3/pgen2/driver.py", line 106, in parse_string
return self.parse_tokens(tokens, debug)
File "/Users/tritlo/.pyenv/versions/3.5.1/lib/python3.5/lib2to3/pgen2/driver.py", line 71, in parse_tokens
if p.addtoken(type, value, (prefix, start)):
File "/Users/tritlo/.pyenv/versions/3.5.1/lib/python3.5/lib2to3/pgen2/parse.py", line 159, in addtoken
raise ParseError("bad input", type, value, context)
lib2to3.pgen2.parse.ParseError: bad input: type=36, value='**', context=('', (1, 7))
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.