question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

pyls crashes after invalid path exception on Windows

See original GitHub issue

I am evaluating the new LSP package for Sublime Text 3 together with python-language-server at the moment.

Sublime Text freezes frequently with LSP connected to pyls, which is discussed in https://github.com/tomv564/LSP/issues/12

After some investigation I found a crash of pyls to cause LSP to hang while reading from stdout/stderr, which might be the reason for the troubles.

I configured pyls to write a logfile instead of writing errors to stderr, which seems to prevent ST from freezing so far. The log shows following errors at some point.

It looks like pyls to not translate the file uri correctly at some point, which causes invalid path exceptions on file evaluation. I haven’t located the issue nor did I try to fix it yet, so I am not quite sure whether it is an issue caused by LSP or pyls. As LSP sends an uri like file://C:/... I consider pyls to not translate the file path correctly.

2017-08-18 18:14:03,293 UTC - ERROR - pyls.language_server - CAUGHT
Traceback (most recent call last):
  File "c:\apps\python36\lib\site-packages\pyls\language_server.py", line 67, in wrapped
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\pyls\python_ls.py", line 137, in m_text_document__hover
    return self.hover(textDocument['uri'], position)
  File "c:\apps\python36\lib\site-packages\pyls\python_ls.py", line 88, in hover
    return self._hook(self._hooks.pyls_hover, doc_uri, position=position) or {'contents': ''}
  File "c:\apps\python36\lib\site-packages\pyls\python_ls.py", line 57, in _hook
    return hook(config=self.config, workspace=self.workspace, document=doc, **kwargs)
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 745, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 339, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 302, in __call__
    return outcome.get_result()
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 279, in get_result
    raise ex[1].with_traceback(ex[2])
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 265, in __init__
    self.result = func()
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 300, in <lambda>
    outcome = _CallOutcome(lambda: self.oldcall(hook, hook_impls, kwargs))
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 334, in <lambda>
    _MultiCall(methods, kwargs, hook.spec_opts).execute()
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 614, in execute
    res = hook_impl.function(*args)
  File "c:\apps\python36\lib\site-packages\pyls\plugins\hover.py", line 10, in pyls_hover
    definitions = document.jedi_script(position).goto_definitions()
  File "c:\apps\python36\lib\site-packages\jedi\api\__init__.py", line 203, in goto_definitions
    definitions = helpers.evaluate_goto_definition(self._evaluator, context, leaf)
  File "c:\apps\python36\lib\site-packages\jedi\api\helpers.py", line 198, in evaluate_goto_definition
    return evaluator.goto_definitions(context, leaf)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 452, in goto_definitions
    return self.eval_statement(context, def_, name)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 135, in eval_statement
    return self._eval_stmt(context, stmt, seek_name)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 151, in _eval_stmt
    types = self.eval_element(context, rhs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 252, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 264, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 268, in _eval_element_cached
    return self._eval_element_not_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 289, in _eval_element_not_cached
    types = self.eval_atom(context, first_child)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 347, in eval_atom
    search_global=True
  File "c:\apps\python36\lib\site-packages\jedi\_compatibility.py", line 213, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 52, in py__getattribute__
    self, name_or_str, name_context, position, search_global, is_goto)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 130, in find_types
    return f.find(filters, attribute_lookup=not search_global)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in _names_to_types
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in unite
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in <genexpr>
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in <genexpr>
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\filters.py", line 117, in infer
    return self.get_param().infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\param.py", line 224, in infer
    return self._lazy_context.infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\instance.py", line 384, in infer
    return self._param.infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 51, in infer
    return unite(p.infer() for p in self._executed_params)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in unite
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in <genexpr>
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 51, in <genexpr>
    return unite(p.infer() for p in self._executed_params)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\param.py", line 224, in infer
    return self._lazy_context.infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 120, in infer
    return self._context.eval_node(self.data)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 37, in eval_node
    return self.evaluator.eval_element(self, node)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 252, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 264, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 268, in _eval_element_cached
    return self._eval_element_not_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 276, in _eval_element_not_cached
    types = self.eval_atom(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 347, in eval_atom
    search_global=True
  File "c:\apps\python36\lib\site-packages\jedi\_compatibility.py", line 213, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 52, in py__getattribute__
    self, name_or_str, name_context, position, search_global, is_goto)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 130, in find_types
    return f.find(filters, attribute_lookup=not search_global)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in _names_to_types
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in unite
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in <genexpr>
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in <genexpr>
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\filters.py", line 101, in infer
    return self.get_param().infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\filters.py", line 104, in get_param
    params = self.parent_context.get_params()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\representation.py", line 407, in get_params
    return search_params(self.evaluator, self.parent_context, self.tree_node)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 78, in search_params
    funcdef
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 196, in wrapper
    return list(func(*args, **kwargs))
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 114, in _search_function_executions
    evaluator, [module_context], func_string_name):
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\imports.py", line 530, in get_modules_containing_name
    for file_name in os.listdir(d):
