Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python LSP connecting #93

Closed
dclong opened this issue Nov 4, 2019 · 18 comments
Closed

Python LSP connecting #93

dclong opened this issue Nov 4, 2019 · 18 comments

Comments

@dclong
Copy link

dclong commented Nov 4, 2019

I couldn't get jupyterlab-lsp to work for me. The status bar says Python LSP is connecting all the time. I wonder is this due to some permission issue?

image

@krassowski
Copy link
Member

Hi @dclong thanks for opening the issue.

We are working on making this easier to troubleshoot for users. In the meantime, if you could provide us with the output of your terminal (like the place from where you started the jupyter lab) and from the browser console (usually pressing F12 in your browser opens it), we may be able to help further.

@shreyasgm
Copy link

Hi, I'm facing the same issue. Here's my console output:

Starting application in workspace: "/lab"
index.js:52 Unable to solve the absolute path: some LSP servers may not work correctly
activate @ index.js:52
notebook.js:69 LSP: waiting for <filepath.ipynb> to fully load
index.js:64 id-331d35e0-2a69-41f7-819d-2354eafa2626
(anonymous) @ index.js:64
statusbar.js:91 Uncaught (in promise) TypeError: Cannot read property 'virtual_document' of undefined
    at t.get lsp_servers_truncated [as lsp_servers_truncated] (statusbar.js:91)
    at Be.render (statusbar.js:57)
    at vdom.js:53
    at new Promise (<anonymous>)
    at Be.renderDOM (vdom.js:52)
    at Be.onUpdateRequest (vdom.js:30)
    at Be.e.processMessage (widget.js:492)
    at x (index.js:436)
    at n (index.js:172)
    at C (index.js:486)
2default.js:56 Starting WebSocket: ws://localhost:8888/api/kernels/05d39e8e-a893-4088-ad68-7c60e727834a
notebook.js:71 LSP: <filepath.ipynb> ready for connection
3notebook.js:46 Could not get kernel metadata
language_info @ notebook.js:46
jl_adapter.js:163 LSP: will connect using root path: <directory_path> and language: python
connection_manager.js:36 <directory_path>
4notebook.js:46 Could not get kernel metadata
language_info @ notebook.js:46
2default.js:1496 Kernel: connected (05d39e8e-a893-4088-ad68-7c60e727834a)
connection_manager.js:40 WebSocket connection to 'ws://localhost:8888/lsp/python' failed: Error during WebSocket handshake: Unexpected response code: 404
connect_socket @ connection_manager.js:40
notebook.js:19 LSP: Changed to python kernel, reconnecting
jl_adapter.js:51 LSP: connection closed, disconnecting adapter python
jl_adapter.js:163 LSP: will connect using root path: <directory_path> and language: python
connection_manager.js:36 <directory_path>

@krassowski
Copy link
Member

The 404 error hints on an installation problem. Did you install and enable the server-side extension?

pip install jupyter-lsp
jupyter serverextension enable --sys-prefix --py jupyter_lsp

@bollwyvl 1ca2510 removed this command from README, wheat it the rationale here? Should it get auto-enabled by default? If yes, it did not work for me and it may not be working for @shreyasgm above.

@bollwyvl
Copy link
Collaborator

bollwyvl commented Nov 12, 2019 via email

@shreyasgm
Copy link

Thanks for the tip on enabling the server extension - I hadn't done that, and so I did a fresh reinstall including the server extension. That seems to have fixed the issue for now.

@krassowski
Copy link
Member

Great! @bollwyvl thank you for the pointer to the file! I do not see this file in git. Is it autogenerated or did we forget to add it? It is mentioned in two files (setup.py and LANGUAGESERVERS.md) but I do not see it in /etc.

