Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KeyError: ReservedString(}) #207

Open
MartinThoma opened this issue Jun 20, 2022 · 1 comment
Open

KeyError: ReservedString(}) #207

MartinThoma opened this issue Jun 20, 2022 · 1 comment
Labels

Comments

@MartinThoma
Copy link

MartinThoma commented Jun 20, 2022

I've tried to apply mutmut to PyPDF2 and failed. Initially I thought the issue was with mutmut ( boxed/mutmut#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'
@MartinThoma
Copy link
Author

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'

MartinThoma added a commit to py-pdf/pypdf that referenced this issue Jun 22, 2022
MartinThoma added a commit to py-pdf/pypdf that referenced this issue Jun 23, 2022
Relates to davidhalter/parso#207

Additionally, make Makefile more consistent
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants