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

Support re-connecting to the LSP server after connection is lost #237

Closed
jeanmonet opened this issue Apr 3, 2020 · 12 comments
Closed

Support re-connecting to the LSP server after connection is lost #237

jeanmonet opened this issue Apr 3, 2020 · 12 comments
Labels
enhancement New feature or request

Comments

@jeanmonet
Copy link

Hi,

I was looking for a Python linter and spell checker for Jupyter Lab and found both fantastic projects: pyls and jupyterlab-lsp which seem to allow exactly what I was looking for (lint & type check insite the Jupyter Lab environment).

I've managed to install pyls (with [all] options) via Anaconda and jupyterlab-lsp via pip.

I also assume that after install, all that must be done is launch Jupyter Lab?

After launching Jupyter Lab, the linter seems to be working (at least partially): I can see linter error codes underlining. But I don't see other features such as auto-completion, signature help, go to definition, hover, find references, etc:

image

Unfortunately, I can't seem to find guidance on how to actually use these tools, activate/deactivate features, reload/refresh linter after fixing a typo in a notebook or text editor... Is there some kind of interface for Jupyter Lab to do such things? How does one begin.

I also don't know where the config files for jupyterlab-lsp (& pyls?) are stored / supposed to be, except for pycodestyle / flake8 mentioned here.

For example, I'm trying to use the pyls-mypy extension. Where would I go about modifying the configuration:

"pyls":
{
    "plugins":
    {
        "pyls_mypy":
        {
            "enabled": true,
            "live_mode": false
        }
    }
}

And how would I then be able to run/refresh the mypy type checker while working on a notebook or in the Jupyter Lab text editor?

Some user guidance on how to interact with jupyterlab-lsp & pypls would be much appreciated.

Finally, does jupyterlab-lsp with pypls work with Jupyter Notebook server or just Jupyter Lab?

@jeanmonet jeanmonet changed the title N00b question: any interface or way to refresh / activate / deactivate pyls in JupyterLab? N00b question: any interface or way to refresh / configure pyls in JupyterLab? Apr 3, 2020
@krassowski
Copy link
Member

Hi @jeanmonet, thank you for opening this issue. You are very welcome here and we would be happy to help you with finding out why the features other than linting do not seem to work for you. However, in order to help you, we need to know much more about your setup, including versions of the software you have installed and whether there are any logs in the browser console. Please fill in the template from the "new issue/bug report" page.

As for the configuration, this is something that we are working at (i.e. to make it possible to configure from the user interface). I am afraid I cannot offer a solution at the moment but @bollwyvl might have some ideas.

@jeanmonet
Copy link
Author

Thank you for a quick answer. I've tried to provide more details below.

I just noticed that upon initial load, the singnature help (for example) did seem to work (it loaded once, for the mean function), but then it stopped. It may be related to the error message I extracted from the browser console below.

Installation environment:

  • Ubuntu 18.04 with Anaconda 2020.02, Python 3.7

  • Browser: Chrome 80

  • python-language-server (via conda) 0.31.9

  • jupyterlab 2.0.1

  • jupyterlab-server 1.1.0

  • jupyter-lsp 0.8.0

  • @krassowski/jupyterlab-lsp 1.0.0

I would also add that Anaconda is installed on a shared environment. The user that launches the jupyter lab server does not have write permissions on the files located in the main anaconda3 folder. But I suppose this should not be a problem since specific user configs should be located in the user's home folder?

Screenshot of Chrome's console:

image

image

I guess the disconnect above may explain why the plugin stops working:

image

@krassowski
Copy link
Member

Thank you! Yes, you are right that there is something that interrupts the connection. Do you happen to have the server on a different machine than the browser (e.g. running on JupyterHub or on a cluster)?

Could you further expand the error on the 0th position in the list from connection_manager.js:18? I think that you should be able to copy it in its entirety from the context menu.

Further information about the cause of the pyls server closing the connection might be available in the terminal from whih the jupyter lab was launched. Do you have access to these logs?

@jeanmonet
Copy link
Author

Yes - I relaunched with jupyter lab --debug and am trying to reproduce and find the meaningful lines.

I would also mention that the Jupyter Lab server is exposed via a Nginx reverse proxy, but the config and paths are normally set up to work correctly with Jupyter ressources.

