parso
parso copied to clipboard
KeyError: ReservedString(})
I've tried to apply mutmut to PyPDF2 and failed. Initially I thought the issue was with mutmut ( https://github.com/boxed/mutmut/issues/252 ) , but I guess it's a parso bug.
Minimal example
import parso
parso.parse('stream.write(b_(rf"\{ord_(c):0>3o}"))', error_recovery=False)
Traceback
Traceback (most recent call last):
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/parser.py", line 180, in _add_token
plan = stack[-1].dfa.transitions[transition]
KeyError: ReservedString(})
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/__init__.py", line 58, in parse
return grammar.parse(code, **kwargs)
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/grammar.py", line 156, in parse
root_node = p.parse(tokens=tokens)
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/python/parser.py", line 79, in parse
return super().parse(tokens)
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/parser.py", line 129, in parse
self._add_token(token)
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/parser.py", line 186, in _add_token
self.error_recovery(token)
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/python/parser.py", line 140, in error_recovery
return super().error_recovery(token)
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/parser.py", line 152, in error_recovery
raise ParserSyntaxError('SyntaxError: invalid syntax', error_leaf)
parso.parser.ParserSyntaxError: ('SyntaxError: invalid syntax', <ErrorLeaf: PythonTokenTypes.OP:'}', (1, 33)>)
Environment
$ python --version
Python 3.10.2
>>> parso.__version__
'0.8.3'
I could simplify it:
>>> parso.parse('rf"\{foobar:>3o}"', error_recovery=False)
Traceback (most recent call last):
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/parser.py", line 180, in _add_token
plan = stack[-1].dfa.transitions[transition]
KeyError: ReservedString(})
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/__init__.py", line 58, in parse
return grammar.parse(code, **kwargs)
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/grammar.py", line 156, in parse
root_node = p.parse(tokens=tokens)
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/python/parser.py", line 79, in parse
return super().parse(tokens)
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/parser.py", line 129, in parse
self._add_token(token)
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/parser.py", line 186, in _add_token
self.error_recovery(token)
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/python/parser.py", line 140, in error_recovery
return super().error_recovery(token)
File "/home/moose/.pyenv/versions/3.10.2/lib/python3.10/site-packages/parso/parser.py", line 152, in error_recovery
raise ParserSyntaxError('SyntaxError: invalid syntax', error_leaf)
parso.parser.ParserSyntaxError: ('SyntaxError: invalid syntax', <ErrorLeaf: PythonTokenTypes.OP:'}', (1, 15)>)
>>> rf"\{foobar:>3o}"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'foobar' is not defined
>>> foobar = 3
>>> rf"\{foobar:>3o}"
'\\ 3'