OSError: [WinError 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: 'C:\\C:\\Apps\\Sublime\\Data\\Packages\\LSP'
2017-08-18 18:14:03,302 UTC - ERROR - jsonrpc.manager - API Exception: {'type': 'OSError', 'args': (22, 'Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch'), 'message': "[WinError 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: 'C:\\\\C:\\\\Apps\\\\Sublime\\\\Data\\\\Packages\\\\LSP'"}
Traceback (most recent call last):
  File "c:\apps\python36\lib\site-packages\jsonrpc\manager.py", line 108, in _get_responses
    result = method(*request.args, **request.kwargs)
  File "c:\apps\python36\lib\site-packages\pyls\language_server.py", line 67, in wrapped
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\pyls\python_ls.py", line 137, in m_text_document__hover
    return self.hover(textDocument['uri'], position)
  File "c:\apps\python36\lib\site-packages\pyls\python_ls.py", line 88, in hover
    return self._hook(self._hooks.pyls_hover, doc_uri, position=position) or {'contents': ''}
  File "c:\apps\python36\lib\site-packages\pyls\python_ls.py", line 57, in _hook
    return hook(config=self.config, workspace=self.workspace, document=doc, **kwargs)
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 745, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 339, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 302, in __call__
    return outcome.get_result()
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 279, in get_result
    raise ex[1].with_traceback(ex[2])
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 265, in __init__
    self.result = func()
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 300, in <lambda>
    outcome = _CallOutcome(lambda: self.oldcall(hook, hook_impls, kwargs))
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 334, in <lambda>
    _MultiCall(methods, kwargs, hook.spec_opts).execute()
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 614, in execute
    res = hook_impl.function(*args)
  File "c:\apps\python36\lib\site-packages\pyls\plugins\hover.py", line 10, in pyls_hover
    definitions = document.jedi_script(position).goto_definitions()
  File "c:\apps\python36\lib\site-packages\jedi\api\__init__.py", line 203, in goto_definitions
    definitions = helpers.evaluate_goto_definition(self._evaluator, context, leaf)
  File "c:\apps\python36\lib\site-packages\jedi\api\helpers.py", line 198, in evaluate_goto_definition
    return evaluator.goto_definitions(context, leaf)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 452, in goto_definitions
    return self.eval_statement(context, def_, name)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 135, in eval_statement
    return self._eval_stmt(context, stmt, seek_name)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 151, in _eval_stmt
    types = self.eval_element(context, rhs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 252, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 264, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 268, in _eval_element_cached
    return self._eval_element_not_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 289, in _eval_element_not_cached
    types = self.eval_atom(context, first_child)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 347, in eval_atom
    search_global=True
  File "c:\apps\python36\lib\site-packages\jedi\_compatibility.py", line 213, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 52, in py__getattribute__
    self, name_or_str, name_context, position, search_global, is_goto)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 130, in find_types
    return f.find(filters, attribute_lookup=not search_global)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in _names_to_types
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in unite
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in <genexpr>
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in <genexpr>
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\filters.py", line 117, in infer
    return self.get_param().infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\param.py", line 224, in infer
    return self._lazy_context.infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\instance.py", line 384, in infer
    return self._param.infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 51, in infer
    return unite(p.infer() for p in self._executed_params)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in unite
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in <genexpr>
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 51, in <genexpr>
    return unite(p.infer() for p in self._executed_params)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\param.py", line 224, in infer
    return self._lazy_context.infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 120, in infer
    return self._context.eval_node(self.data)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 37, in eval_node
    return self.evaluator.eval_element(self, node)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 252, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 264, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 268, in _eval_element_cached
    return self._eval_element_not_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 276, in _eval_element_not_cached
    types = self.eval_atom(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 347, in eval_atom
    search_global=True
  File "c:\apps\python36\lib\site-packages\jedi\_compatibility.py", line 213, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 52, in py__getattribute__
    self, name_or_str, name_context, position, search_global, is_goto)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 130, in find_types
    return f.find(filters, attribute_lookup=not search_global)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in _names_to_types
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in unite
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in <genexpr>
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in <genexpr>
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\filters.py", line 101, in infer
    return self.get_param().infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\filters.py", line 104, in get_param
    params = self.parent_context.get_params()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\representation.py", line 407, in get_params
    return search_params(self.evaluator, self.parent_context, self.tree_node)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 78, in search_params
    funcdef
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 196, in wrapper
    return list(func(*args, **kwargs))
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 114, in _search_function_executions
    evaluator, [module_context], func_string_name):
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\imports.py", line 530, in get_modules_containing_name
    for file_name in os.listdir(d):