Anaconda is not installed in the user's home directory, but in /opt/anaconda (the user launching Jupyter only has read permissions to folders & subfolders).

In one of the opened notebooks, the selenium package is being imported. So apparently LSP is trying to access the imported package's files - below is an extract from bash where jupyter was launched (note I added '...' for simplicity):

404 GET /api/contents/opt/anaconda/envs/my_env/lib/python3.7/site-pakages/selenium/common/exceptions.py?content=....
: No such file or directory opt/anaconda/envs/....

I notice that the message No such file or directory refers to opt/anaconda/... and not /opt/anaconda/....

It also appears that LSP is trying to create simlinks but these may not work:

404 GET /api/contents/.lsp_simlink/opt/anaconda/envs/my_env/lib/...exceptions.py?format...
: No such file or directory: .lsp_simlink/opt/anaconda/envs/my_env/...

It may be due to my reverse proxy configuration? Or if it is trying to create simlinks in a subfolder of /opt/anaconda/..., it does not have permissions to do so (the user running the server only has read permissions).

In Chrome's console:

serverconnection.js:192 GET https://[JupyterLab]/api/contents/opt/anaconda/envs/my_env/lib/python3.7/site-packages/selenium/common/exceptions.py?content=0&1585943600373 404
n @ serverconnection.js:192
n @ serverconnection.js:76
get @ index.js:477
get @ index.js:170
handle_jump @ jump_to.js:86
execute @ jump_to.js:105
async function (async)
execute @ jump_to.js:104
execute @ command_manager.js:76
execute @ command_manager.js:26
e.execute @ index.js:366
t.triggerActiveItem @ menu.js:316
t._evtMouseUp @ menu.js:652
t.handleEvent @ menu.js:462
jump_to.js:93 Error: Invalid response: 404 
    at index.js:480
    at async qe.handle_jump (jump_to.js:85)
    at async Object.execute (jump_to.js:104)
handle_jump @ jump_to.js:93
async function (async)
handle_jump @ jump_to.js:86
execute @ jump_to.js:105
async function (async)
execute @ jump_to.js:104
execute @ command_manager.js:76
execute @ command_manager.js:26
e.execute @ index.js:366
t.triggerActiveItem @ menu.js:316
t._evtMouseUp @ menu.js:652
t.handleEvent @ menu.js:462
connection_manager.js:154 LSP: .lsp_symlink/opt/anaconda/envs/my_env/lib/python3.7/site-packages/selenium/common/exceptions.py python connected.
jl_adapter.js:309 LSP: Adapter for .lsp_symlink/opt/anaconda/envs/my_env/lib/python3.7/site-packages/selenium/common/exceptions.py is ready.
jl_adapter.js:178 LSP: virtual document(s) for .lsp_symlink/opt/anaconda/envs/my_env/lib/python3.7/site-packages/selenium/common/exceptions.py have been initialized
serverconnection.js:192 GET https://[JupyterLab]/api/contents/.lsp_symlink/opt/anaconda/envs/my_env/lib/python3.7/site-packages/selenium/common/exceptions.py?format=text&type=file&content=1&1585943600543 404

image

@jeanmonet
Copy link
Author

jeanmonet commented Apr 3, 2020

  • also, when it works, the hovering feautre when I click Ctrl seems to disappear within 1 sec, I can't keep it active in Chrome. However in Firefox I don't seem to have this problem.

Adding the expanded Reader received error:

0: Error: Reader received error. Reason: Error during socket reconnect: code = 1006,
reason = at n.asError
(https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:115298) at 
n.fireError 
(https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:115039) at 
n.fireError 
(https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:234738) at 
https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:234235 at 
WebSocket.e.onclose 
(https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:404442)

stack: "Error: Reader received error. Reason: Error during socket reconnect: code = 1006, reason = ↵    at n.asError (https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:115298)↵    at n.fireError (https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:115039)↵    at n.fireError (https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:234738)↵    at https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:234235↵    at WebSocket.e.onclose (https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:404442)"
message: "Reader received error. Reason: Error during socket reconnect: code = 1006, reason = "

^-- I tried to access the URL manually to check if the reverse proxy is the problem: https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js, but it seems to work. Although it's not impossible that Nginx messes up some requests from time to time - I'm trying to investigate this.

image

@jeanmonet
Copy link
Author

