You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When generating completions, bpython has to interact with the given objects. These objects might be the product of active development, so a bug in, for example, __getattribute__ of the user code happens sometimes. bpython should stomach such errors.
Minimal reproducing example:
$ bpython3
bpython version 0.17.1 on top of Python 3.7.3 /usr/bin/python3
>>> class BadClass:
... def __getattribute__(self, name):
... assert False, "Let's say there is a bug here."
...
>>> x = BadClass()
>>> x(
Traceback (most recent call last):
File "/usr/bin/bpython3", line 11, in <module>
load_entry_point('bpython==0.17.1', 'console_scripts', 'bpython')()
File "/usr/lib/python3/dist-packages/bpython/curtsies.py", line 191, in main
exit_value = repl.mainloop(True, paste)
File "/usr/lib/python3/dist-packages/bpython/curtsies.py", line 126, in mainloop
self.process_event_and_paint(e)
File "/usr/lib/python3/dist-packages/bpython/curtsies.py", line 90, in process_event_and_paint
self.process_event(e)
File "/usr/lib/python3/dist-packages/bpython/curtsiesfrontend/repl.py", line 603, in process_event
return self.process_key_event(e)
File "/usr/lib/python3/dist-packages/bpython/curtsiesfrontend/repl.py", line 757, in process_key_event
self.add_normal_character(e)
File "/usr/lib/python3/dist-packages/bpython/curtsiesfrontend/repl.py", line 1001, in add_normal_character
self.cursor_offset += 1
File "/usr/lib/python3/dist-packages/bpython/curtsiesfrontend/repl.py", line 1594, in _set_cursor_offset
self.update_completion()
File "/usr/lib/python3/dist-packages/bpython/curtsiesfrontend/repl.py", line 1032, in update_completion
self.list_win_visible = self.complete(tab)
File "/usr/lib/python3/dist-packages/bpython/repl.py", line 724, in complete
self.set_docstring()
File "/usr/lib/python3/dist-packages/bpython/repl.py", line 688, in set_docstring
if not self.get_args():
File "/usr/lib/python3/dist-packages/bpython/repl.py", line 635, in get_args
if inspect.isclass(f):
File "/usr/lib/python3.7/inspect.py", line 78, in isclass
return isinstance(object, type)
File "<bpython-input-5>", line 3, in __getattribute__
AssertionError: Let's say there is a bug here.
[$? = 1]
In the above session, I typed the (, but it did not appear on screen. (Boo me, I edited that part.)
I see two ways to fix this: Either wrap the code in complete in a try … finally, or wrap all the places where user code gets called. (This might be hard to find.)
None of the other issues seem to be related.
The text was updated successfully, but these errors were encountered:
Uh oh!
There was an error while loading. Please reload this page.
When generating completions, bpython has to interact with the given objects. These objects might be the product of active development, so a bug in, for example,
__getattribute__
of the user code happens sometimes. bpython should stomach such errors.Minimal reproducing example:
In the above session, I typed the
(
, but it did not appear on screen. (Boo me, I edited that part.)I see two ways to fix this: Either wrap the code in
complete
in atry … finally
, or wrap all the places where user code gets called. (This might be hard to find.)None of the other issues seem to be related.
The text was updated successfully, but these errors were encountered: