Python support is broken

Describe the Bug

Python LSP server is not working, no commands are working (go-to definiton, syntax highlight is broken as well).

Steps to Reproduce

I don’t know, it’s just not working for me.

Expected Behavior

Python LSP server should be working

Operating System

Linux

Current Cursor Version (Menu → About Cursor → Copy)

Version: 1.1.6
VSCode Version: 1.96.2
Commit: 5b19bac7a947f54e4caa3eb7e4c5fbf832389850
Date: 2025-06-25T02:13:33.781Z
Electron: 34.5.1
Chromium: 132.0.6834.210
Node.js: 20.19.0
V8: 13.2.152.41-electron.0
OS: Linux x64 6.15.3-arch1-1

Additional Information

LSP issue

This project has no issues in the visual studio code (Python LSP works properly).
I have the correct venv set.

Currently I’m using the latest python / python debugger extension installed as a .vsix from here, but the issue is persistent with the python plugin from the cursor marketplace (I just can’t install it, since it’s not available for me).

Here’s the python lsp server logs:

2025-06-30 11:29:18.820 [info] semantic_tokens_range file:///home/vsmaxim/Projects/reops-platform/backend/services/users/users/modules/__init__.py 0:0-0:0
2025-06-30 11:29:18.996 [info] semantic_tokens_full file:///home/vsmaxim/Projects/reops-platform/backend/services/users/users/modules/__init__.py 
2025-06-30 11:29:20.503 [info] semantic_tokens_full file:///home/vsmaxim/Projects/reops-platform/backend/services/users/users/modules/api/schemas.py 
2025-06-30 11:29:20.504 [info] semantic_tokens_range file:///home/vsmaxim/Projects/reops-platform/backend/services/users/users/modules/api/schemas.py 0:0-44:20
2025-06-30 11:29:20.509 [info] ERROR:pygls.protocol.json_rpc:Exception occurred for message "7": _pickle.UnpicklingError: invalid load key, ' '.
NoneType: None

2025-06-30 11:29:20.510 [info] [Error - 11:29:20 AM] Request textDocument/semanticTokens/range failed.
2025-06-30 11:29:20.510 [info]   Message: _pickle.UnpicklingError: invalid load key, ' '.
  Code: -32603 
[object Object]
2025-06-30 11:29:20.511 [info] ERROR:pygls.protocol.json_rpc:Exception occurred for message "6": _pickle.UnpicklingError: invalid load key, ' '.
NoneType: None

2025-06-30 11:29:20.511 [info] [Error - 11:29:20 AM] Request textDocument/semanticTokens/full failed.
2025-06-30 11:29:20.511 [info]   Message: _pickle.UnpicklingError: invalid load key, ' '.
  Code: -32603 