jeanmonet commented Apr 3, 2020

Also I confirm, in case it wasn't clear, that I'm connecting remotely to the server, so the browser and the server are not on the same machine.

Here is a terminal output that I managed to catch (that may or not be related):

  • parso 0.6.2
  • jedi 0.15.2
  • pluggy 0.13.1
UTC - ERROR - pyls_jsonrpc.endpoint - Failed to handle request 174
Traceback (most recent call last):
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pyls_jsonrpc/endpoint.py", line 113, in consume
    self._handle_request(message['id'], message['method'], message.get('params'))
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pyls_jsonrpc/endpoint.py", line 182, in _handle_request
    handler_result = handler(params)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pyls_jsonrpc/dispatchers.py", line 23, in handler
    return method(**(params or {}))
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pyls/python_ls.py", line 330, in m_text_document__hover
    return self.hover(textDocument['uri'], position)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pyls/python_ls.py", line 264, in hover
    return self._hook('pyls_hover', doc_uri, position=position) or {'contents': ''}
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pyls/python_ls.py", line 155, in _hook
    return hook_handlers(config=self.config, workspace=workspace, document=doc, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pluggy/hooks.py", line 286, in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pluggy/manager.py", line 93, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pluggy/manager.py", line 337, in traced_hookexec
    return outcome.get_result()
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pluggy/callers.py", line 80, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pluggy/callers.py", line 52, in from_call
    result = func()
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pluggy/manager.py", line 335, in <lambda>
    outcome = _Result.from_call(lambda: oldcall(hook, hook_impls, kwargs))
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pluggy/manager.py", line 87, in <lambda>
    firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pluggy/callers.py", line 208, in _multicall
    return outcome.get_result()
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pluggy/callers.py", line 80, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pluggy/callers.py", line 187, in _multicall
    res = hook_impl.function(*args)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/pyls/plugins/hover.py", line 12, in pyls_hover
    definitions = document.jedi_script(position).goto_definitions()
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/api/__init__.py", line 235, in goto_definitions
    return self._goto_definitions(**kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/api/__init__.py", line 246, in _goto_definitions
    values = helpers.infer_goto_definition(self._inference_state, context, leaf)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/api/helpers.py", line 156, in infer_goto_definition
    return inference_state.goto_definitions(context, leaf)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/__init__.py", line 177, in goto_definitions
    return helpers.infer_call_of_leaf(context, name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/helpers.py", line 81, in infer_call_of_leaf
    return context.infer_node(leaf)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 210, in infer_node
    return infer_node(self, node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 148, in infer_node
    return _infer_node_if_inferred(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 161, in _infer_node_if_inferred
    return _infer_node_cached(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/cache.py", line 42, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 166, in _infer_node_cached
    return _infer_node(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/debug.py", line 82, in wrapper
    return func(*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 62, in wrapper
    return func(context, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 176, in _infer_node
    return infer_atom(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 301, in infer_atom
    return context.py__getattribute__(atom, position=position)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 75, in py__getattribute__
    values = ValueSet.from_sets(name.infer() for name in names)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/common/value.py", line 32, in from_sets
    for set_ in sets:
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 75, in <genexpr>
    values = ValueSet.from_sets(name.infer() for name in names)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/names.py", line 237, in infer
    self.tree_name
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[name](*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/stdlib.py", line 827, in wrapper
    return func(inference_state, context, tree_name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 726, in tree_name_to_values
    types = _remove_statements(context, node, tree_name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 661, in _remove_statements
    return infer_expr_stmt(context, stmt, seek_name=name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 62, in wrapper
    return func(context, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 370, in infer_expr_stmt
    return _infer_expr_stmt(context, stmt, seek_name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/debug.py", line 82, in wrapper
    return func(*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 402, in _infer_expr_stmt
    value_set = context.infer_node(rhs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 210, in infer_node
    return infer_node(self, node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 148, in infer_node
    return _infer_node_if_inferred(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 161, in _infer_node_if_inferred
    return _infer_node_cached(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/cache.py", line 42, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 166, in _infer_node_cached
    return _infer_node(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/debug.py", line 82, in wrapper
    return func(*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 62, in wrapper
    return func(context, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 200, in _infer_node
    value_set = infer_trailer(context, value_set, trailer)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 272, in infer_trailer
    return atom_values.execute(args)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/base_value.py", line 376, in execute
    return ValueSet.from_sets(c.inference_state.execute(c, arguments) for c in self._set)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/common/value.py", line 32, in from_sets
    for set_ in sets:
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/base_value.py", line 376, in <genexpr>
    return ValueSet.from_sets(c.inference_state.execute(c, arguments) for c in self._set)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[name](*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/stdlib.py", line 134, in wrapper
    return call()
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/stdlib.py", line 109, in call
    return callback(value, arguments=arguments)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/__init__.py", line 119, in execute
    value_set = value.py__call__(arguments=arguments)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/value/function.py", line 88, in py__call__
    return function_execution.infer()
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/value/function.py", line 318, in infer
    return self.get_return_values()
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/cache.py", line 42, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/recursion.py", line 87, in wrapper
    result = func(self, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/value/function.py", line 204, in get_return_values
    value_set |= self.infer_node(children[1])
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 210, in infer_node
    return infer_node(self, node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 148, in infer_node
    return _infer_node_if_inferred(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 161, in _infer_node_if_inferred
    return _infer_node_cached(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/cache.py", line 42, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 166, in _infer_node_cached
    return _infer_node(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/debug.py", line 82, in wrapper
    return func(*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 62, in wrapper
    return func(context, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 200, in _infer_node
    value_set = infer_trailer(context, value_set, trailer)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 272, in infer_trailer
    return atom_values.execute(args)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/base_value.py", line 376, in execute
    return ValueSet.from_sets(c.inference_state.execute(c, arguments) for c in self._set)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/common/value.py", line 32, in from_sets
    for set_ in sets:
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/base_value.py", line 376, in <genexpr>
    return ValueSet.from_sets(c.inference_state.execute(c, arguments) for c in self._set)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[name](*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/stdlib.py", line 122, in wrapper
    return call()
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/stdlib.py", line 109, in call
    return callback(value, arguments=arguments)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/__init__.py", line 119, in execute
    value_set = value.py__call__(arguments=arguments)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/value/function.py", line 88, in py__call__
    return function_execution.infer()
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/value/function.py", line 318, in infer
    return self.get_return_values()
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/cache.py", line 42, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/recursion.py", line 87, in wrapper
    result = func(self, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/value/function.py", line 204, in get_return_values
    value_set |= self.infer_node(children[1])
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 210, in infer_node
    return infer_node(self, node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 148, in infer_node
    return _infer_node_if_inferred(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 161, in _infer_node_if_inferred
    return _infer_node_cached(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/cache.py", line 42, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 166, in _infer_node_cached
    return _infer_node(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/debug.py", line 82, in wrapper
    return func(*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 62, in wrapper
    return func(context, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 176, in _infer_node
    return infer_atom(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 301, in infer_atom
    return context.py__getattribute__(atom, position=position)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 43, in py__getattribute__
    names = self.goto(name_or_str, position)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 32, in goto
    names = finder.filter_name(filters, name_or_str)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/finder.py", line 37, in filter_name
    names = filter.get(string_name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/filters.py", line 83, in get
    **filter_kwargs
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/filters.py", line 122, in _filter
    return list(self._check_flows(names))
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/filters.py", line 137, in _check_flows
    origin_scope=self._origin_scope
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/flow_analysis.py", line 78, in reachability_check
    return _break_check(context, value_scope, first_flow_scope, node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/flow_analysis.py", line 93, in _break_check
    reachable = _check_if(context, flow_node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/flow_analysis.py", line 113, in _check_if
    types = context.infer_node(node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 210, in infer_node
    return infer_node(self, node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 148, in infer_node
    return _infer_node_if_inferred(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 161, in _infer_node_if_inferred
    return _infer_node_cached(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/cache.py", line 42, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 166, in _infer_node_cached
    return _infer_node(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/debug.py", line 82, in wrapper
    return func(*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 62, in wrapper
    return func(context, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 209, in _infer_node
    value_set = context.infer_node(element.children[-1])
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 210, in infer_node
    return infer_node(self, node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 148, in infer_node
    return _infer_node_if_inferred(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 161, in _infer_node_if_inferred
    return _infer_node_cached(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/cache.py", line 42, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 166, in _infer_node_cached
    return _infer_node(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/debug.py", line 82, in wrapper
    return func(*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 62, in wrapper
    return func(context, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 176, in _infer_node
    return infer_atom(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 301, in infer_atom
    return context.py__getattribute__(atom, position=position)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 75, in py__getattribute__
    values = ValueSet.from_sets(name.infer() for name in names)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/common/value.py", line 32, in from_sets
    for set_ in sets:
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 75, in <genexpr>
    values = ValueSet.from_sets(name.infer() for name in names)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/names.py", line 237, in infer
    self.tree_name
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[name](*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/stdlib.py", line 827, in wrapper
    return func(inference_state, context, tree_name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 726, in tree_name_to_values
    types = _remove_statements(context, node, tree_name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 661, in _remove_statements
    return infer_expr_stmt(context, stmt, seek_name=name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 62, in wrapper
    return func(context, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 370, in infer_expr_stmt
    return _infer_expr_stmt(context, stmt, seek_name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/debug.py", line 82, in wrapper
    return func(*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 402, in _infer_expr_stmt
    value_set = context.infer_node(rhs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 210, in infer_node
    return infer_node(self, node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 148, in infer_node
    return _infer_node_if_inferred(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 161, in _infer_node_if_inferred
    return _infer_node_cached(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/cache.py", line 42, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 166, in _infer_node_cached
    return _infer_node(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/debug.py", line 82, in wrapper
    return func(*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 62, in wrapper
    return func(context, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 200, in _infer_node
    value_set = infer_trailer(context, value_set, trailer)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 272, in infer_trailer
    return atom_values.execute(args)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/base_value.py", line 376, in execute
    return ValueSet.from_sets(c.inference_state.execute(c, arguments) for c in self._set)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/common/value.py", line 32, in from_sets
    for set_ in sets:
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/base_value.py", line 376, in <genexpr>
    return ValueSet.from_sets(c.inference_state.execute(c, arguments) for c in self._set)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[name](*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/stdlib.py", line 125, in wrapper
    return call()
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/stdlib.py", line 109, in call
    return callback(value, arguments=arguments)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/__init__.py", line 119, in execute
    value_set = value.py__call__(arguments=arguments)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/value/instance.py", line 443, in py__call__
    return function_execution.infer()
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/value/function.py", line 318, in infer
    return self.get_return_values()
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/cache.py", line 42, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/recursion.py", line 87, in wrapper
    result = func(self, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/value/function.py", line 188, in get_return_values
    check = flow_analysis.reachability_check(self, funcdef, r)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/flow_analysis.py", line 78, in reachability_check
    return _break_check(context, value_scope, first_flow_scope, node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/flow_analysis.py", line 93, in _break_check
    reachable = _check_if(context, flow_node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/flow_analysis.py", line 113, in _check_if
    types = context.infer_node(node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 210, in infer_node
    return infer_node(self, node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 148, in infer_node
    return _infer_node_if_inferred(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 161, in _infer_node_if_inferred
    return _infer_node_cached(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/cache.py", line 42, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 166, in _infer_node_cached
    return _infer_node(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/debug.py", line 82, in wrapper
    return func(*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 62, in wrapper
    return func(context, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 209, in _infer_node
    value_set = context.infer_node(element.children[-1])
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 210, in infer_node
    return infer_node(self, node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 148, in infer_node
    return _infer_node_if_inferred(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 161, in _infer_node_if_inferred
    return _infer_node_cached(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/cache.py", line 42, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 166, in _infer_node_cached
    return _infer_node(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/debug.py", line 82, in wrapper
    return func(*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 62, in wrapper
    return func(context, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 176, in _infer_node
    return infer_atom(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 301, in infer_atom
    return context.py__getattribute__(atom, position=position)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 75, in py__getattribute__
    values = ValueSet.from_sets(name.infer() for name in names)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/common/value.py", line 32, in from_sets
    for set_ in sets:
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 75, in <genexpr>
    values = ValueSet.from_sets(name.infer() for name in names)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/names.py", line 237, in infer
    self.tree_name
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[name](*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/stdlib.py", line 827, in wrapper
    return func(inference_state, context, tree_name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 726, in tree_name_to_values
    types = _remove_statements(context, node, tree_name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 661, in _remove_statements
    return infer_expr_stmt(context, stmt, seek_name=name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 62, in wrapper
    return func(context, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 370, in infer_expr_stmt
    return _infer_expr_stmt(context, stmt, seek_name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/debug.py", line 82, in wrapper
    return func(*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 402, in _infer_expr_stmt
    value_set = context.infer_node(rhs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 210, in infer_node
    return infer_node(self, node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 148, in infer_node
    return _infer_node_if_inferred(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 161, in _infer_node_if_inferred
    return _infer_node_cached(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/cache.py", line 42, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 166, in _infer_node_cached
    return _infer_node(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/debug.py", line 82, in wrapper
    return func(*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 62, in wrapper
    return func(context, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 189, in _infer_node
    value_set = context.infer_node(first_child)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 210, in infer_node
    return infer_node(self, node)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 148, in infer_node
    return _infer_node_if_inferred(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 161, in _infer_node_if_inferred
    return _infer_node_cached(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/cache.py", line 42, in wrapper
    rv = function(obj, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 166, in _infer_node_cached
    return _infer_node(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/debug.py", line 82, in wrapper
    return func(*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 62, in wrapper
    return func(context, *args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 176, in _infer_node
    return infer_atom(context, element)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 301, in infer_atom
    return context.py__getattribute__(atom, position=position)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 75, in py__getattribute__
    values = ValueSet.from_sets(name.infer() for name in names)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/common/value.py", line 32, in from_sets
    for set_ in sets:
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/context.py", line 75, in <genexpr>
    values = ValueSet.from_sets(name.infer() for name in names)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/names.py", line 237, in infer
    self.tree_name
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[name](*args, **kwargs)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/plugins/stdlib.py", line 827, in wrapper
    return func(inference_state, context, tree_name)
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/jedi/inference/syntax_tree.py", line 728, in tree_name_to_values
    value_managers = context.infer_node(node.get_test_node_from_name(tree_name))
  File "/opt/anaconda/envs/my_env/lib/python3.7/site-packages/parso/python/tree.py", line 820, in get_test_node_from_name
    raise ValueError('The name is not actually part of a with statement.')
ValueError: The name is not actually part of a with statement.

@jeanmonet
Copy link
Author

Adding to the above. I think i've narrowed-down on at least one of the issues. It seems that after some time (I suspect due to a few minutes of inactivity), the LSP server disconnects:

Error: Reader received error. Reason: Error during socket reconnect: code = 1006, reason = 
    at n.asError (https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:115298)
    at n.fireError (https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:115039)
    at n.fireError (https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:234738)
    at https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:234235
    at WebSocket.e.onclose (https://[JupyterLab]/static/lab/vendors~jupyter-lsp-connection.9ebec1115d0511e9f2e2.js:2:404442)

image
image

Could the disconnect be related to the Jupyter server being exposed to the internet (for secure remote connection) via a Nginx reverse proxy?

Additionally, during the initialization process, I've noticed this Chrome console output:
image
^-- this appeared upon initial load in browser, but I did not notice it affecting functionnality.

Sorry for the multiple messages, hopefully this is useful information.

@krassowski krassowski changed the title N00b question: any interface or way to refresh / configure pyls in JupyterLab? Support re-connecting to the LSP server after connection is lost Apr 26, 2020
@krassowski krassowski added the enhancement New feature or request label Apr 26, 2020
@jeanmonet
Copy link
Author

I think these issues are now resolved.

@skakker
Copy link
Contributor

skakker commented Jan 18, 2021

Hey @jeanmonet , @krassowski , @bollwyvl
I would like to know how this was solved as I am facing exactly the same issue.
Also, running jupyterlab and all the language servers inside a docker container.

The version I am using though is a old one: 0.9.2 of jupyterlab-lsp.

Was this fixed as part of a later commit or a later version?

Adding a screenshot of the error for reference.
Screenshot 2021-01-18 at 3 31 45 PM

@jeanmonet
Copy link
Author

jeanmonet commented Jan 25, 2021

@skakker it must have been resolved in a more recent version. Webconsole now shows me that it's reconnecting periodically, although I still get other warnings (unrelated to this issue), such as: [EDIT: these can be ignored]

image

@krassowski
Copy link
Member

There is nothing to worry about, these hover cache messages should be debug logs not warnings actually.

@krassowski
Copy link
Member

And yes this was fixed in 1.x. Please upgrade.

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

No branches or pull requests

3 participants