yapf fails on PEP 448 dictionary unpacking syntax
- 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
Assessment
This issue has not been assessed yet.