Skip to content

When using parsley exceptions kill bpython #651

Description

@jkbbwr

The following traceback is thrown

Traceback (most recent call last):
  File "/home/jakob/.virtualenvs/copper/bin/bpython", line 11, in <module>
    sys.exit(main())
  File "/home/jakob/.virtualenvs/copper/lib/python3.5/site-packages/bpython/curtsies.py", line 190, in main
    exit_value = repl.mainloop()
  File "/home/jakob/.virtualenvs/copper/lib/python3.5/site-packages/bpython/curtsies.py", line 125, in mainloop
    self.process_event_and_paint(e)
  File "/home/jakob/.virtualenvs/copper/lib/python3.5/site-packages/bpython/curtsies.py", line 89, in process_event_and_paint
    self.process_event(e)
  File "/home/jakob/.virtualenvs/copper/lib/python3.5/site-packages/bpython/curtsiesfrontend/repl.py", line 584, in process_event
    return self.process_key_event(e)
  File "/home/jakob/.virtualenvs/copper/lib/python3.5/site-packages/bpython/curtsiesfrontend/repl.py", line 711, in process_key_event
    self.on_enter()
  File "/home/jakob/.virtualenvs/copper/lib/python3.5/site-packages/bpython/curtsiesfrontend/repl.py", line 794, in on_enter
    self.push(self.current_line, insert_into_history=insert_into_history)
  File "/home/jakob/.virtualenvs/copper/lib/python3.5/site-packages/bpython/curtsiesfrontend/repl.py", line 1058, in push
    self.run_code_and_maybe_finish()
  File "/home/jakob/.virtualenvs/copper/lib/python3.5/site-packages/bpython/curtsiesfrontend/repl.py", line 1061, in run_code_and_maybe_finish
    r = self.coderunner.run_code(for_code=for_code)
  File "/home/jakob/.virtualenvs/copper/lib/python3.5/site-packages/bpython/curtsiesfrontend/coderunner.py", line 136, in run_code
    request = self.code_greenlet.switch()
  File "/home/jakob/.virtualenvs/copper/lib/python3.5/site-packages/bpython/curtsiesfrontend/coderunner.py", line 178, in _blocking_run_code
    unfinished = self.interp.runsource(self.source)
  File "/home/jakob/.virtualenvs/copper/lib/python3.5/site-packages/bpython/repl.py", line 160, in runsource
    filename, symbol)
  File "/usr/lib64/python3.5/code.py", line 75, in runsource
    self.runcode(code)
  File "/usr/lib64/python3.5/code.py", line 95, in runcode
    self.showtraceback()
  File "/home/jakob/.virtualenvs/copper/lib/python3.5/site-packages/bpython/repl.py", line 215, in showtraceback
    l[len(l):] = traceback.format_exception_only(t, v)
  File "/usr/lib64/python3.5/traceback.py", line 136, in format_exception_only
    return list(TracebackException(etype, value, None).format_exception_only())
  File "/usr/lib64/python3.5/traceback.py", line 439, in __init__
    _seen.add(exc_value)
TypeError: unhashable type: 'ParseError'

When an exception in parsely is thrown

Smallest reproducable example is

import parsley

grammar = """
name = <letter letterOrDigit*>
"""

parser = parsley.makeGrammar(grammar, {})
parser("3").name()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions