The IPython tab completion machinery is messy, complicated, and difficult to extend. The IPython pull request 2701, for instance, envisioned a feature -- tab completion based on function-specific annotations -- which, because of the current sub-optimal completion API, required a quite a bit of hacking into the core completer logic to execute. This proposal envisions a refactoring of the IPython tab completion machinery -- largely IPython/core/completer.py
, IPython/core/completerlib.py
, and a little bit of IPython/core/interactiveshell.py
-- in a way that simplifies and unifies the codebase while providing a powerful and flexible public-facing API, enabling its extensibility in 3rd party projects.
- Started closely tied to GNU readline, and to the stdlib's
rlcompleter.py
module - Hacked to be able to work with non-readline frontends, like the notebook and qtconsole.