jupyterlab-lsp
jupyterlab-lsp copied to clipboard
No code completion or signature suggestions for %run file.py magic
Description
When using an external file that is executed within a notebook with %run file.py, its imports and definitions are not available to the LSP for code completion or signature suggestions. This means that if common functionality is extracted into a common file and included in the notebook, the LSP's features are not as useful as they could be.
Reproduce
- Check that signature suggestions work out of the box in a notebook:
- Create file
two.pywith the following contents:
import pandas as pd
def addtwo(i: int) -> int:
return i + 2
- Execute the
two.pyfile and notice that signature suggestions do not work for either the import or the function:
Expected behavior
If code is run inside a notebook, I expect code completion and signature suggestions to work. It is after all available to the notebook server.
Context
- Operating System and version: MacOs 12.2
- Browser and version: Chrome 100.0.4896.127
- JupyterLab version: 3.3.4
- Language server and version: 1.5.1 with jupyterlab-lsp 3.10.1
Required: installed server extensions
config dir: /Users/XXX/etc/jupyter
jupyter_lsp enabled
- Validating...
jupyter_lsp 1.5.1 OK
jupyterlab enabled
- Validating...
jupyterlab 3.3.4 OK
jupyterlab_git enabled
- Validating...
jupyterlab_git 0.37.1 OK
nbdime enabled
- Validating...
nbdime 3.1.1 OK
Required: installed lab extensions
JupyterLab v3.3.4
/Users/XXX/share/jupyter/labextensions
jupyterlab_pygments v0.2.2 enabled OK (python, jupyterlab_pygments)
nbdime-jupyterlab v2.1.1 enabled OK
@krassowski/jupyterlab-lsp v3.10.1 enabled OK (python, jupyterlab-lsp)
@jupyterlab/git v0.37.1 enabled OK (python, jupyterlab-git)
Other labextensions (built into JupyterLab)
app dir: /Users/XXX/share/jupyter/lab
@jupyterlab/celltags v3.3.4 enabled OK
Troubleshoot Output
$PATH: /Users/XXX/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbinsys.path: /Users/XXX/bin /usr/local/Cellar/[email protected]/3.9.12/Frameworks/Python.framework/Versions/3.9/lib/python39.zip /usr/local/Cellar/[email protected]/3.9.12/Frameworks/Python.framework/Versions/3.9/lib/python3.9 /usr/local/Cellar/[email protected]/3.9.12/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload /Users/XXX/lib/python3.9/site-packages
sys.executable: /Users/XXX/bin/python3.9
sys.version: 3.9.12 (main, Mar 26 2022, 15:51:15) [Clang 13.1.6 (clang-1316.0.21.2)]
platform.platform(): macOS-12.3-x86_64-i386-64bit
which -a jupyter: /Users/XXX/bin/jupyter
pip list: Package Version ----------------------------- ----------- anyio 3.5.0 appdirs 1.4.4 appnope 0.1.3 argon2-cffi 21.3.0 argon2-cffi-bindings 21.2.0 astroid 2.11.3 asttokens 2.0.5 attrs 21.4.0 Automat 20.2.0 autopep8 1.6.0 Babel 2.10.1 backcall 0.2.0 beautifulsoup4 4.9.3 black 21.7b0 bleach 5.0.0 blis 0.7.7 cachetools 4.2.4 catalogue 2.0.7 certifi 2021.10.8 cffi 1.15.0 charset-normalizer 2.0.12 click 7.1.2 colorama 0.4.4 constantly 15.1.0 cryptography 37.0.0 cssselect 1.1.0 cycler 0.11.0 cymem 2.0.6 debugpy 1.6.0 decorator 5.1.1 defusedxml 0.7.1 dill 0.3.4 docker 5.0.3 english 2020.7.0 entrypoints 0.4 et-xmlfile 1.1.0 executing 0.8.3 fastjsonschema 2.15.3 flake8 4.0.1 gitdb 4.0.9 GitPython 3.1.27 google-api-core 2.7.2 google-auth 1.34.0 google-auth-oauthlib 0.5.1 google-cloud-bigquery 2.34.3 google-cloud-bigquery-storage 2.13.1 google-cloud-core 2.3.0 google-crc32c 1.3.0 google-resumable-media 2.3.2 googleapis-common-protos 1.56.0 gower 0.0.5 grpcio 1.44.0 grpcio-status 1.44.0 h5py 3.6.0 hyperlink 21.0.0 idna 3.3 importlib-metadata 4.11.3 incremental 21.3.0 ipykernel 6.13.0 ipython 8.2.0 ipython-genutils 0.2.0 isort 5.10.1 jedi 0.18.1 Jinja2 3.1.1 joblib 1.1.0 json5 0.9.6 jsonschema 4.4.0 jupyter-client 7.3.0 jupyter-core 4.10.0 jupyter-lsp 1.5.1 jupyter-server 1.16.0 jupyter-server-mathjax 0.2.5 jupyterlab 3.3.4 jupyterlab-git 0.37.1 jupyterlab-lsp 3.10.1 jupyterlab-pygments 0.2.2 jupyterlab-server 2.13.0 Keras 2.4.3 kiwisolver 1.4.2 lazy-object-proxy 1.7.1 lxml 4.8.0 MarkupSafe 2.1.1 matplotlib 3.4.2 matplotlib-inline 0.1.3 mccabe 0.6.1 mistune 0.8.4 monotonic 1.6 murmurhash 1.0.7 mypy-extensions 0.4.3 nbclassic 0.3.7 nbclient 0.6.0 nbconvert 6.5.0 nbdime 3.1.1 nbformat 5.3.0 neotime 1.7.4 nest-asyncio 1.5.5 nltk 3.6.2 notebook 6.4.11 notebook-shim 0.1.0 numpy 1.21.1 oauthlib 3.2.0 openpyxl 3.0.9 packaging 21.3 pandas 1.3.1 pandas-gbq 0.15.0 pandocfilters 1.5.0 pansi 2020.7.3 parso 0.8.3 pathspec 0.9.0 pathy 0.6.1 patsy 0.5.2 pexpect 4.8.0 pickleshare 0.7.5 Pillow 9.1.0 pip 22.0.3 platformdirs 2.5.0 pluggy 1.0.0 preshed 3.0.6 prometheus-client 0.14.1 prompt-toolkit 3.0.29 proto-plus 1.20.3 protobuf 3.20.1 psutil 5.9.0 ptyprocess 0.7.0 pure-eval 0.2.2 py2neo 2021.1.5 pyarrow 7.0.0 pyasn1 0.4.8 pyasn1-modules 0.2.8 pycodestyle 2.8.0 pycparser 2.21 pydantic 1.8.2 pydata-google-auth 1.4.0 pydocstyle 6.1.1 pyflakes 2.4.0 Pygments 2.12.0 pylint 2.13.7 pyOpenSSL 22.0.0 pyparsing 3.0.8 pyrsistent 0.18.1 python-dateutil 2.8.2 python-lsp-jsonrpc 1.0.0 python-lsp-server 1.4.1 pytz 2022.1 PyYAML 6.0 pyzmq 22.3.0 queuelib 1.6.2 regex 2022.4.24 requests 2.26.0 requests-oauthlib 1.3.1 rope 1.0.0 rsa 4.8 scikit-learn 0.24.2 scipy 1.7.1 Scrapy 1.0.1 seaborn 0.11.1 Send2Trash 1.8.0 setuptools 60.5.0 six 1.16.0 smart-open 5.2.1 smmap 5.0.0 sniffio 1.2.0 snowballstemmer 2.2.0 soupsieve 2.3.2.post1 spacy 3.1.1 spacy-legacy 3.0.9 srsly 2.4.3 stack-data 0.2.0 statsmodels 0.12.2 terminado 0.13.3 thinc 8.0.15 threadpoolctl 3.1.0 tikzplotlib 0.9.15 tinycss2 1.1.1 toml 0.10.2 tomli 1.2.3 tornado 6.1 tqdm 4.62.0 traitlets 5.1.1 Twisted 22.4.0 typer 0.3.2 typing_extensions 4.1.1 ujson 5.2.0 urllib3 1.26.9 w3lib 1.22.0 wasabi 0.9.1 wcwidth 0.2.5 webencodings 0.5.1 websocket-client 1.3.2 wrapt 1.14.0 yapf 0.32.0 zipp 3.8.0 zope.interface 5.4.0
This is not just limited to the %run magic. I have configured my kernel to run a Python file automatically on startup and it is also not picked up by the LSP.