OSError: [WinError 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: 'C:\\C:\\Apps\\Sublime\\Data\\Packages\\LSP'
2017-08-18 18:14:10,134 UTC - ERROR - pyls.language_server - CAUGHT
Traceback (most recent call last):
  File "c:\apps\python36\lib\site-packages\pyls\language_server.py", line 67, in wrapped
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\pyls\python_ls.py", line 137, in m_text_document__hover
    return self.hover(textDocument['uri'], position)
  File "c:\apps\python36\lib\site-packages\pyls\python_ls.py", line 88, in hover
    return self._hook(self._hooks.pyls_hover, doc_uri, position=position) or {'contents': ''}
  File "c:\apps\python36\lib\site-packages\pyls\python_ls.py", line 57, in _hook
    return hook(config=self.config, workspace=self.workspace, document=doc, **kwargs)
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 745, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 339, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 302, in __call__
    return outcome.get_result()
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 279, in get_result
    raise ex[1].with_traceback(ex[2])
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 265, in __init__
    self.result = func()
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 300, in <lambda>
    outcome = _CallOutcome(lambda: self.oldcall(hook, hook_impls, kwargs))
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 334, in <lambda>
    _MultiCall(methods, kwargs, hook.spec_opts).execute()
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 614, in execute
    res = hook_impl.function(*args)
  File "c:\apps\python36\lib\site-packages\pyls\plugins\hover.py", line 10, in pyls_hover
    definitions = document.jedi_script(position).goto_definitions()
  File "c:\apps\python36\lib\site-packages\jedi\api\__init__.py", line 203, in goto_definitions
    definitions = helpers.evaluate_goto_definition(self._evaluator, context, leaf)
  File "c:\apps\python36\lib\site-packages\jedi\api\helpers.py", line 198, in evaluate_goto_definition
    return evaluator.goto_definitions(context, leaf)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 462, in goto_definitions
    return helpers.evaluate_call_of_leaf(context, name)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\helpers.py", line 53, in evaluate_call_of_leaf
    return context.eval_node(leaf)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 37, in eval_node
    return self.evaluator.eval_element(self, node)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 252, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 264, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 268, in _eval_element_cached
    return self._eval_element_not_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 276, in _eval_element_not_cached
    types = self.eval_atom(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 347, in eval_atom
    search_global=True
  File "c:\apps\python36\lib\site-packages\jedi\_compatibility.py", line 213, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 52, in py__getattribute__
    self, name_or_str, name_context, position, search_global, is_goto)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 130, in find_types
    return f.find(filters, attribute_lookup=not search_global)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in _names_to_types
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in unite
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in <genexpr>
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in <genexpr>
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\filters.py", line 117, in infer
    return self.get_param().infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\param.py", line 224, in infer
    return self._lazy_context.infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\instance.py", line 384, in infer
    return self._param.infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 51, in infer
    return unite(p.infer() for p in self._executed_params)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in unite
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in <genexpr>
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 51, in <genexpr>
    return unite(p.infer() for p in self._executed_params)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\param.py", line 224, in infer
    return self._lazy_context.infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 120, in infer
    return self._context.eval_node(self.data)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 37, in eval_node
    return self.evaluator.eval_element(self, node)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 252, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 264, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 268, in _eval_element_cached
    return self._eval_element_not_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 276, in _eval_element_not_cached
    types = self.eval_atom(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 347, in eval_atom
    search_global=True
  File "c:\apps\python36\lib\site-packages\jedi\_compatibility.py", line 213, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 52, in py__getattribute__
    self, name_or_str, name_context, position, search_global, is_goto)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 130, in find_types
    return f.find(filters, attribute_lookup=not search_global)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in _names_to_types
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in unite
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in <genexpr>
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in <genexpr>
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\filters.py", line 101, in infer
    return self.get_param().infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\filters.py", line 104, in get_param
    params = self.parent_context.get_params()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\representation.py", line 407, in get_params
    return search_params(self.evaluator, self.parent_context, self.tree_node)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 78, in search_params
    funcdef
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 196, in wrapper
    return list(func(*args, **kwargs))
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 114, in _search_function_executions
    evaluator, [module_context], func_string_name):
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\imports.py", line 530, in get_modules_containing_name
    for file_name in os.listdir(d):