However, we got jupyter-lsp-serverextension.json. This file is also included in setup.py, but I am not sure under what path it lands during the installation - maybe there is the problem? (apologies if this is obvious to you, it's just that I got little experience with server-side extensions - trying to help with the knowledge and intuition that I have). If you don't have time right now, I will try to dive into this on the weekend.

@bollwyvl
Copy link
Collaborator

I do not see this file in git

Right, my bad. It is the other one you mention. jupyter_notebook_config.json is the one that a user would edit in ~/.jupyter, or the cwd where they start the notebook, or a raft of other places.

The approach is copied from:
https://github.com/jupyterhub/jupyter-server-proxy/blob/master/setup.py#L18

It's a really long story how it came to be, but it is actually documented, and much preferable to the bad old days (when it works).

It actually is getting tested in CI, as there is no other place where we call serverextension enable because we do a full install of the built package (to make sure we don't miss anything). You still have to do serverextension enable for a dev install, which is why it's still in postBuild.

@bollwyvl
Copy link
Collaborator

Yeah, i just tested it out in a conda env:

$> conda create -p lsp-foo -c conda-forge python=3.7 jupyterlab nodejs
...
$> source activate ./lsp-foo
...
$> pip install jupyter-lsp
....
Building wheels for collected packages: jupyter-lsp
  Building wheel for jupyter-lsp (setup.py) ... done
  Created wheel for jupyter-lsp: filename=jupyter_lsp-0.6.0b0-cp37-none-any.whl size=20056 sha256=020d7146e086fe3edad7f1599b5b8d116b3f8d475999d75bde7a252d8f421ab1
  Stored in directory: /home/weg/.cache/pip/wheels/a2/57/0e/11f1b351f9543a2401d925bedd1cbf24604307ee453fc3d2fc
Successfully built jupyter-lsp
Installing collected packages: jupyter-lsp
Successfully installed jupyter-lsp-0.6.0b0
$> jupyter serverextension list
config dir: /home/weg/Documents/projects/jupyterlab-lsp/lsp-foo/etc/jupyter
    jupyter_lsp  enabled 
    - Validating...
      jupyter_lsp 0.6.0b OK
    jupyterlab  enabled 
    - Validating...
      jupyterlab 1.2.3 OK
$> ls -lathr lsp-foo/etc/jupyter/jupyter_notebook_config.d/
total 16K
-rw-rw-r--. 2 weg weg   87 Nov 12 15:21 jupyterlab.json
drwxrwxr-x. 3 weg weg 4.0K Nov 13 08:25 ..
-rw-rw-r--. 1 weg weg   88 Nov 13 08:27 jupyter-lsp-serverextension.json
drwxrwxr-x. 2 weg weg 4.0K Nov 13 08:27 .

@dclong
Copy link
Author

dclong commented Nov 15, 2019

@krassowski Below is the console message of JupyterHub server but it deosn't seem to have LSP related logging. I have a JupyterHub server without jupyterlab-lsp installed and then I installed jupyterlab-lsp following the instructions (including enabling jupyter-lsp manually). Does jupyterlab-lsp work only when it is installed before the JupyterLab/Hub server is launched?

[I 2019-11-15 12:03:09.337 JupyterHub app:2120] Using Authenticator: jupyterhub.auth.PAMAuthenticator-1.0.0
[I 2019-11-15 12:03:09.338 JupyterHub app:2120] Using Spawner: jupyterhub.spawner.LocalProcessSpawner-1.0.0
[I 2019-11-15 12:03:09.339 JupyterHub app:1302] Writing cookie_secret to /root/jupyterhub_cookie_secret
[I 2019-11-15 12:03:09.360 alembic.runtime.migration migration:154] Context impl SQLiteImpl.
[I 2019-11-15 12:03:09.361 alembic.runtime.migration migration:161] Will assume non-transactional DDL.
[I 2019-11-15 12:03:09.494 alembic.runtime.migration migration:513] Running stamp_revision  -> 4dc2d5a8c53c
[I 2019-11-15 12:03:11.024 JupyterHub proxy:460] Generating new CONFIGPROXY_AUTH_TOKEN
[I 2019-11-15 12:03:11.052 JupyterHub app:1563] Not using whitelist. Any authenticated user will be allowed.
[I 2019-11-15 12:03:11.204 JupyterHub app:2337] Hub API listening on http://127.0.0.1:8081/hub/
[W 2019-11-15 12:03:11.205 JupyterHub proxy:642] Running JupyterHub without SSL.  I hope there is SSL termination happening somewhere else...
[I 2019-11-15 12:03:11.206 JupyterHub proxy:645] Starting proxy @ http://0.0.0.0:8000/
12:03:11.425 [ConfigProxy] info: Proxying http://0.0.0.0:8000 to (no default)
12:03:11.429 [ConfigProxy] info: Proxy API at http://127.0.0.1:8001/api/routes
12:03:11.652 [ConfigProxy] info: 200 GET /api/routes 
[I 2019-11-15 12:03:11.652 JupyterHub proxy:319] Checking routes
[I 2019-11-15 12:03:11.652 JupyterHub proxy:399] Adding default route for Hub: / => http://127.0.0.1:8081
12:03:11.655 [ConfigProxy] info: Adding route / -> http://127.0.0.1:8081
12:03:11.656 [ConfigProxy] info: Route added / -> http://127.0.0.1:8081
12:03:11.656 [ConfigProxy] info: 201 POST /api/routes/ 
[I 2019-11-15 12:03:11.657 JupyterHub app:2422] JupyterHub is now running at http://0.0.0.0:8000/
[I 2019-11-15 12:03:31.318 JupyterHub log:174] 302 GET / -> /hub/ (@10.236.66.101) 1.26ms
[W 2019-11-15 12:03:31.383 JupyterHub base:350] Invalid or expired cookie token
[I 2019-11-15 12:03:31.384 JupyterHub log:174] 302 GET /hub/ -> /hub/login (@10.236.66.101) 1.61ms
[I 2019-11-15 12:03:31.543 JupyterHub log:174] 200 GET /hub/login (@10.236.66.101) 25.79ms
[I 2019-11-15 12:03:35.606 JupyterHub base:663] User logged in: chdu
[I 2019-11-15 12:03:35.609 JupyterHub log:174] 302 POST /hub/login?next= -> /hub/spawn ([email protected]) 29.27ms
Welcome to Ubuntu 19.04 (GNU/Linux 4.4.0-143-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

[W 2019-11-15 12:03:36.204 JupyterHub auth:941] Failed to open PAM session for chdu: [PAM Error 14] Cannot make/remove an entry for the specified session
[W 2019-11-15 12:03:36.204 JupyterHub auth:942] Disabling PAM sessions from now on.
[I 2019-11-15 12:03:36.302 JupyterHub spawner:1387] Spawning jupyterhub-singleuser --port=39765 --notebook-dir=/workdir --NotebookApp.default_url=/lab
[I 2019-11-15 12:03:36.793 JupyterHub log:174] 302 GET /hub/spawn -> /hub/spawn-pending/chdu ([email protected]) 1118.82ms
[I 2019-11-15 12:03:37.011 JupyterHub pages:303] chdu is pending spawn
[I 2019-11-15 12:03:37.016 JupyterHub log:174] 200 GET /hub/spawn-pending/chdu ([email protected]) 110.62ms
[I 2019-11-15 12:03:38.191 SingleUserNotebookApp handlers:164] [beakerx] enabled
[I 2019-11-15 12:03:38.881 SingleUserNotebookApp extension:158] JupyterLab extension loaded from /usr/local/lib/python3.7/dist-packages/jupyterlab
[I 2019-11-15 12:03:38.882 SingleUserNotebookApp extension:159] JupyterLab application directory is /usr/local/share/jupyter/lab
[I 2019-11-15 12:03:39.372 SingleUserNotebookApp singleuser:561] Starting jupyterhub-singleuser server version 1.0.0
[I 2019-11-15 12:03:39.377 JupyterHub base:810] User chdu took 3.586 seconds to start
[I 2019-11-15 12:03:39.377 JupyterHub proxy:261] Adding user chdu to proxy /user/chdu/ => http://127.0.0.1:39765
[I 2019-11-15 12:03:39.381 JupyterHub log:174] 200 GET /hub/api (@127.0.0.1) 1.55ms
[I 2019-11-15 12:03:39.382 SingleUserNotebookApp notebookapp:1825] Serving notebooks from local directory: /workdir
[I 2019-11-15 12:03:39.382 SingleUserNotebookApp notebookapp:1825] The Jupyter Notebook is running at:
[I 2019-11-15 12:03:39.382 SingleUserNotebookApp notebookapp:1825] http://127.0.0.1:39765/user/chdu/
[I 2019-11-15 12:03:39.383 SingleUserNotebookApp notebookapp:1826] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
12:03:39.383 [ConfigProxy] info: Adding route /user/chdu -> http://127.0.0.1:39765
12:03:39.383 [ConfigProxy] info: Route added /user/chdu -> http://127.0.0.1:39765
12:03:39.383 [ConfigProxy] info: 201 POST /api/routes/user/chdu 
[I 2019-11-15 12:03:39.384 JupyterHub users:606] Server chdu is ready
[I 2019-11-15 12:03:39.385 JupyterHub log:174] 200 GET /hub/api/users/chdu/server/progress ([email protected]) 1934.49ms
[I 2019-11-15 12:03:39.387 SingleUserNotebookApp singleuser:542] Updating Hub with activity every 300 seconds
[I 2019-11-15 12:03:39.801 JupyterHub log:174] 200 POST /hub/api/users/chdu/activity ([email protected]) 412.03ms
[I 2019-11-15 12:03:39.894 JupyterHub log:174] 302 GET /hub/spawn-pending/chdu -> /user/chdu/ ([email protected]) 91.32ms
[I 2019-11-15 12:03:40.445 JupyterHub log:174] 302 GET /hub/api/oauth2/authorize?client_id=jupyterhub-user-chdu&redirect_uri=%2Fuser%2Fchdu%2Foauth_callback&response_type=code&state=[secret] -> /user/chdu/oauth_callback?code=[secret]&state=[secret] ([email protected]) 252.01ms
[I 2019-11-15 12:03:40.953 JupyterHub log:174] 200 POST /hub/api/oauth2/token ([email protected]) 387.48ms
[I 2019-11-15 12:03:41.296 JupyterHub log:174] 200 GET /hub/api/authorizations/token/[secret] ([email protected]) 339.41ms
[I 2019-11-15 12:03:41.297 SingleUserNotebookApp auth:981] Logged-in user {'kind': 'user', 'name': 'chdu', 'admin': True, 'groups': [], 'server': '/user/chdu/', 'pending': None, 'created': '2019-11-15T20:03:11.053502Z', 'last_activity': '2019-11-15T20:03:41.205184Z', 'servers': None}
[I 2019-11-15 12:03:43.536 JupyterHub log:174] 200 GET /hub/api/authorizations/token/[secret] ([email protected]) 375.24ms
[I 2019-11-15 12:03:44.489 SingleUserNotebookApp build_handler:49] Build is up to date
[I 2019-11-15 12:03:51.020 SingleUserNotebookApp management:320] New terminal with automatic name: 1
TermSocket.open: 1
TermSocket.open: Opened 1
Websocket closed
[I 2019-11-15 12:05:01.546 SingleUserNotebookApp build_handler:49] Build is up to date
TermSocket.open: 1
TermSocket.open: Opened 1
[I 2019-11-15 12:05:24.559 SingleUserNotebookApp sign:396] Writing notebook-signing key to /home/chdu/.local/share/jupyter/notebook_secret
[W 2019-11-15 12:05:24.562 SingleUserNotebookApp manager:510] Notebook python.ipynb is not trusted
[I 2019-11-15 12:05:25.971 SingleUserNotebookApp kernelmanager:172] Kernel started: 32cf472c-15c1-4eda-9b17-70262111fb31
[I 2019-11-15 12:06:28.760 SingleUserNotebookApp handlers:153] Creating new file in /
[W 2019-11-15 12:06:37.934 SingleUserNotebookApp web:1782] 404 GET /user/chdu/api/contents/untitled.txt?content=0&1573848397723 (10.236.66.101): No such file or directory: untitled.txt
[W 2019-11-15 12:06:37.934 SingleUserNotebookApp handlers:620] No such file or directory: untitled.txt
[I 2019-11-15 12:06:59.235 SingleUserNotebookApp handlers:164] Saving file at /test.py
[I 2019-11-15 12:07:16.055 SingleUserNotebookApp handlers:164] Saving file at /test.py
[I 2019-11-15 12:07:25.694 SingleUserNotebookApp handlers:164] Saving file at /python.ipynb
[W 2019-11-15 12:07:25.694 SingleUserNotebookApp manager:494] Notebook python.ipynb is not trusted
Websocket closed
[I 2019-11-15 12:07:27.721 SingleUserNotebookApp kernelmanager:217] Starting buffering for 32cf472c-15c1-4eda-9b17-70262111fb31:9b5d383a-9c91-406d-865b-da0cfb7ee533
[I 2019-11-15 12:07:30.332 SingleUserNotebookApp build_handler:49] Build is up to date
TermSocket.open: 1
TermSocket.open: Opened 1
[W 2019-11-15 12:07:31.358 SingleUserNotebookApp manager:510] Notebook python.ipynb is not trusted
[I 2019-11-15 12:07:52.507 SingleUserNotebookApp handlers:164] Saving file at /test.py
12:08:11.661 [ConfigProxy] info: 200 GET /api/routes 
[I 2019-11-15 12:08:11.884 JupyterHub proxy:319] Checking routes
[I 2019-11-15 12:08:15.203 JupyterHub log:174] 200 POST /hub/api/users/chdu/activity ([email protected]) 161.14ms
[I 2019-11-15 12:08:53.050 JupyterHub log:174] 200 GET /hub/api/authorizations/token/[secret] ([email protected]) 725.72ms
12:13:11.663 [ConfigProxy] info: 200 GET /api/routes 
[I 2019-11-15 12:13:11.988 JupyterHub proxy:319] Checking routes
[I 2019-11-15 12:13:41.409 JupyterHub log:174] 200 POST /hub/api/users/chdu/activity ([email protected]) 385.07ms
[I 2019-11-15 12:13:55.917 JupyterHub log:174] 200 GET /hub/api/authorizations/token/[secret] ([email protected]) 364.23ms
Websocket closed
[I 2019-11-15 12:15:54.741 SingleUserNotebookApp kernelmanager:217] Starting buffering for 32cf472c-15c1-4eda-9b17-70262111fb31:c2918fff-5e2d-41ab-bf53-f848b6680dec
[I 2019-11-15 12:16:00.247 SingleUserNotebookApp build_handler:49] Build is up to date
TermSocket.open: 1
TermSocket.open: Opened 1
[W 2019-11-15 12:16:02.724 SingleUserNotebookApp manager:510] Notebook python.ipynb is not trusted
12:16:05.966 [ConfigProxy] error: Uncaught Exception: read ECONNRESET
12:16:05.966 [ConfigProxy] error: Error: read ECONNRESET
    at TCP.onStreamRead (internal/stream_base_commons.js:111:27)
[I 2019-11-15 12:16:56.238 SingleUserNotebookApp kernelmanager:217] Starting buffering for 32cf472c-15c1-4eda-9b17-70262111fb31:85dc9082-897b-4634-9582-96e475439af8
Websocket closed
[I 2019-11-15 12:17:36.551 SingleUserNotebookApp build_handler:49] Build is up to date
TermSocket.open: 1
TermSocket.open: Opened 1
[W 2019-11-15 12:17:54.267 SingleUserNotebookApp manager:510] Notebook python.ipynb is not trusted
12:18:11.660 [ConfigProxy] info: 200 GET /api/routes 
[I 2019-11-15 12:18:11.806 JupyterHub proxy:319] Checking routes
[I 2019-11-15 12:18:57.199 JupyterHub log:174] 200 GET /hub/api/authorizations/token/[secret] ([email protected]) 307.31ms
[I 2019-11-15 12:19:00.226 JupyterHub log:174] 200 POST /hub/api/users/chdu/activity ([email protected]) 358.81ms
Websocket closed
[I 2019-11-15 12:19:16.950 SingleUserNotebookApp kernelmanager:217] Starting buffering for 32cf472c-15c1-4eda-9b17-70262111fb31:ee7d5127-b8db-4238-bebf-b0fc472eb171
[I 2019-11-15 12:19:19.552 SingleUserNotebookApp build_handler:49] Build is up to date
[W 2019-11-15 12:19:21.829 SingleUserNotebookApp manager:510] Notebook python.ipynb is not trusted
12:19:21.923 [ConfigProxy] error: Uncaught Exception: read ECONNRESET
12:19:21.924 [ConfigProxy] error: Error: read ECONNRESET
    at TCP.onStreamRead (internal/stream_base_commons.js:111:27)
TermSocket.open: 1
TermSocket.open: Opened 1
[I 2019-11-15 12:19:26.302 SingleUserNotebookApp kernelmanager:217] Starting buffering for 32cf472c-15c1-4eda-9b17-70262111fb31:3c36424a-7544-4e0b-90a3-4d101ac27966
[W 2019-11-15 12:20:10.344 SingleUserNotebookApp manager:510] Notebook python.ipynb is not trusted
[I 2019-11-15 12:21:27.708 SingleUserNotebookApp handlers:164] Saving file at /test.py
[I 2019-11-15 12:22:11.781 SingleUserNotebookApp handlers:164] Saving file at /python.ipynb
[W 2019-11-15 12:22:11.781 SingleUserNotebookApp manager:494] Notebook python.ipynb is not trusted
12:22:31.573 [ConfigProxy] error: Uncaught Exception: read ECONNRESET
12:22:31.573 [ConfigProxy] error: Error: read ECONNRESET
    at TCP.onStreamRead (internal/stream_base_commons.js:111:27)
12:23:11.666 [ConfigProxy] info: 200 GET /api/routes 
[I 2019-11-15 12:23:11.868 JupyterHub proxy:319] Checking routes

@krassowski
Copy link
Member

krassowski commented Nov 15, 2019

Yes, it should be installed before the start of the server. Simple restart should help.

I do not see anything specific either (which indicates that the server extension was not available or did not get loaded for some reason during server startup), but such logs are generally useful - thanks!

@dclong
Copy link
Author

dclong commented Nov 15, 2019

@krassowski Is there a command to force restarting jupyterlab-lsp? The reason is that I'm using JupyterHub via Docker. I couldn't simply restart the Docker container. I have to rebuild the Docker image first. Generally speaking, I try a JupyterLab extension before I build it into my Docker images. Other users that leverage Docker might do the same. Such a restart command might be very helpful for those users.

@bollwyvl
Copy link
Collaborator

bollwyvl commented Nov 15, 2019 via email

@krassowski
Copy link
Member

@dclong I googled a bit and indeed it seems that you will need to rebuild the Docker image. This SO thread touches on the installation of notebook extensions for JupyterHub but there is no solution for in-flight installation (or JupyterHub restart) proposed. If there was only a way to restart JupyterHub inside of the container... but you would probably need to ask in the JupyterHub repo.

The hot reloading of notebooks code was proposed in jupyter/notebook#4795 but this PR stalled (even though it was approved). There was a discussion on discourse linking to this PR recently. @bollwyvl bringing more attention to it might be in-line with your vision of developing jupyter inside of JupyterLab -depending on how far you wish to take it ;) Something about hot-reloading was mentioned in jupyterlab/jupyterlab#7469 but it seems that discussion in this thread went more into the JS/webpack side of things.

@dclong
Copy link
Author

dclong commented Nov 16, 2019

@krassowski Thank you very much for the detailed information! It's not really a problem for me to rebuild the Docker image. It's only a nice-to-have feature if we can dynamically reload/restart the extension.

I will try to install jupyterlab-lsp in my Docker image and check whether it works and update the thread here.

@krassowski
Copy link
Member

krassowski commented Nov 16, 2019

@dclong thanks, looking forward to hearing back from you!

@bollwyvl The the docs section that you linked to for Automatically enabling a server extension mentions that this is "New in Notebook 5.3". I think that it is possible to have JupyterLab 1.1 with notebook 5.2 or older - this might be why it fails sometimes (but not when you tried to do a clean install which uses the latest version). Our reqirements.txt does not have a pinned version for notebook - but I would be happy to keep it this way and instead add a "troubleshooting" section to readme with the instructions to manually enable the extension if it did not kick-off for some reason.

@bollwyvl
Copy link
Collaborator

Well, we're coming up on two years since that release of notebook, and jupyterlab 1.x requires >=4.3.1, so i'd be more inclined to set our pin the same as lab and not bother documenting it further.

It's great to try to support older versions, but as long as it's just us two committers, doing active upstream PRs while trying to create previously unseen features, I don't think we have the bandwidth to code around older stuff. Even python 3.5 will probably be dropped from most of the scientific computing ecosystem next month.

@dclong
Copy link
Author

dclong commented Nov 17, 2019

@krassowski
It works well for me after building jupyterlab-lsp int the Docker image. Thank you so much for the great work which brings JupyterLab into the world of professional IDEs.

@bollwyvl
Copy link
Collaborator

Thanks again for testing out jupyter(lab)-lsp! We've talked about what a sourcegraph service for JupyterHub would look like... aside from leaving the necessary hooks open, it's probably out of scope to take a stab at it in this repository, though, but we'll definitely want to make sure we can handle stuff at scale. I sure would like to have my whole organization's internal code library at my fingertips inside a notebook!

Another exciting organization-level thing would be database-level introspection, such as SQL.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants