pappasam / jedi-language-server

A Python language server exclusively for Jedi. If Jedi supports it well, this language server should too.
MIT License
572 stars 44 forks source link

Cannot collapse/ fold code block anymore #228

Open BCArg opened 1 year ago

BCArg commented 1 year ago

Please see full description of bug, initially reported on the vscode-python repository

BCArg commented 1 year ago

below is the message from Python Language Sever:

Traceback (most recent call last):
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/run-jedi-language-server.py", line 9, in <module>
    from jedi_language_server.cli import cli
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/jedi_language_server/cli.py", line 7, in <module>
    from .server import SERVER
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/jedi_language_server/server.py", line 14, in <module>
    from pydantic import ValidationError
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/__init__.py", line 2, in <module>
    from . import dataclasses
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/dataclasses.py", line 3, in <module>
    from .class_validators import gather_all_validators
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/class_validators.py", line 8, in <module>
    from .errors import ConfigError
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/errors.py", line 5, in <module>
    from .typing import display_as_type
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/typing.py", line 23, in <module>
    from typing_extensions import Annotated, Literal
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/typing_extensions.py", line 159, in <module>
    class _FinalForm(typing._SpecialForm, _root=True):
AttributeError: module 'typing' has no attribute '_SpecialForm'
[Info  - 9:30:09 AM] Connection to server got closed. Server will restart.
[Error - 9:30:09 AM] Server initialization failed.
  Message: Pending response rejected since connection got disposed
  Code: -32097 
[Error - 9:30:09 AM] Python Jedi client: couldn't create connection to server.
  Message: Pending response rejected since connection got disposed
  Code: -32097 
Traceback (most recent call last):
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/run-jedi-language-server.py", line 9, in <module>
    from jedi_language_server.cli import cli
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/jedi_language_server/cli.py", line 7, in <module>
    from .server import SERVER
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/jedi_language_server/server.py", line 14, in <module>
    from pydantic import ValidationError
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/__init__.py", line 2, in <module>
    from . import dataclasses
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/dataclasses.py", line 3, in <module>
    from .class_validators import gather_all_validators
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/class_validators.py", line 8, in <module>
    from .errors import ConfigError
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/errors.py", line 5, in <module>
    from .typing import display_as_type
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/typing.py", line 23, in <module>
    from typing_extensions import Annotated, Literal
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/typing_extensions.py", line 159, in <module>
    class _FinalForm(typing._SpecialForm, _root=True):
AttributeError: module 'typing' has no attribute '_SpecialForm'
[Info  - 9:30:09 AM] Connection to server got closed. Server will restart.
[Error - 9:30:09 AM] Server initialization failed.
  Message: Pending response rejected since connection got disposed
  Code: -32097 
[Error - 9:30:09 AM] Python Jedi client: couldn't create connection to server.
  Message: Pending response rejected since connection got disposed
  Code: -32097 
Traceback (most recent call last):
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/run-jedi-language-server.py", line 9, in <module>
    from jedi_language_server.cli import cli
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/jedi_language_server/cli.py", line 7, in <module>
    from .server import SERVER
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/jedi_language_server/server.py", line 14, in <module>
    from pydantic import ValidationError
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/__init__.py", line 2, in <module>
    from . import dataclasses
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/dataclasses.py", line 3, in <module>
    from .class_validators import gather_all_validators
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/class_validators.py", line 8, in <module>
    from .errors import ConfigError
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/errors.py", line 5, in <module>
    from .typing import display_as_type
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/typing.py", line 23, in <module>
    from typing_extensions import Annotated, Literal
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/typing_extensions.py", line 159, in <module>
    class _FinalForm(typing._SpecialForm, _root=True):
AttributeError: module 'typing' has no attribute '_SpecialForm'
[Info  - 9:30:09 AM] Connection to server got closed. Server will restart.
[Error - 9:30:09 AM] Server initialization failed.
  Message: Pending response rejected since connection got disposed
  Code: -32097 
[Error - 9:30:09 AM] Python Jedi client: couldn't create connection to server.
  Message: Pending response rejected since connection got disposed
  Code: -32097 
[Error - 9:30:09 AM] Restarting server failed
  Message: Pending response rejected since connection got disposed
  Code: -32097 
Traceback (most recent call last):
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/run-jedi-language-server.py", line 9, in <module>
    from jedi_language_server.cli import cli
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/jedi_language_server/cli.py", line 7, in <module>
    from .server import SERVER
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/jedi_language_server/server.py", line 14, in <module>
    from pydantic import ValidationError
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/__init__.py", line 2, in <module>
    from . import dataclasses
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/dataclasses.py", line 3, in <module>
    from .class_validators import gather_all_validators
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/class_validators.py", line 8, in <module>
    from .errors import ConfigError
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/errors.py", line 5, in <module>
    from .typing import display_as_type
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/typing.py", line 23, in <module>
    from typing_extensions import Annotated, Literal
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/typing_extensions.py", line 159, in <module>
    class _FinalForm(typing._SpecialForm, _root=True):
AttributeError: module 'typing' has no attribute '_SpecialForm'
[Info  - 9:30:10 AM] Connection to server got closed. Server will restart.
[Error - 9:30:10 AM] Server initialization failed.
  Message: Pending response rejected since connection got disposed
  Code: -32097 
[Error - 9:30:10 AM] Python Jedi client: couldn't create connection to server.
  Message: Pending response rejected since connection got disposed
  Code: -32097 
[Error - 9:30:10 AM] Restarting server failed
  Message: Pending response rejected since connection got disposed
  Code: -32097 
Traceback (most recent call last):
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/run-jedi-language-server.py", line 9, in <module>
    from jedi_language_server.cli import cli
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/jedi_language_server/cli.py", line 7, in <module>
    from .server import SERVER
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/jedi_language_server/server.py", line 14, in <module>
    from pydantic import ValidationError
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/__init__.py", line 2, in <module>
    from . import dataclasses
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/dataclasses.py", line 3, in <module>
    from .class_validators import gather_all_validators
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/class_validators.py", line 8, in <module>
    from .errors import ConfigError
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/errors.py", line 5, in <module>
    from .typing import display_as_type
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/pydantic/typing.py", line 23, in <module>
    from typing_extensions import Annotated, Literal
  File "/home/ngs/.vscode-server/extensions/ms-python.python-2022.16.0/pythonFiles/lib/jedilsp/typing_extensions.py", line 159, in <module>
    class _FinalForm(typing._SpecialForm, _root=True):
AttributeError: module 'typing' has no attribute '_SpecialForm'
[Error - 9:30:10 AM] The Python Jedi server crashed 5 times in the last 3 minutes. The server will not be restarted. See the output for more information.
[Error - 9:30:10 AM] Server initialization failed.
  Message: Pending response rejected since connection got disposed
  Code: -32097 
[Error - 9:30:10 AM] Python Jedi client: couldn't create connection to server.
  Message: Pending response rejected since connection got disposed
  Code: -32097 
[Error - 9:30:10 AM] Restarting server failed
  Message: Pending response rejected since connection got disposed
  Code: -32097 
pappasam commented 1 year ago

Thanks for the detailed log, and I apologize for the slow response. Are you running Python 3.6 or below, by any chance? I ask because the error AttributeError: module 'typing' has no attribute '_SpecialForm' is associated with Python 3.6 and below. For a related issue, see: https://github.com/Ge0rg3/flask-parameter-validation/issues/2

If you are using Python 3.6, that version of Python is incompatible with jedi-language-server, which supports Python 3.7+.

BCArg commented 1 year ago

thanks for the reply. I work on multiple VS code workspaces, and I also get this error when the python interpreter is 3.7.3. Also it is odd that these collapse arrows have always been present on the workspaces where the python interpreter is 3.6*. All of this happened after a VS code update, or the update of python/ jupyter extension, therefore don't you think it can be a bug?

BCArg commented 1 year ago

actually it works now that I changed the language server to pylance, I am not a huge fan of this extension though

GiveMePseudonyms commented 1 year ago

Same issue for me, using:

The folding icons appear and work when using Pylance but I prefer Jedi.

I have also tried using the keyboard shortcuts for folding, which also do not work.

I have noticed that when close VSCode and re-open, the folding arrows appear for about half a second and then disappear again. I've tried disabling and re-enabling all extensions too - no success.

pappasam commented 1 year ago

@GiveMePseudonyms do you get the same traceback that @BCArg posted when using Python 3.10?

pappasam commented 1 year ago

@BCArg separately, jedi-language-server doesn't explicitly provide support for code folding (not a use case I personally have ever needed from a language server).

So, I suspect that vscode's extension was doing something else to provide code folding, and whatever that was broke recently. For reference, here are the LSP features that are currently supported: https://github.com/pappasam/jedi-language-server#language-features

For reference, this is the LSP feature you're describing: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_foldingRange

pappasam commented 1 year ago

Not sure how to support code-folding (jedi itself doesn't seem to support it by default), but I'm not opposed to adding support if it doesn't hurt performance!

GiveMePseudonyms commented 1 year ago

@GiveMePseudonyms do you get the same traceback that @BCArg posted when using Python 3.10?

Please forgive my ignorance @pappasam but how do I find the traceback for Jedi in vscode?

BCArg commented 1 year ago

@GiveMePseudonyms do you get the same traceback that @BCArg posted when using Python 3.10?

Please forgive my ignorance @pappasam but how do I find the traceback for Jedi in vscode?

on vs code, you open a terminal, then you select 'Python Language Sever' on the 'Output' tab of terminal, as shown below:

image

GiveMePseudonyms commented 1 year ago

@GiveMePseudonyms do you get the same traceback that @BCArg posted when using Python 3.10?

Please forgive my ignorance @pappasam but how do I find the traceback for Jedi in vscode?

on vs code, you open a terminal, then you select 'Python Language Sever' on the 'Output' tab of terminal, as shown below:

image

Nothing in the traceback until I switch between LSs. When changing to pylance I get a bunch of expected text, but changing to Jedi I get:

[Error - 1:57:03 PM] Sending notification workspace/didChangeConfiguration failed Message: Client is not running Code: -32096