OSError: [WinError 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: 'C:\\C:\\Apps\\Sublime\\Data\\Packages\\LSP'
2017-08-18 18:14:10,136 UTC - ERROR - jsonrpc.manager - API Exception: {'type': 'OSError', 'args': (22, 'Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch'), 'message': "[WinError 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: 'C:\\\\C:\\\\Apps\\\\Sublime\\\\Data\\\\Packages\\\\LSP'"}
Traceback (most recent call last):
  File "c:\apps\python36\lib\site-packages\jsonrpc\manager.py", line 108, in _get_responses
    result = method(*request.args, **request.kwargs)
  File "c:\apps\python36\lib\site-packages\pyls\language_server.py", line 67, in wrapped
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\pyls\python_ls.py", line 137, in m_text_document__hover
    return self.hover(textDocument['uri'], position)
  File "c:\apps\python36\lib\site-packages\pyls\python_ls.py", line 88, in hover
    return self._hook(self._hooks.pyls_hover, doc_uri, position=position) or {'contents': ''}
  File "c:\apps\python36\lib\site-packages\pyls\python_ls.py", line 57, in _hook
    return hook(config=self.config, workspace=self.workspace, document=doc, **kwargs)
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 745, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 339, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 302, in __call__
    return outcome.get_result()
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 279, in get_result
    raise ex[1].with_traceback(ex[2])
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 265, in __init__
    self.result = func()
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 300, in <lambda>
    outcome = _CallOutcome(lambda: self.oldcall(hook, hook_impls, kwargs))
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 334, in <lambda>
    _MultiCall(methods, kwargs, hook.spec_opts).execute()
  File "c:\apps\python36\lib\site-packages\pluggy.py", line 614, in execute
    res = hook_impl.function(*args)
  File "c:\apps\python36\lib\site-packages\pyls\plugins\hover.py", line 10, in pyls_hover
    definitions = document.jedi_script(position).goto_definitions()
  File "c:\apps\python36\lib\site-packages\jedi\api\__init__.py", line 203, in goto_definitions
    definitions = helpers.evaluate_goto_definition(self._evaluator, context, leaf)
  File "c:\apps\python36\lib\site-packages\jedi\api\helpers.py", line 198, in evaluate_goto_definition
    return evaluator.goto_definitions(context, leaf)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 462, in goto_definitions
    return helpers.evaluate_call_of_leaf(context, name)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\helpers.py", line 53, in evaluate_call_of_leaf
    return context.eval_node(leaf)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 37, in eval_node
    return self.evaluator.eval_element(self, node)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 252, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 264, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 268, in _eval_element_cached
    return self._eval_element_not_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 276, in _eval_element_not_cached
    types = self.eval_atom(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 347, in eval_atom
    search_global=True
  File "c:\apps\python36\lib\site-packages\jedi\_compatibility.py", line 213, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 52, in py__getattribute__
    self, name_or_str, name_context, position, search_global, is_goto)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 130, in find_types
    return f.find(filters, attribute_lookup=not search_global)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in _names_to_types
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in unite
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in <genexpr>
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in <genexpr>
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\filters.py", line 117, in infer
    return self.get_param().infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\param.py", line 224, in infer
    return self._lazy_context.infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\instance.py", line 384, in infer
    return self._param.infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 51, in infer
    return unite(p.infer() for p in self._executed_params)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in unite
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in <genexpr>
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 51, in <genexpr>
    return unite(p.infer() for p in self._executed_params)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\param.py", line 224, in infer
    return self._lazy_context.infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 120, in infer
    return self._context.eval_node(self.data)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 37, in eval_node
    return self.evaluator.eval_element(self, node)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 252, in eval_element
    return self._eval_element_if_evaluated(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 264, in _eval_element_if_evaluated
    return self._eval_element_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 268, in _eval_element_cached
    return self._eval_element_not_cached(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 276, in _eval_element_not_cached
    types = self.eval_atom(context, element)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 347, in eval_atom
    search_global=True
  File "c:\apps\python36\lib\site-packages\jedi\_compatibility.py", line 213, in <lambda>
    return lambda *args, **kwargs: self.func(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\context.py", line 52, in py__getattribute__
    self, name_or_str, name_context, position, search_global, is_goto)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\__init__.py", line 130, in find_types
    return f.find(filters, attribute_lookup=not search_global)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 64, in find
    types = self._names_to_types(names, attribute_lookup)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in _names_to_types
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in unite
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 191, in <genexpr>
    return set(typ for types in iterable for typ in types)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\finder.py", line 147, in <genexpr>
    types = unite(name.infer() for name in names)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\filters.py", line 101, in infer
    return self.get_param().infer()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\filters.py", line 104, in get_param
    params = self.parent_context.get_params()
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\representation.py", line 407, in get_params
    return search_params(self.evaluator, self.parent_context, self.tree_node)
  File "c:\apps\python36\lib\site-packages\jedi\debug.py", line 81, in wrapper
    return func(*args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 78, in search_params
    funcdef
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\cache.py", line 41, in wrapper
    rv = function(obj, *args, **kwargs)
  File "c:\apps\python36\lib\site-packages\jedi\common.py", line 196, in wrapper
    return list(func(*args, **kwargs))
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\dynamic.py", line 114, in _search_function_executions
    evaluator, [module_context], func_string_name):
  File "c:\apps\python36\lib\site-packages\jedi\evaluate\imports.py", line 530, in get_modules_containing_name
    for file_name in os.listdir(d):
OSError: [WinError 123] Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch: 'C:\\C:\\Apps\\Sublime\\Data\\Packages\\LSP'

  • Windows 10 x64 1703
  • python 3.6.2
  • pyls 0.4.1 installed using pip

Issue Analytics

  • State:closed
  • Created 6 years ago
  • Comments:8 (8 by maintainers)

github_iconTop GitHub Comments

1reaction
gatesncommented, Aug 19, 2017

You shouldn’t assume “file” is the scheme of the URI


From: deathaxe notifications@github.com Sent: Friday, August 18, 2017 4:34:51 PM To: palantir/python-language-server Cc: Nicholas Gates; Comment Subject: Re: [palantir/python-language-server] pyls crashes after invalid path exception on Windows (#94)

Yep, the unquote(urlparse(uri)) constructs result in /C:/Apps/… path instead of C:\Apps.. which causes jedi to add another C:\ to the path as it interprets the leading slash as relative path.

I was able to fix the issue by using the following function from LSP package as replacement for unquote(urlparse(uri)) in workspace.py

def uri_to_filename(uri: str) -> str: if os.name == ‘nt’: path = url2pathname(uri.replace(“file://”, “”)) else: path = url2pathname(uri).replace(“file://”, “”) # debug(uri, path) return path

— You are receiving this because you commented. Reply to this email directly, view it on GitHubhttps://github.com/palantir/python-language-server/issues/94#issuecomment-323454587, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AB1rdO5DUArHtu4c994tRgV95vEAJy8qks5sZfVrgaJpZM4O7xX5.

0reactions
deathaxecommented, Aug 21, 2017

Works like a charm so far 👍

Read more comments on GitHub >

github_iconTop Results From Across the Web

Hot reload fails with InvalidPathException on Windows #3592
When a Quarkus application runs in dev mode, i. e. using mvn quarkus:dev, ... Hot reload fails with InvalidPathException on Windows #3592.
Read more >
invalid path ,Backslashes not allowed - python - Stack Overflow
variable in my code is giving path containing backslash,after which the program crashes. the folder hierarchy in my dropbox account is :
Read more >
Unity 2021.3.4
Kernel: Unity crashes on StackWalker::GetCurrentCallstack when ... Mono: Fixed an incorrect exception being thrown via Process.Start when ...
Read more >
InvalidPathException (Java SE 11 & JDK 11 )
Unchecked exception thrown when path string cannot be converted into a Path because the path string contains invalid characters, or the path string...
Read more >
java.nio.file.InvalidPathException [137488460] - Issue Tracker
Really I am just saying - aapt DOES CRASH on my very vanilla Win XP ADT setup. (As in Windows XP pops a...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found