iPython Code Completion / Intellisense on Dot Possible?
As someone trying to learn the ins and outs of Python (with emphasis on scientific computing - ie: pandas, numpy, scikit-learn), most of the gurus out there seem to recommend and use iPython notebooks. My biggest sticking point as a beginner/intermediate coder is that I NEED code completion / intellisense -like functionality from an IDE to learn the function parameters. I'm not hard-wired yet to just know what parameters are available at my current development.
In iPython, I noticed I can press Tab
to show the drop-down of options (seen below as pd.) but I don't want to have to hit each time. That's not user-friendly for my needs. Instead, I would like it to show only available classes and methods when I press dot.
Secondly, I notice that if I did say pd.read_csv(<TAB>
, I get a lot more options than are the actual parameters in read_csv
.
Question: Can iPython automatically show accurate code completion options instantly after pressing dot / period? Also, is there a way to configure it to only show the available function parameters when within a function?
To make this question super-specific, I'm not asking about using any other IDE; I'm asking very specifically in regards to just iPython and wondering if there's a way to set some kind of configuration to achieve accurate "dot" display options instantly when pressing "dot" (no time delay).
Example below shows Desktop
which is obviously not a parameter of pd.read_csv()
.
You can press <Shift>-<Tab>
to get a tooltip showing the function's signature:
Alternatively, invoking zip?
opens a documentation pane at the bottom of the window.
As far as having the tooltip open automatically, I'm unsure. I'd guess that it isn't possible via configuration.
Almost 3 years later, I've finally come across a potential solution.
Answer: Install nbextensions and enable the Hinterland extension.
Enable code autocompletion menu for every keypress in a code cell, instead of only calling it with tab.
Here's what you do:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
- Start
jupyter notebook
(browser launches) - One of the tabs should now show "Nbextensions"
- There, you will find "Hinterland". Check the box to enable.
Hinterland has some adjustable options like:
- hinterland.hint_delay: delay in milliseconds between keypress & hint request.
- hinterland.enable_at_start: Whether to enable hinterland's continuous hinting when notebook is first opened, or if false, only when selected from the help-menu item.
- hinterland.hint_inside_comments: Whether to request hints while typing code comments. Defaults to false.
- Other regex options: hinterland.exclude_regexp, hinterland.include_regexp, hinterland.tooltip_regexp
Now there's a better way to get accurate code completion operation. It can be triggered by any character you typed. Inspired by TabNine, I developed a code auto-completion extension for Jupyter Notebook Jupyter TabNine.
It's available on pypi index now. Simply issue following commands, then enjoy it:)
pip3 install jupyter-tabnine
jupyter nbextension install --py jupyter_tabnine
jupyter nbextension enable --py jupyter_tabnine
jupyter serverextension enable --py jupyter_tabnine
This is what worked for me:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter notebook
To see the Nbextensions tab if something has hidden it:
jupyter nbextensions_configurator enable --user
- under Nbextensions uncheck "disable confirguration for nbextensions without explicit compatibility ..." (disclaimer - all risks are yours for doing this)
- select only
- "Hinterland" for the formatting ones. I had some other nbextensions selected and somehow it was not working.
- "Nbextension edit menu item" & "Nbestenision dashboard tab" (in order to see this tab again next time)