[object Object]
2025-06-30 11:29:20.701 [info] ERROR:pygls.protocol.json_rpc:Failed to handle request 8 textDocument/documentSymbol DocumentSymbolParams(text_document=TextDocumentIdentifier(uri='file:///home/vsmaxim/Projects/reops-platform/backend/services/users/users/modules/api/schemas.py'), work_done_token=None, partial_result_token=None)
Traceback (most recent call last):
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/pygls/protocol/json_rpc.py", line 266, in _handle_request
    self._execute_request(msg_id, handler, params)
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/pygls/protocol/json_rpc.py", line 188, in _execute_request
    self._send_response(msg_id, handler(params))
                                ^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi_language_server/server.py", line 546, in document_symbol
    document_symbols = jedi_utils.lsp_document_symbols(names)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi_language_server/jedi_utils.py", line 225, in lsp_document_symbols
    symbol_range = _document_symbol_range(name)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi_language_server/jedi_utils.py", line 204, in _document_symbol_range
    end = name.get_definition_end_position()
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/api/classes.py", line 260, in get_definition_end_position
    if self.type in ("function", "class"):
       ^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/api/classes.py", line 190, in type
    for value in self._name.infer():
                 ^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/names.py", line 281, in infer
    return tree_name_to_values(
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[public_name](*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/stdlib.py", line 878, in wrapper
    return func(inference_state, context, tree_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/django.py", line 177, in wrapper
    result = func(inference_state, context, tree_name)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/syntax_tree.py", line 771, in tree_name_to_values
    types = imports.infer_import(context, tree_name)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/cache.py", line 44, in wrapper
    rv = function(obj, *args, **kwargs)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 53, in infer_import
    _prepare_infer_import(module_context, tree_name)
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 116, in _prepare_infer_import
    return from_import_name, tuple(import_path), import_node.level, importer.follow()
                                                                    ^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 296, in follow
    return import_module_by_names(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 377, in import_module_by_names
    import_module(
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[public_name](*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/flask.py", line 20, in wrapper
    return callback(inference_state, import_names, module_context, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/gradual/typeshed.py", line 115, in wrapper
    python_value_set = ValueSet.from_sets(
                       ^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/base_value.py", line 430, in from_sets
    for set_ in sets:
                ^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/gradual/typeshed.py", line 116, in <genexpr>
    func(inference_state, import_names, p, sys_path,)
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 411, in import_module
    file_io_or_ns, is_pkg = inference_state.compiled_subprocess.get_module_info(
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/compiled/subprocess/__init__.py", line 188, in wrapper
    result = self._compiled_subprocess.run(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/compiled/subprocess/__init__.py", line 296, in run
    return self._send(inference_state_id, function, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/compiled/subprocess/__init__.py", line 318, in _send
    is_exception, traceback, result = pickle_load(self._get_process().stdout)
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/_compatibility.py", line 25, in pickle_load
    return Unpickler(file).load()
           ^^^^^^^^^^^^^^^^^^^^^^
_pickle.UnpicklingError: invalid load key, ' '.

2025-06-30 11:29:20.702 [info] [Error - 11:29:20 AM] Request textDocument/documentSymbol failed.
2025-06-30 11:29:20.702 [info]   Message: _pickle.UnpicklingError: invalid load key, ' '.
  Code: -32603 
[object Object]
2025-06-30 11:29:20.896 [info] ERROR:pygls.protocol.json_rpc:Failed to handle request 9 textDocument/documentSymbol DocumentSymbolParams(text_document=TextDocumentIdentifier(uri='file:///home/vsmaxim/Projects/reops-platform/backend/services/users/users/modules/api/blueprint.py'), work_done_token=None, partial_result_token=None)
Traceback (most recent call last):
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/pygls/protocol/json_rpc.py", line 266, in _handle_request
    self._execute_request(msg_id, handler, params)
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/pygls/protocol/json_rpc.py", line 188, in _execute_request
    self._send_response(msg_id, handler(params))
                                ^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi_language_server/server.py", line 546, in document_symbol
    document_symbols = jedi_utils.lsp_document_symbols(names)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi_language_server/jedi_utils.py", line 225, in lsp_document_symbols
    symbol_range = _document_symbol_range(name)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi_language_server/jedi_utils.py", line 204, in _document_symbol_range
    end = name.get_definition_end_position()
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/api/classes.py", line 260, in get_definition_end_position
    if self.type in ("function", "class"):
       ^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/api/classes.py", line 190, in type
    for value in self._name.infer():
                 ^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/names.py", line 281, in infer
    return tree_name_to_values(
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[public_name](*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/stdlib.py", line 878, in wrapper
    return func(inference_state, context, tree_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/django.py", line 177, in wrapper
    result = func(inference_state, context, tree_name)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/syntax_tree.py", line 771, in tree_name_to_values
    types = imports.infer_import(context, tree_name)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/cache.py", line 44, in wrapper
    rv = function(obj, *args, **kwargs)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 53, in infer_import
    _prepare_infer_import(module_context, tree_name)
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 116, in _prepare_infer_import
    return from_import_name, tuple(import_path), import_node.level, importer.follow()
                                                                    ^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 296, in follow
    return import_module_by_names(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 377, in import_module_by_names
    import_module(
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[public_name](*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/flask.py", line 20, in wrapper
    return callback(inference_state, import_names, module_context, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/gradual/typeshed.py", line 115, in wrapper
    python_value_set = ValueSet.from_sets(
                       ^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/base_value.py", line 430, in from_sets
    for set_ in sets:
                ^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/gradual/typeshed.py", line 116, in <genexpr>
    func(inference_state, import_names, p, sys_path,)
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 411, in import_module
    file_io_or_ns, is_pkg = inference_state.compiled_subprocess.get_module_info(
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/compiled/subprocess/__init__.py", line 188, in wrapper
    result = self._compiled_subprocess.run(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/compiled/subprocess/__init__.py", line 296, in run
    return self._send(inference_state_id, function, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/compiled/subprocess/__init__.py", line 318, in _send
    is_exception, traceback, result = pickle_load(self._get_process().stdout)
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/_compatibility.py", line 25, in pickle_load
    return Unpickler(file).load()
           ^^^^^^^^^^^^^^^^^^^^^^
_pickle.UnpicklingError: invalid load key, ' '.

2025-06-30 11:29:20.896 [info] [Error - 11:29:20 AM] Request textDocument/documentSymbol failed.
2025-06-30 11:29:20.896 [info]   Message: _pickle.UnpicklingError: invalid load key, ' '.
  Code: -32603 
[object Object]
2025-06-30 11:29:20.901 [info] semantic_tokens_full file:///home/vsmaxim/Projects/reops-platform/backend/services/users/users/modules/api/blueprint.py 
2025-06-30 11:29:20.903 [info] ERROR:pygls.protocol.json_rpc:Exception occurred for message "10": _pickle.UnpicklingError: invalid load key, ' '.
NoneType: None

2025-06-30 11:29:20.904 [info] [Error - 11:29:20 AM] Request textDocument/semanticTokens/full failed.
2025-06-30 11:29:20.904 [info]   Message: _pickle.UnpicklingError: invalid load key, ' '.
  Code: -32603 
[object Object]
2025-06-30 11:29:20.989 [info] semantic_tokens_range file:///home/vsmaxim/Projects/reops-platform/backend/services/users/users/modules/api/blueprint.py 0:0-31:0
2025-06-30 11:29:20.990 [info] ERROR:pygls.protocol.json_rpc:Exception occurred for message "11": _pickle.UnpicklingError: invalid load key, ' '.
NoneType: None

2025-06-30 11:29:20.991 [info] [Error - 11:29:20 AM] Request textDocument/semanticTokens/range failed.
2025-06-30 11:29:20.991 [info]   Message: _pickle.UnpicklingError: invalid load key, ' '.
  Code: -32603 
[object Object]
2025-06-30 11:29:21.192 [info] ERROR:pygls.protocol.json_rpc:Failed to handle request 12 textDocument/documentSymbol DocumentSymbolParams(text_document=TextDocumentIdentifier(uri='file:///home/vsmaxim/Projects/reops-platform/backend/services/users/users/modules/api/blueprint.py'), work_done_token=None, partial_result_token=None)
Traceback (most recent call last):
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/pygls/protocol/json_rpc.py", line 266, in _handle_request
    self._execute_request(msg_id, handler, params)
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/pygls/protocol/json_rpc.py", line 188, in _execute_request
    self._send_response(msg_id, handler(params))
                                ^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi_language_server/server.py", line 546, in document_symbol
    document_symbols = jedi_utils.lsp_document_symbols(names)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi_language_server/jedi_utils.py", line 225, in lsp_document_symbols
    symbol_range = _document_symbol_range(name)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi_language_server/jedi_utils.py", line 204, in _document_symbol_range
    end = name.get_definition_end_position()
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/api/classes.py", line 260, in get_definition_end_position
    if self.type in ("function", "class"):
       ^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/api/classes.py", line 190, in type
    for value in self._name.infer():
                 ^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/names.py", line 281, in infer
    return tree_name_to_values(
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[public_name](*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/stdlib.py", line 878, in wrapper
    return func(inference_state, context, tree_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/django.py", line 177, in wrapper
    result = func(inference_state, context, tree_name)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/syntax_tree.py", line 771, in tree_name_to_values
    types = imports.infer_import(context, tree_name)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/cache.py", line 44, in wrapper
    rv = function(obj, *args, **kwargs)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 53, in infer_import
    _prepare_infer_import(module_context, tree_name)
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 116, in _prepare_infer_import
    return from_import_name, tuple(import_path), import_node.level, importer.follow()
                                                                    ^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 296, in follow
    return import_module_by_names(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 377, in import_module_by_names
    import_module(
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[public_name](*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/plugins/flask.py", line 20, in wrapper
    return callback(inference_state, import_names, module_context, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/gradual/typeshed.py", line 115, in wrapper
    python_value_set = ValueSet.from_sets(
                       ^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/base_value.py", line 430, in from_sets
    for set_ in sets:
                ^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/gradual/typeshed.py", line 116, in <genexpr>
    func(inference_state, import_names, p, sys_path,)
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/imports.py", line 411, in import_module
    file_io_or_ns, is_pkg = inference_state.compiled_subprocess.get_module_info(
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/compiled/subprocess/__init__.py", line 188, in wrapper
    result = self._compiled_subprocess.run(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/compiled/subprocess/__init__.py", line 293, in run
    self._send(delete_id, None)
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/inference/compiled/subprocess/__init__.py", line 318, in _send
    is_exception, traceback, result = pickle_load(self._get_process().stdout)
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.8.0/python_files/lib/jedilsp/jedi/_compatibility.py", line 25, in pickle_load
    return Unpickler(file).load()
           ^^^^^^^^^^^^^^^^^^^^^^
_pickle.UnpicklingError: invalid load key, ' '.

2025-06-30 11:29:21.192 [info] [Error - 11:29:21 AM] Request textDocument/documentSymbol failed.
2025-06-30 11:29:21.192 [info]   Message: _pickle.UnpicklingError: invalid load key, ' '.
  Code: -32603 
[object Object]

Cursor marketplace issue

2025-06-30 11:18:29.178 [error] [network] #61: https://marketplace.cursorapi.com/downloads/production/extensions/f1f59ae4-9318-4f3c-a9b5-81b2eaa5f8a5/2025.6.1/linux-x64/Microsoft.VisualStudio.Code.Manifest?targetPlatform=linux-x64 - error GET Failed to fetch
2025-06-30 11:18:29.291 [error] [network] #62: https://marketplace.cursorapi.com/downloads/production/extensions/f1f59ae4-9318-4f3c-a9b5-81b2eaa5f8a5/2025.6.1/linux-x64/Microsoft.VisualStudio.Code.Manifest?targetPlatform=linux-x64 - error GET Failed to fetch
2025-06-30 11:18:29.291 [error] TypeError: Failed to fetch
    at lVu (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:6687:41824)
    at vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:6687:42945
    at C7s.c (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:736:2050)
    at C7s.request (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:6687:42937)
    at dji.M (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:764:167)
    at async dji.getManifest (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:762:84143)
    at async L3e.Cb (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:6045:9495)
    at async L3e.setInput (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:6045:6480)
    at async eVi.U (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:786:20333)
    at async eVi.M (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:786:18884)
    at async eVi.openEditor (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:786:17964)
    at async vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:898:24625
    at async HFs.open (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:6117:19662)
2025-06-30 11:18:29.293 [error] TypeError: Failed to fetch
    at lVu (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:6687:41824)
    at vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:6687:42945
    at C7s.c (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:736:2050)
    at C7s.request (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:6687:42937)
    at dji.M (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:764:167)
    at async dji.getManifest (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:762:84143)
    at async L3e.Cb (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:6045:9495)
    at async L3e.setInput (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:6045:6480)
    at async eVi.U (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:786:20333)
    at async eVi.M (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:786:18884)
    at async eVi.openEditor (vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:786:17964)
    at async vscode-file://vscode-app/tmp/.mount_cursorD0r82n/usr/share/cursor/resources/app/out/vs/workbench/workbench.desktop.main.js:898:24625

Does this stop you from using Cursor

Yes - Cursor is unusable

2 Likes

Hey, sorry about this - we were facing some issues with this but everything should be resolved now!

Hello @danperks!

Surely, the issue with the marketplace is solved, but the Python LSP remains broken even if I install the python plugin from the Cursor marketplace.

Let me know if I can help you somehow with debugging it.

What is strange, that it somehow works for the first couple of LSP calls, and then starts breaking.

Removing all of the __pycache__ directories and restarting LSP seems to help for a couple of calls, but then LSP enters broken state again. (note: I remove all of them with find . -name "__pycache__" -type d -exec rm -rf {} +)

Keep in mind, that I have no issues like that in VS Code, so it’s surely something Cursor related.

The LSP log in such scenario is as follows:

2025-06-30 14:57:34.720 [info] [Error - 2:57:34 PM] Stopping server timed out
2025-06-30 14:57:34.737 [info] [Error - 2:57:34 PM] Server process exited with signal SIGTERM.
2025-06-30 14:57:35.266 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "5"

2025-06-30 14:57:36.612 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "8"

2025-06-30 14:57:37.509 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "16"

2025-06-30 14:57:38.614 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "19"

2025-06-30 14:57:38.997 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "23"

2025-06-30 14:57:39.683 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "30"

2025-06-30 14:57:42.826 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "33"

2025-06-30 14:57:43.831 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "41"

2025-06-30 14:57:45.007 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "44"

2025-06-30 14:57:45.894 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "51"

2025-06-30 14:57:46.996 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "54"

2025-06-30 14:57:50.486 [info] semantic_tokens_full file:///home/vsmaxim/Projects/reops-platform/backend/libs/core/reops/constants/methods.py 
2025-06-30 14:57:50.489 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "67"

2025-06-30 14:57:51.494 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "70"

2025-06-30 14:57:52.845 [info] semantic_tokens_full file:///home/vsmaxim/Projects/reops-platform/backend/services/users/users/modules/api/views.py 
2025-06-30 14:57:52.850 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "82"

2025-06-30 14:57:53.750 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "85"

2025-06-30 14:57:54.756 [info] WARNING:pygls.protocol.json_rpc:Cancel notification for unknown message id "93"

2025-06-30 14:57:55.043 [info] semantic_tokens_full file:///home/vsmaxim/Projects/reops-platform/backend/services/users/users/modules/api/views.py 
2025-06-30 14:57:55.151 [info] ERROR:pygls.protocol.json_rpc:Failed to handle request 96 textDocument/documentSymbol DocumentSymbolParams(text_document=TextDocumentIdentifier(uri='file:///home/vsmaxim/Projects/reops-platform/backend/services/users/users/modules/api/views.py'), work_done_token=None, partial_result_token=None)
Traceback (most recent call last):
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/pygls/protocol/json_rpc.py", line 266, in _handle_request
    self._execute_request(msg_id, handler, params)
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/pygls/protocol/json_rpc.py", line 188, in _execute_request
    self._send_response(msg_id, handler(params))
                                ^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi_language_server/server.py", line 546, in document_symbol
    document_symbols = jedi_utils.lsp_document_symbols(names)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi_language_server/jedi_utils.py", line 225, in lsp_document_symbols
    symbol_range = _document_symbol_range(name)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi_language_server/jedi_utils.py", line 204, in _document_symbol_range
    end = name.get_definition_end_position()
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/api/classes.py", line 260, in get_definition_end_position
    if self.type in ("function", "class"):
       ^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/api/classes.py", line 190, in type
    for value in self._name.infer():
                 ^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/inference/names.py", line 281, in infer
    return tree_name_to_values(
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[public_name](*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/plugins/stdlib.py", line 878, in wrapper
    return func(inference_state, context, tree_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/plugins/django.py", line 177, in wrapper
    result = func(inference_state, context, tree_name)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/inference/syntax_tree.py", line 771, in tree_name_to_values
    types = imports.infer_import(context, tree_name)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/inference/cache.py", line 44, in wrapper
    rv = function(obj, *args, **kwargs)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/inference/imports.py", line 53, in infer_import
    _prepare_infer_import(module_context, tree_name)
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/inference/imports.py", line 116, in _prepare_infer_import
    return from_import_name, tuple(import_path), import_node.level, importer.follow()
                                                                    ^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/inference/imports.py", line 296, in follow
    return import_module_by_names(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/inference/imports.py", line 377, in import_module_by_names
    import_module(
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/plugins/__init__.py", line 21, in wrapper
    return built_functions[public_name](*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/plugins/flask.py", line 20, in wrapper
    return callback(inference_state, import_names, module_context, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/inference/gradual/typeshed.py", line 115, in wrapper
    python_value_set = ValueSet.from_sets(
                       ^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/inference/base_value.py", line 430, in from_sets
    for set_ in sets:
                ^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/inference/gradual/typeshed.py", line 116, in <genexpr>
    func(inference_state, import_names, p, sys_path,)
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/inference/imports.py", line 425, in import_module
    file_io_or_ns, is_pkg = inference_state.compiled_subprocess.get_module_info(
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/inference/compiled/subprocess/__init__.py", line 188, in wrapper
    result = self._compiled_subprocess.run(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/inference/compiled/subprocess/__init__.py", line 296, in run
    return self._send(inference_state_id, function, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/inference/compiled/subprocess/__init__.py", line 318, in _send
    is_exception, traceback, result = pickle_load(self._get_process().stdout)
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/vsmaxim/.cursor/extensions/ms-python.python-2025.6.1-linux-x64/python_files/lib/jedilsp/jedi/_compatibility.py", line 25, in pickle_load
    return Unpickler(file).load()
           ^^^^^^^^^^^^^^^^^^^^^^
_pickle.UnpicklingError: invalid load key, 'n'.

2025-06-30 14:57:55.154 [info] [Error - 2:57:55 PM] Request textDocument/documentSymbol failed.
2025-06-30 14:57:55.154 [info]   Message: _pickle.UnpicklingError: invalid load key, 'n'.

Ah, sorry, didn’t realise this was a separate issue!
Tagging @ravirahman as our resident expert.

1 Like

It looks like the old, Jedi language server is active. Can you install the Python extension by Anysphere?

Then, inside your settings, please set python.languageServer to “None” (this should be done automatically when you install our Python extension)

Thanks @ravirahman, this seems to work. One more question though, why does the languageServer has to be None? This seems to have disabled refactorings (like “Move to a new file”).

Does it affect anything else?

“None” allows our language server (provided in the Anysphere Python extension) to take effect. It’s an unintuitive choice, but we need it to be set to that. Our extension doesn’t have the Move to a new file command, unfortunately.