ipython: 7.18.0 crash when autocompleting

With version 7.18.0, when I press TAB for autocompletion, IPython hangs and then crashes This doesn’t happen with 7.17.0

Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.1 LTS
Release:	20.04
Codename:	focal

Reproduction

$ ipython
Python 3.8.2 (default, Jul 16 2020, 14:00:26)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.18.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import networkx as nx                                                                         

In [2]: g = nx.Graph()                                                                                

In [3]: g                                                                                             
Traceback (most recent call last):
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/terminal/ptutils.py", line 113, in get_completions
    yield from self._get_completions(body, offset, cursor_position, self.ipy_completer)
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/terminal/ptutils.py", line 126, in _get_completions
    for c in completions:
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/core/completer.py", line 438, in _deduplicate_completions
    completions = list(completions)
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/core/completer.py", line 1819, in completions
    for c in self._completions(text, offset, _timeout=self.jedi_compute_type_timeout/1000):
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/core/completer.py", line 1876, in _completions
    signature = _make_signature(jm)
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/core/completer.py", line 991, in _make_signature
    return '(%s)'% ', '.join([f for f in (_formatparamchildren(p) for signature in completion.get_signatures()
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/core/completer.py", line 991, in <listcomp>
    return '(%s)'% ', '.join([f for f in (_formatparamchildren(p) for signature in completion.get_signatures()
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/core/completer.py", line 991, in <genexpr>
    return '(%s)'% ', '.join([f for f in (_formatparamchildren(p) for signature in completion.get_signatures()
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/core/completer.py", line 968, in _formatparamchildren
    raise ValueError('Jedi function parameter description have change format.'
ValueError: Jedi function parameter description have change format.Expected "param ...", found 'def __new__'".

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/juanpi/virtual_enviroments/memnet/bin/ipython", line 8, in <module>
    sys.exit(start_ipython())
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/__init__.py", line 126, in start_ipython
    return launch_new_instance(argv=argv, **kwargs)
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/traitlets/config/application.py", line 664, in launch_instance
    app.start()
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/terminal/ipapp.py", line 356, in start
    self.shell.mainloop()
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/terminal/interactiveshell.py", line 564, in mainloop
    self.interact()
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/terminal/interactiveshell.py", line 547, in interact
    code = self.prompt_for_code()
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/terminal/interactiveshell.py", line 473, in prompt_for_code
    text = self.pt_app.prompt(
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/prompt_toolkit/shortcuts/prompt.py", line 994, in prompt
    return self.app.run(set_exception_handler=set_exception_handler)
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 811, in run
    return loop.run_until_complete(
  File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 778, in run_async
    return await _run_async2()
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 766, in _run_async2
    await self.cancel_and_wait_for_background_tasks()
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 867, in cancel_and_wait_for_background_tasks
    await task
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/prompt_toolkit/buffer.py", line 1854, in new_coroutine
    await coroutine(*a, **kw)
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/prompt_toolkit/buffer.py", line 1683, in async_completer
    async for completion in self.completer.get_completions_async(
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/prompt_toolkit/completion/base.py", line 269, in get_completions_async
    async for completion in completer.get_completions_async(
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/prompt_toolkit/completion/base.py", line 196, in get_completions_async
    for item in self.get_completions(document, complete_event):
  File "/home/juanpi/virtual_enviroments/memnet/lib/python3.8/site-packages/IPython/terminal/ptutils.py", line 116, in get_completions
    print_tb(e)
  File "/usr/lib/python3.8/traceback.py", line 53, in print_tb
    print_list(extract_tb(tb, limit=limit), file=file)
  File "/usr/lib/python3.8/traceback.py", line 72, in extract_tb
    return StackSummary.extract(walk_tb(tb), limit=limit)
  File "/usr/lib/python3.8/traceback.py", line 347, in extract
    for f, lineno in frame_gen:
  File "/usr/lib/python3.8/traceback.py", line 312, in walk_tb
    yield tb.tb_frame, tb.tb_lineno
AttributeError: 'ValueError' object has no attribute 'tb_frame'

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 11
  • Comments: 17 (5 by maintainers)

Most upvoted comments

Just downgrade jedi module to version 0.17.2 pip install ipython pip install jedi==0.17.2 Tested python3.6 python3.7 python3.8 in Win10. Maybe works for you.

I’ve reverted some of the jedi changes and published a 7.18.1, still not sure what is hapeening.

Just downgrade jedi module to version 0.17.2 pip install ipython pip install jedi==0.17.2 Tested python3.6 python3.7 python3.8 in Win10. Maybe works for you.

Works for me on MacOS

I updated ipython to 7..18.1 using pip install ipython -U, and ipython nolonger crash when I press tab to get autocomplete.

Thanks @kakila. Mine only has…

pip==20.1.1
setuptools==49.2.0
wheel==0.34.2

The issue is not present in ipython 7.18.1.