The completer Completion API has seen an overhaul. The old
Completer.complete()
API is waiting deprecation and will soon be replaced
by Completer.completions()
.
This new API is capable of pulling completions from :any:`jedi`, thus allowing type inference on non-executed code. If :any:`jedi` is installed completion like the following are now becoming possible without code evaluation:
>>> data = ['Number of users', 123_456] ... data[0].<tab>
IPython is now capable of inferring that data[0] is a string, and will suggest completions like .capitalize. The completion power of IPython will increase with new Jedi releases, and a number of bugs and more completions are already available on development version of :any:`jedi` if you are curious.
User of the prompt_toolkit interface should also see the type of the item they are selecting (method, attribute, module, keyword ...).
The use of Jedi also full fill a number of request and fix a number of bugs like case insensitive completion, completion after division operator: See :ghpull:`ipython/ipython#10182`.
Extra patches and updates will be needed to the :any:`ipykernel` package for this feature to be available for this to be available to other clients like Notebook, Lab, Nteract, Hydrogen...