Skip to content

Jedi LSP error: Unsupported position encoding (PositionEncodingKind.Utf16) in VSCodium #25710

Open

Description

@antoshik86

I read the “Reporting a bug” wiki page and I’m filing this as a desktop VS Code extension bug (Python extension loads, but Jedi LSP fails to initialize).
​

Related issue in the Jedi language server repository:
pappasam/jedi-language-server#351

Hello,

I’m experiencing a persistent problem with the Python extension in VSCodium when using the Jedi language server. The Python language server fails to initialize and keeps restarting, with the following error in the Output panel:

text
Server initialization failed.
Error: Unsupported position encoding (PositionEncodingKind.Utf16) received from server Python Jedi
at P.doInitialize (...\ms-python.python-2025.20.1-universal\out\client\extension.js:2:2084342)
at async P.start (...\ms-python.python-2025.20.1-universal\out\client\extension.js:2:2083020)
at async l.start (...\ms-python.python-2025.20.1-universal\out\client\extension.js:2:22276)
[...]
The Python Jedi server crashed 5 times in the last 3 minutes. The server will not be restarted.
From the source code, it looks like the client does a strict check on result.capabilities.positionEncoding:

ts
if (result.capabilities.positionEncoding !== undefined &&
result.capabilities.positionEncoding !== PositionEncodingKind.UTF16) {
throw new Error(Unsupported position encoding (${result.capabilities.positionEncoding}) received from server ${this.name});
}
In my case the server reports PositionEncodingKind.Utf16, and the client still throws and stops the server.

Environment

Editor: VSCodium (latest stable at the time of writing)

Python extension: ms-python.python-2025.20.1-universal

OS: Windows 10 x64

Python versions installed: 3.11, 3.12, 3.13, 3.14, 3.15 (user installs)

Active interpreter in workspace: Python 3.12 (venv)

Steps to reproduce

Install VSCodium.

Install the official Python extension (ms-python.python) from VSIX.

Open any Python project and let the extension start the Jedi language server (default settings).

Check the “Python” Output channel: the error above is printed, and language features do not work.

What I tried

Toggling python.jediEnabled and python.languageServer settings.

Disabling other Python‑related extensions.

Creating a fresh workspace and venv.

The problem persists as long as the Jedi LSP client is enabled.

Additional logs

text
2026-01-03 01:02:25.220 [info] [Error - 1:02:25 AM] Python Jedi client: couldn't create connection to server.
2026-01-03 01:02:25.220 [info] Error: Unsupported position encoding (PositionEncodingKind.Utf16) received from server Python Jedi
at P.doInitialize (c:\Users\ai.vscode-oss\extensions\ms-python.python-2025.20.1-universal\out\client\extension.js:2:2084342)
at async P.start (c:\Users\ai.vscode-oss\extensions\ms-python.python-2025.20.1-universal\out\client\extension.js:2:2083020)
2026-01-03 01:02:25.221 [info] [Error - 1:02:25 AM] Restarting server failed
2026-01-03 01:02:25.221 [info] Error: Unsupported position encoding (PositionEncodingKind.Utf16) received from server Python Jedi
at P.doInitialize (c:\Users\ai.vscode-oss\extensions\ms-python.python-2025.20.1-universal\out\client\extension.js:2:2084342)
at async P.start (c:\Users\ai.vscode-oss\extensions\ms-python.python-2025.20.1-universal\out\client\extension.js:2:2083020)
2026-01-03 01:02:27.345 [info] [Error - 1:02:27 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.
2026-01-03 01:02:27.351 [info] [Error - 1:02:27 AM] Server process exited with code 1.
Reference

Relevant client code in vscode-languageserver-node that throws on positionEncoding mismatch:
https://github.com/microsoft/vscode-languageserver-node/blob/main/client/src/common/client.ts

(quoted here for convenience):

ts
if (result.capabilities.positionEncoding !== undefined &&
result.capabilities.positionEncoding !== PositionEncodingKind.UTF16) {
throw new Error(Unsupported position encoding (${result.capabilities.positionEncoding}) received from server ${this.name});
}
Questions

Is this a known compatibility issue between the current Python extension and the Jedi language server in VSCodium?

Is there a recommended workaround (other than completely disabling the Python language server), e.g. a specific version of the extension or a configuration that relaxes the positionEncoding check?

Are there any plans to support PositionEncodingKind.Utf16 (or to make the check more tolerant) in future releases?

Any guidance would be appreciated. I’m setting up a public Python project and would like to keep using VSCodium if possible.

Thank you!

Best regards,

Activity

  1. Artoria2e5 commented on Jan 28, 2026

    @Artoria2e5

    Add. Repro.

    I did not encounter this issue with Python extension itself, but I got it with the other extensions:

    2026-01-28 17:54:37.965 [info] CWD Server: c:\Program Files\Microsoft VS Code
    2026-01-28 17:54:37.965 [info] sys.path used to run Server:
       c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled\libs
       c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled\tool
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\python315.zip
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\DLLs
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\Lib
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\Lib\site-packages
    2026-01-28 17:54:37.965 [info] Settings used to run Server:
    []
    
    2026-01-28 17:54:37.965 [info] Global settings:
    {
        "check": false,
        "cwd": "C:\\Program Files\\Microsoft VS Code",
        "workspace": "C:\\Program Files\\Microsoft VS Code",
        "args": [],
        "path": [],
        "severity": {
            "W": "Warning",
            "E": "Hint"
        },
        "interpreter": [],
        "importStrategy": "useBundled",
        "showNotifications": "off"
    }
    
    2026-01-28 17:54:37.971 [info] c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\python.exe -m isort --version-number
    2026-01-28 17:54:37.971 [info] CWD Linter: C:\Program Files\Microsoft VS Code
    2026-01-28 17:54:37.979 [info] Version info for isort running for C:\Program Files\Microsoft VS Code:
    5.13.2
    
    2026-01-28 17:54:37.979 [info] SUPPORTED isort>=5.10.1
    FOUND isort==5.13.2
    
    2026-01-28 17:54:37.985 [info] [Error - 5:54:37 PM] Server initialization failed.
    2026-01-28 17:54:37.985 [info] Error: Unsupported position encoding (PositionEncodingKind.Utf16) received from server isort
    	at w.doInitialize (c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\dist\extension.js:1:144777)
    	at async w.start (c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\dist\extension.js:1:143456)
    
    026-01-28 17:54:37.872 [info] CWD Server: c:\Program Files\Microsoft VS Code
    2026-01-28 17:54:37.872 [info] Settings received on server:
    []
    
    2026-01-28 17:54:37.872 [info] Global settings received on server:
    {
        "cwd": "C:\\Program Files\\Microsoft VS Code",
        "workspace": "C:\\Program Files\\Microsoft VS Code",
        "args": [
            "-l",
            "88"
        ],
        "path": [],
        "interpreter": [],
        "importStrategy": "useBundled",
        "showNotifications": "off"
    }
    
    2026-01-28 17:54:37.872 [info] sys.path used to run Server:
       c:\Users\arthu\.vscode\extensions\ms-python.black-formatter-2025.2.0\bundled\libs
       c:\Users\arthu\.vscode\extensions\ms-python.black-formatter-2025.2.0\bundled\tool
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\python315.zip
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\DLLs
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\Lib
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\Lib\site-packages
    2026-01-28 17:54:37.877 [info] c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\python.exe -m black --version
    2026-01-28 17:54:37.878 [info] CWD formatter: C:\Program Files\Microsoft VS Code
    2026-01-28 17:54:38.048 [info] Version info for formatter running for C:\Program Files\Microsoft VS Code:
    black, 25.1.0 (compiled: no)
    Python (CPython) 3.15.0a1
    
    2026-01-28 17:54:38.049 [info] SUPPORTED black>=22.3.0
    FOUND black==25.1.0
    
    2026-01-28 17:54:38.056 [info] [Error - 5:54:38 PM] Server initialization failed.
    2026-01-28 17:54:38.056 [info] Error: Unsupported position encoding (PositionEncodingKind.Utf16) received from server Black Formatter
    	at w.doInitialize (c:\Users\arthu\.vscode\extensions\ms-python.black-formatter-2025.2.0\dist\extension.js:1:142350)
    	at async w.start (c:\Users\arthu\.vscode\extensions\ms-python.black-formatter-2025.2.0\dist\extension.js:1:141029)
    

    Analysis

    This is a bit of a headscratcher since everything is supposed to handle Utf16. That said, the definition should be the literal string "utf-16": https://github.com/microsoft/vscode-languageserver-node/blob/d85f305752dd88e0607206ca70baf7bf76ae6f79/protocol/src/common/protocol.ts#L981

    Since we're seeing "PositionEncodingKind.Utf16" being thrown from Unsupported position encoding (${result.capabilities.positionEncoding}) received from server ${this.name}, then this suggests that the result.capabilities.positionEncoding is somehow the literal string "PositionEncodingKind.Utf16". Which makes no sense!

    Something must be broken at the LSP level, but I failed to find which by code search. Utf16 is how the python LSP end capitalizes the enum, but I don't see how it can get sent on the wire without being converted to the value.

  2. eleanorjboyd commented on Jan 28, 2026

    @eleanorjboyd
    Member
  3. karthiknadig commented on Jan 28, 2026

    @karthiknadig
    Member

    This might either be an issue with the version of pygls used with the server, if the same error shows up in multiple places.

  4. Artoria2e5 commented on Jan 29, 2026

    @Artoria2e5

    I hand-edited C:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled\tool\lsp_server.py to add

    import logging
    logging.basicConfig(level=logging.DEBUG)

    (is there a better way to do this?)

    This time I got

    2026-01-29 10:48:25.029 [info] Name: isort
    2026-01-29 10:48:25.029 [info] Module: isort
    2026-01-29 10:48:25.029 [info] Python extension loading
    2026-01-29 10:48:25.029 [info] Waiting for interpreter from python extension.
    2026-01-29 10:48:25.168 [info] No interpreter found from setting isort.interpreter
    2026-01-29 10:48:25.168 [info] Getting interpreter from ms-python.python extension for workspace c:\Program Files\Microsoft VS Code
    2026-01-29 10:48:25.168 [info] Python extension loaded
    2026-01-29 10:48:25.178 [info] Interpreter from ms-python.python extension for c:\Program Files\Microsoft VS Code: c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\python.exe
    2026-01-29 10:48:25.213 [info] Server run command: c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\python.exe c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled\tool\lsp_server.py
    2026-01-29 10:48:25.216 [info] Server: Start requested.
    2026-01-29 10:48:28.404 [info] Traceback (most recent call last):
    
    2026-01-29 10:48:28.405 [info]   File "c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled\tool\lsp_server.py", line 45, in <module>
        from pygls import server, uris, workspace
      File "c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled\libs\pygls\server.py", line 35, in <module>
        import cattrs
      File "c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled\libs\cattrs\__init__.py", line 3, in <module>
        from .converters import BaseConverter, Converter, GenConverter, UnstructureStrategy
      File "c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled\libs\cattrs\converters.py", line 17, in <module>
        from ._compat import (
        ...<37 lines>...
        )
      File "c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled\libs\cattrs\_compat.py", line 56, in <module>
        from typing_extensions import TypedDict as ExtensionsTypedDict
      File "c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled\libs\typing_extensions.py", line 3641, in <module>
        no_type_check_decorator = typing.no_type_check_decorator
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\Lib\typing.py", line 3881, in __getattr__
        raise AttributeError(f"module {__name__!r} has no attribute {attr!r}")
    
    2026-01-29 10:48:28.405 [info] AttributeError: module 'typing' has no attribute 'no_type_check_decorator'
    
    2026-01-29 10:48:28.583 [info] [Error - 10:48:28 AM] Server initialization failed.
    2026-01-29 10:48:28.583 [info]   Message: Pending response rejected since connection got disposed
      Code: -32097 
    2026-01-29 10:48:28.583 [info] [Info  - 10:48:28 AM] Connection to server got closed. Server will restart.
    2026-01-29 10:48:28.583 [info] true
    2026-01-29 10:48:28.583 [info] [Error - 10:48:28 AM] isort client: couldn't create connection to server.
    2026-01-29 10:48:28.583 [info]   Message: Pending response rejected since connection got disposed
      Code: -32097 
    

    python/cpython#106309
    This is not necessarily related to the current problem. Anyways I patched it out by substituting

    no_type_check_decorator = typing.no_type_check

    in typing_extensions (upstream has a better fix, upgrade your deps!)

    I then relaunched vscode. This time I get a better view of the events:

    irrelevant part
    2026-01-29 10:53:52.502 [info] Name: isort
    2026-01-29 10:53:52.502 [info] Module: isort
    2026-01-29 10:53:52.502 [info] Python extension loading
    2026-01-29 10:53:52.502 [info] Waiting for interpreter from python extension.
    2026-01-29 10:53:52.682 [info] No interpreter found from setting isort.interpreter
    2026-01-29 10:53:52.682 [info] Getting interpreter from ms-python.python extension for workspace c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled
    2026-01-29 10:53:52.682 [info] Python extension loaded
    2026-01-29 10:53:52.690 [info] Interpreter from ms-python.python extension for c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled: c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\python.exe
    2026-01-29 10:53:52.691 [info] No interpreter found from setting isort.interpreter
    2026-01-29 10:53:52.691 [info] Getting interpreter from ms-python.python extension for workspace c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled
    2026-01-29 10:53:52.708 [info] Interpreter from ms-python.python extension for c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled: c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\python.exe
    2026-01-29 10:53:52.722 [info] Server run command: c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\python.exe c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled\tool\lsp_server.py
    2026-01-29 10:53:52.723 [info] Server: Start requested.
    2026-01-29 10:53:54.465 [info] DEBUG:asyncio:Using proactor: IocpProactor
    INFO:pygls.feature_manager:Registered builtin feature exit
    INFO:pygls.feature_manager:Registered builtin feature initialize
    INFO:pygls.feature_manager:Registered builtin feature initialized
    INFO:pygls.feature_manager:Registered builtin feature notebookDocument/didChange
    INFO:pygls.feature_manager:Registered builtin feature notebookDocument/didClose
    INFO:pygls.feature_manager:Registered builtin feature notebookDocument/didOpen
    INFO:pygls.feature_manager:Registered builtin feature $/setTrace
    INFO:pygls.feature_manager:Registered builtin feature shutdown
    INFO:pygls.feature_manager:Registered builtin feature textDocument/didChange
    INFO:pygls.feature_manager:Registered builtin feature textDocument/didClose
    INFO:pygls.feature_manager:Registered builtin feature textDocument/didOpen
    INFO:pygls.feature_manager:Registered builtin feature window/workDoneProgress/cancel
    INFO:pygls.feature_manager:Registered builtin feature workspace/didChangeWorkspaceFolders
    INFO:pygls.feature_manager:Registered builtin feature workspace/executeCommand
    INFO:pygls.feature_manager:Registered "textDocument/didOpen" with options "None"
    INFO:pygls.feature_manager:Registered "textDocument/didSave" with options "None"
    INFO:pygls.feature_manager:Registered "textDocument/didClose" with options "None"
    INFO:pygls.feature_manager:Registered "textDocument/codeAction" with options "CodeActionOptions(code_action_kinds=[<CodeActionKind.SourceOrganizeImports: 'source.organizeImports'>, <CodeActionKind.QuickFix: 'quickfix'>], resolve_provider=True, work_done_progress=None)"
    INFO:pygls.feature_manager:Registered "codeAction/resolve" with options "None"
    INFO:pygls.feature_manager:Registered "initialize" with options "None"
    INFO:pygls.feature_manager:Registered "exit" with options "None"
    INFO:pygls.feature_manager:Registered "shutdown" with options "None"
    INFO:pygls.server:Starting IO server
    DEBUG:pygls.server:Content length: 6622
    DEBUG:pygls.protocol.json_rpc:Received b'Content-Length: 6622\r\n\r\n{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":5888,"clientInfo":{"name":"Visual Studio Code","version":"1.108.2"},"locale":"en","rootPath":"c:\\\\Users\\\\arthu\\\\.vscode\\\\extensions\\\\ms-python.isort-2025.0.0\\\\bundled","rootUri":"file:///c%3A/Users/arthu/.vscode/extensions/ms-python.isort-2025.0.0/bundled","capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"resourceOperations":["create","rename","delete"],"failureHandling":"textOnlyTransactional","normalizesLineEndings":true,"changeAnnotationSupport":{"groupsOnLabel":true}},"configuration":true,"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]},"resolveSupport":{"properties":["location.range"]}},"codeLens":{"refreshSupport":true},"executeCommand":{"dynamicRegistration":true},"didChangeConfiguration":{"dynamicRegistration":true},"workspaceFolders":true,"semanticTokens":{"refreshSupport":true},"fileOperations":{"dynamicRegistration":true,"didCreate":true,"didRename":true,"didDelete":true,"willCreate":true,"willRename":true,"willDelete":true},"inlineValue":{"refreshSupport":true},"inlayHint":{"refreshSupport":true},"diagnostics":{"refreshSupport":true}},"textDocument":{"publishDiagnostics":{"relatedInformation":true,"versionSupport":false,"tagSupport":{"valueSet":[1,2]},"codeDescriptionSupport":true,"dataSupport":true},"synchronization":{"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"dynamicRegistration":true,"contextSupport":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["markdown","plaintext"],"deprecatedSupport":true,"preselectSupport":true,"tagSupport":{"valueSet":[1]},"insertReplaceSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"insertTextModeSupport":{"valueSet":[1,2]},"labelDetailsSupport":true},"insertTextMode":2,"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"completionList":{"itemDefaults":["commitCharacters","editRange","insertTextFormat","insertTextMode"]}},"hover":{"dynamicRegistration":true,"contentFormat":["markdown","plaintext"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true},"activeParameterSupport":true},"contextSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"hierarchicalDocumentSymbolSupport":true,"tagSupport":{"valueSet":[1]},"labelSupport":true},"codeAction":{"dynamicRegistration":true,"isPreferredSupport":true,"disabledSupport":true,"dataSupport":true,"resolveSupport":{"properties":["edit"]},"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"honorsChangeAnnotations":false},"codeLens":{"dynamicRegistration":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true,"prepareSupportDefaultBehavior":1,"honorsChangeAnnotations":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"colorProvider":{"dynamicRegistration":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":5000,"lineFoldingOnly":true,"foldingRangeKind":{"valueSet":["comment","imports","region"]},"foldingRange":{"collapsedText":false}},"declaration":{"dynamicRegistration":true,"linkSupport":true},"selectionRange":{"dynamicRegistration":true},"callHierarchy":{"dynamicRegistration":true},"semanticTokens":{"dynamicRegistration":true,"tokenTypes":["namespace","type","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","event","function","method","macro","keyword","modifier","comment","string","number","regexp","operator","decorator"],"tokenModifiers":["declaration","definition","readonly","static","deprecated","abstract","async","modification","documentation","defaultLibrary"],"formats":["relative"],"requests":{"range":true,"full":{"delta":true}},"multilineTokenSupport":false,"overlappingTokenSupport":false,"serverCancelSupport":true,"augmentsSyntaxTokens":true},"linkedEditingRange":{"dynamicRegistration":true},"typeHierarchy":{"dynamicRegistration":true},"inlineValue":{"dynamicRegistration":true},"inlayHint":{"dynamicRegistration":true,"resolveSupport":{"properties":["tooltip","textEdits","label.tooltip","label.location","label.command"]}},"diagnostic":{"dynamicRegistration":true,"relatedDocumentSupport":false}},"window":{"showMessage":{"messageActionItem":{"additionalPropertiesSupport":true}},"showDocument":{"support":true},"workDoneProgress":true},"general":{"staleRequestSupport":{"cancel":true,"retryOnContentModified":["textDocument/semanticTokens/full","textDocument/semanticTokens/range","textDocument/semanticTokens/full/delta"]},"regularExpressions":{"engine":"ECMAScript","version":"ES2020"},"markdown":{"parser":"marked","version":"1.1.0"},"positionEncodings":["utf-16"]},"notebookDocument":{"synchronization":{"dynamicRegistration":true,"executionSummarySupport":true}}},"initializationOptions":{"settings":[{"check":false,"cwd":"c:\\\\Users\\\\arthu\\\\.vscode\\\\extensions\\\\ms-python.isort-2025.0.0\\\\bundled","workspace":"file:///c%3A/Users/arthu/.vscode/extensions/ms-python.isort-2025.0.0/bundled","args":[],"path":[],"severity":{"W":"Warning","E":"Hint"},"interpreter":["c:\\\\Users\\\\arthu\\\\AppData\\\\Local\\\\Python\\\\pythoncore-3.15-64\\\\python.exe"],"importStrategy":"useBundled","showNotifications":"off"}],"globalSettings":{"check":false,"cwd":"C:\\\\Program Files\\\\Microsoft VS Code","workspace":"C:\\\\Program Files\\\\Microsoft VS Code","args":[],"path":[],"severity":{"W":"Warning","E":"Hint"},"interpreter":[],"importStrategy":"useBundled","showNotifications":"off"}},"trace":"off","workspaceFolders":[{"uri":"file:///c%3A/Users/arthu/.vscode/extensions/ms-python.isort-2025.0.0/bundled","name":"bundled"}]}}'
    
    2026-01-29 10:53:54.520 [info] DEBUG:pygls.protocol.json_rpc:Request message received.
    
    2026-01-29 10:53:54.521 [info] INFO:pygls.protocol.language_server:Language server initialized InitializeParams(capabilities=ClientCapabilities(workspace=WorkspaceClientCapabilities(apply_edit=True, workspace_edit=WorkspaceEditClientCapabilities(document_changes=True, resource_operations=[<ResourceOperationKind.Create: 'create'>, <ResourceOperationKind.Rename: 'rename'>, <ResourceOperationKind.Delete: 'delete'>], failure_handling=<FailureHandlingKind.TextOnlyTransactional: 'textOnlyTransactional'>, normalizes_line_endings=True, change_annotation_support=WorkspaceEditClientCapabilitiesChangeAnnotationSupportType(groups_on_label=True)), did_change_configuration=DidChangeConfigurationClientCapabilities(dynamic_registration=True), did_change_watched_files=DidChangeWatchedFilesClientCapabilities(dynamic_registration=True, relative_pattern_support=True), symbol=WorkspaceSymbolClientCapabilities(dynamic_registration=True, symbol_kind=WorkspaceSymbolClientCapabilitiesSymbolKindType(value_set=[<SymbolKind.File: 1>, <SymbolKind.Module: 2>, <SymbolKind.Namespace: 3>, <SymbolKind.Package: 4>, <SymbolKind.Class: 5>, <SymbolKind.Method: 6>, <SymbolKind.Property: 7>, <SymbolKind.Field: 8>, <SymbolKind.Constructor: 9>, <SymbolKind.Enum: 10>, <SymbolKind.Interface: 11>, <SymbolKind.Function: 12>, <SymbolKind.Variable: 13>, <SymbolKind.Constant: 14>, <SymbolKind.String: 15>, <SymbolKind.Number: 16>, <SymbolKind.Boolean: 17>, <SymbolKind.Array: 18>, <SymbolKind.Object: 19>, <SymbolKind.Key: 20>, <SymbolKind.Null: 21>, <SymbolKind.EnumMember: 22>, <SymbolKind.Struct: 23>, <SymbolKind.Event: 24>, <SymbolKind.Operator: 25>, <SymbolKind.TypeParameter: 26>]), tag_support=WorkspaceSymbolClientCapabilitiesTagSupportType(value_set=[<SymbolTag.Deprecated: 1>]), resolve_support=WorkspaceSymbolClientCapabilitiesResolveSupportType(properties=['location.range'])), execute_command=ExecuteCommandClientCapabilities(dynamic_registration=True), workspace_folders=True, configuration=True, semantic_tokens=SemanticTokensWorkspaceClientCapabilities(refresh_support=True), code_lens=CodeLensWorkspaceClientCapabilities(refresh_support=True), file_operations=FileOperationClientCapabilities(dynamic_registration=True, did_create=True, will_create=True, did_rename=True, will_rename=True, did_delete=True, will_delete=True), inline_value=InlineValueWorkspaceClientCapabilities(refresh_support=True), inlay_hint=InlayHintWorkspaceClientCapabilities(refresh_support=True), diagnostics=DiagnosticWorkspaceClientCapabilities(refresh_support=True), folding_range=None), text_document=TextDocumentClientCapabilities(synchronization=TextDocumentSyncClientCapabilities(dynamic_registration=True, will_save=True, will_save_wait_until=True, did_save=True), completion=CompletionClientCapabilities(dynamic_registration=True, completion_item=CompletionClientCapabilitiesCompletionItemType(snippet_support=True, commit_characters_support=True, documentation_format=[<MarkupKind.Markdown: 'markdown'>, <MarkupKind.PlainText: 'plaintext'>], deprecated_support=True, preselect_support=True, tag_support=CompletionClientCapabilitiesCompletionItemTypeTagSupportType(value_set=[<CompletionItemTag.Deprecated: 1>]), insert_replace_support=True, resolve_support=CompletionClientCapabilitiesCompletionItemTypeResolveSupportType(properties=['documentation', 'detail', 'additionalTextEdits']), insert_text_mode_support=CompletionClientCapabilitiesCompletionItemTypeInsertTextModeSupportType(value_set=[<InsertTextMode.AsIs: 1>, <InsertTextMode.AdjustIndentation: 2>]), label_details_support=True), completion_item_kind=CompletionClientCapabilitiesCompletionItemKindType(value_set=[<CompletionItemKind.Text: 1>, <CompletionItemKind.Method: 2>, <CompletionItemKind.Function: 3>, <CompletionItemKind.Constructor: 4>, <CompletionItemKind.Field: 5>, <CompletionItemKind.Variable: 6>, <CompletionItemKind.Class: 7>, <CompletionItemKind.Interface: 8>, <CompletionItemKind.Module: 9>, <CompletionItemKind.Property: 10>, <CompletionItemKind.Unit: 11>, <CompletionItemKind.Value: 12>, <CompletionItemKind.Enum: 13>, <CompletionItemKind.Keyword: 14>, <CompletionItemKind.Snippet: 15>, <CompletionItemKind.Color: 16>, <CompletionItemKind.File: 17>, <CompletionItemKind.Reference: 18>, <CompletionItemKind.Folder: 19>, <CompletionItemKind.EnumMember: 20>, <CompletionItemKind.Constant: 21>, <CompletionItemKind.Struct: 22>, <CompletionItemKind.Event: 23>, <CompletionItemKind.Operator: 24>, <CompletionItemKind.TypeParameter: 25>]), insert_text_mode=<InsertTextMode.AdjustIndentation: 2>, context_support=True, completion_list=CompletionClientCapabilitiesCompletionListType(item_defaults=['commitCharacters', 'editRange', 'insertTextFormat', 'insertTextMode'])), hover=HoverClientCapabilities(dynamic_registration=True, content_format=[<MarkupKind.Markdown: 'markdown'>, <MarkupKind.PlainText: 'plaintext'>]), signature_help=SignatureHelpClientCapabilities(dynamic_registration=True, signature_information=SignatureHelpClientCapabilitiesSignatureInformationType(documentation_format=[<MarkupKind.Markdown: 'markdown'>, <MarkupKind.PlainText: 'plaintext'>], parameter_information=SignatureHelpClientCapabilitiesSignatureInformationTypeParameterInformationType(label_offset_support=True), active_parameter_support=True), context_support=True), declaration=DeclarationClientCapabilities(dynamic_registration=True, link_support=True), definition=DefinitionClientCapabilities(dynamic_registration=True, link_support=True), type_definition=TypeDefinitionClientCapabilities(dynamic_registration=True, link_support=True), implementation=ImplementationClientCapabilities(dynamic_registration=True, link_support=True), references=ReferenceClientCapabilities(dynamic_registration=True), document_highlight=DocumentHighlightClientCapabilities(dynamic_registration=True), document_symbol=DocumentSymbolClientCapabilities(dynamic_registration=True, symbol_kind=DocumentSymbolClientCapabilitiesSymbolKindType(value_set=[<SymbolKind.File: 1>, <SymbolKind.Module: 2>, <SymbolKind.Namespace: 3>, <SymbolKind.Package: 4>, <SymbolKind.Class: 5>, <SymbolKind.Method: 6>, <SymbolKind.Property: 7>, <SymbolKind.Field: 8>, <SymbolKind.Constructor: 9>, <SymbolKind.Enum: 10>, <SymbolKind.Interface: 11>, <SymbolKind.Function: 12>, <SymbolKind.Variable: 13>, <SymbolKind.Constant: 14>, <SymbolKind.String: 15>, <SymbolKind.Number: 16>, <SymbolKind.Boolean: 17>, <SymbolKind.Array: 18>, <SymbolKind.Object: 19>, <SymbolKind.Key: 20>, <SymbolKind.Null: 21>, <SymbolKind.EnumMember: 22>, <SymbolKind.Struct: 23>, <SymbolKind.Event: 24>, <SymbolKind.Operator: 25>, <SymbolKind.TypeParameter: 26>]), hierarchical_document_symbol_support=True, tag_support=DocumentSymbolClientCapabilitiesTagSupportType(value_set=[<SymbolTag.Deprecated: 1>]), label_support=True), code_action=CodeActionClientCapabilities(dynamic_registration=True, code_action_literal_support=CodeActionClientCapabilitiesCodeActionLiteralSupportType(code_action_kind=CodeActionClientCapabilitiesCodeActionLiteralSupportTypeCodeActionKindType(value_set=['', 'quickfix', 'refactor', 'refactor.extract', 'refactor.inline', 'refactor.rewrite', 'source', 'source.organizeImports'])), is_preferred_support=True, disabled_support=True, data_support=True, resolve_support=CodeActionClientCapabilitiesResolveSupportType(properties=['edit']), honors_change_annotations=False), code_lens=CodeLensClientCapabilities(dynamic_registration=True), document_link=DocumentLinkClientCapabilities(dynamic_registration=True, tooltip_support=True), color_provider=DocumentColorClientCapabilities(dynamic_registration=True), formatting=DocumentFormattingClientCapabilities(dynamic_registration=True), range_formatting=DocumentRangeFormattingClientCapabilities(dynamic_registration=True, ranges_support=None), on_type_formatting=DocumentOnTypeFormattingClientCapabilities(dynamic_registration=True), rename=RenameClientCapabilities(dynamic_registration=True, prepare_support=True, prepare_support_default_behavior=<PrepareSupportDefaultBehavior.Identifier: 1>, honors_change_annotations=True), folding_range=FoldingRangeClientCapabilities(dynamic_registration=True, range_limit=5000, line_folding_only=True, folding_range_kind=FoldingRangeClientCapabilitiesFoldingRangeKindType(value_set=['comment', 'imports', 'region']), folding_range=FoldingRangeClientCapabilitiesFoldingRangeType(collapsed_text=False)), selection_range=SelectionRangeClientCapabilities(dynamic_registration=True), publish_diagnostics=PublishDiagnosticsClientCapabilities(related_information=True, tag_support=PublishDiagnosticsClientCapabilitiesTagSupportType(value_set=[<DiagnosticTag.Unnecessary: 1>, <DiagnosticTag.Deprecated: 2>]), version_support=False, code_description_support=True, data_support=True), call_hierarchy=CallHierarchyClientCapabilities(dynamic_registration=True), semantic_tokens=SemanticTokensClientCapabilities(requests=SemanticTokensClientCapabilitiesRequestsType(range=True, full=SemanticTokensClientCapabilitiesRequestsTypeFullType1(delta=True)), token_types=['namespace', 'type', 'class', 'enum', 'interface', 'struct', 'typeParameter', 'parameter', 'variable', 'property', 'enumMember', 'event', 'function', 'method', 'macro', 'keyword', 'modifier', 'comment', 'string', 'number', 'regexp', 'operator', 'decorator'], token_modifiers=['declaration', 'definition', 'readonly', 'static', 'deprecated', 'abstract', 'async', 'modification', 'documentation', 'defaultLibrary'], formats=[<TokenFormat.Relative: 'relative'>], dynamic_registration=True, overlapping_token_support=False, multiline_token_support=False, server_cancel_support=True, augments_syntax_tokens=True), linked_editing_range=LinkedEditingRangeClientCapabilities(dynamic_registration=True), moniker=None, type_hierarchy=TypeHierarchyClientCapabilities(dynamic_registration=True), inline_value=InlineValueClientCapabilities(dynamic_registration=True), inlay_hint=InlayHintClientCapabilities(dynamic_registration=True, resolve_support=InlayHintClientCapabilitiesResolveSupportType(properties=['tooltip', 'textEdits', 'label.tooltip', 'label.location', 'label.command'])), diagnostic=DiagnosticClientCapabilities(dynamic_registration=True, related_document_support=False), inline_completion=None), notebook_document=NotebookDocumentClientCapabilities(synchronization=NotebookDocumentSyncClientCapabilities(dynamic_registration=True, execution_summary_support=True)), window=WindowClientCapabilities(work_done_progress=True, show_message=ShowMessageRequestClientCapabilities(message_action_item=ShowMessageRequestClientCapabilitiesMessageActionItemType(additional_properties_support=True)), show_document=ShowDocumentClientCapabilities(support=True)), general=GeneralClientCapabilities(stale_request_support=GeneralClientCapabilitiesStaleRequestSupportType(cancel=True, retry_on_content_modified=['textDocument/semanticTokens/full', 'textDocument/semanticTokens/range', 'textDocument/semanticTokens/full/delta']), regular_expressions=RegularExpressionsClientCapabilities(engine='ECMAScript', version='ES2020'), markdown=MarkdownClientCapabilities(parser='marked', version='1.1.0', allowed_tags=None), position_encodings=['utf-16']), experimental=None), process_id=5888, client_info=InitializeParamsClientInfoType(name='Visual Studio Code', version='1.108.2'), locale='en', root_path='c:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled', root_uri='file:///c%3A/Users/arthu/.vscode/extensions/ms-python.isort-2025.0.0/bundled', initialization_options={'settings': [{'check': False, 'cwd': 'c:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled', 'workspace': 'file:///c%3A/Users/arthu/.vscode/extensions/ms-python.isort-2025.0.0/bundled', 'args': [], 'path': [], 'severity': {'W': 'Warning', 'E': 'Hint'}, 'interpreter': ['c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\\python.exe'], 'importStrategy': 'useBundled', 'showNotifications': 'off'}], 'globalSettings': {'check': False, 'cwd': 'C:\\Program Files\\Microsoft VS Code', 'workspace': 'C:\\Program Files\\Microsoft VS Code', 'args': [], 'path': [], 'severity': {'W': 'Warning', 'E': 'Hint'}, 'interpreter': [], 'importStrategy': 'useBundled', 'showNotifications': 'off'}}, trace=<TraceValues.Off: 'off'>, work_done_token=None, workspace_folders=[WorkspaceFolder(uri='file:///c%3A/Users/arthu/.vscode/extensions/ms-python.isort-2025.0.0/bundled', name='bundled')])
    
    2026-01-29 10:53:54.531 [info] DEBUG:pygls.protocol.language_server:Server capabilities: {"positionEncoding": "PositionEncodingKind.Utf16", "textDocumentSync": {"openClose": true, "change": 2, "willSave": false, "willSaveWaitUntil": false, "save": true}, "codeActionProvider": {"codeActionKinds": ["CodeActionKind.SourceOrganizeImports", "CodeActionKind.QuickFix"], "resolveProvider": true}, "executeCommandProvider": {"commands": []}, "workspace": {"workspaceFolders": {"supported": true, "changeNotifications": true}, "fileOperations": {}}}
    
    2026-01-29 10:53:54.532 [info] DEBUG:pygls.protocol.json_rpc:Sending notification: 'window/logMessage' LogMessageParams(type=<MessageType.Log: 4>, message='CWD Server: c:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled')
    
    2026-01-29 10:53:54.532 [info] INFO:pygls.protocol.json_rpc:Sending data: {"params": {"type": 4, "message": "CWD Server: c:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled"}, "method": "window/logMessage", "jsonrpc": "2.0"}
    
    2026-01-29 10:53:54.534 [info] DEBUG:pygls.protocol.json_rpc:Sending notification: 'window/logMessage' LogMessageParams(type=<MessageType.Log: 4>, message='sys.path used to run Server:\r\n   c:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled\\libs\r\n   c:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled\\tool\r\n   c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\\python315.zip\r\n   c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\\DLLs\r\n   c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\\Lib\r\n   c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\r\n   c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\\Lib\\site-packages')
    INFO:pygls.protocol.json_rpc:Sending data: {"params": {"type": 4, "message": "sys.path used to run Server:\r\n   c:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled\\libs\r\n   c:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled\\tool\r\n   c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\\python315.zip\r\n   c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\\DLLs\r\n   c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\\Lib\r\n   c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\r\n   c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\\Lib\\site-packages"}, "method": "window/logMessage", "jsonrpc": "2.0"}
    DEBUG:pygls.protocol.json_rpc:Sending notification: 'window/logMessage' LogMessageParams(type=<MessageType.Log: 4>, message='Settings used to run Server:\r\n[\n    {\n        "check": false,\n        "cwd": "c:\\\\Users\\\\arthu\\\\.vscode\\\\extensions\\\\ms-python.isort-2025.0.0\\\\bundled",\n        "workspace": "file:///c%3A/Users/arthu/.vscode/extensions/ms-python.isort-2025.0.0/bundled",\n        "args": [],\n        "path": [],\n        "severity": {\n            "W": "Warning",\n            "E": "Hint"\n        },\n        "interpreter": [\n            "c:\\\\Users\\\\arthu\\\\AppData\\\\Local\\\\Python\\\\pythoncore-3.15-64\\\\python.exe"\n        ],\n        "importStrategy": "useBundled",\n        "showNotifications": "off"\n    }\n]\r\n')
    INFO:pygls.protocol.json_rpc:Sending data: {"params": {"type": 4, "message": "Settings used to run Server:\r\n[\n    {\n        \"check\": false,\n        \"cwd\": \"c:\\\\Users\\\\arthu\\\\.vscode\\\\extensions\\\\ms-python.isort-2025.0.0\\\\bundled\",\n        \"workspace\": \"file:///c%3A/Users/arthu/.vscode/extensions/ms-python.isort-2025.0.0/bundled\",\n        \"args\": [],\n        \"path\": [],\n        \"severity\": {\n            \"W\": \"Warning\",\n            \"E\": \"Hint\"\n        },\n        \"interpreter\": [\n            \"c:\\\\Users\\\\arthu\\\\AppData\\\\Local\\\\Python\\\\pythoncore-3.15-64\\\\python.exe\"\n        ],\n        \"importStrategy\": \"useBundled\",\n        \"showNotifications\": \"off\"\n    }\n]\r\n"}, "method": "window/logMessage", "jsonrpc": "2.0"}
    DEBUG:pygls.protocol.json_rpc:Sending notification: 'window/logMessage' LogMessageParams(type=<MessageType.Log: 4>, message='Global settings:\r\n{\n    "check": false,\n    "cwd": "C:\\\\Program Files\\\\Microsoft VS Code",\n    "workspace": "C:\\\\Program Files\\\\Microsoft VS Code",\n    "args": [],\n    "path": [],\n    "severity": {\n        "W": "Warning",\n        "E": "Hint"\n    },\n    "interpreter": [],\n    "importStrategy": "useBundled",\n    "showNotifications": "off"\n}\r\n')
    INFO:pygls.protocol.json_rpc:Sending data: {"params": {"type": 4, "message": "Global settings:\r\n{\n    \"check\": false,\n    \"cwd\": \"C:\\\\Program Files\\\\Microsoft VS Code\",\n    \"workspace\": \"C:\\\\Program Files\\\\Microsoft VS Code\",\n    \"args\": [],\n    \"path\": [],\n    \"severity\": {\n        \"W\": \"Warning\",\n        \"E\": \"Hint\"\n    },\n    \"interpreter\": [],\n    \"importStrategy\": \"useBundled\",\n    \"showNotifications\": \"off\"\n}\r\n"}, "method": "window/logMessage", "jsonrpc": "2.0"}
    
    2026-01-29 10:53:54.534 [info] CWD Server: c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled
    2026-01-29 10:53:54.534 [info] sys.path used to run Server:
       c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled\libs
       c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled\tool
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\python315.zip
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\DLLs
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\Lib
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64
       c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\Lib\site-packages
    2026-01-29 10:53:54.535 [info] Settings used to run Server:
    [
        {
            "check": false,
            "cwd": "c:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled",
            "workspace": "file:///c%3A/Users/arthu/.vscode/extensions/ms-python.isort-2025.0.0/bundled",
            "args": [],
            "path": [],
            "severity": {
                "W": "Warning",
                "E": "Hint"
            },
            "interpreter": [
                "c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\\python.exe"
            ],
            "importStrategy": "useBundled",
            "showNotifications": "off"
        }
    ]
    
    2026-01-29 10:53:54.535 [info] Global settings:
    {
        "check": false,
        "cwd": "C:\\Program Files\\Microsoft VS Code",
        "workspace": "C:\\Program Files\\Microsoft VS Code",
        "args": [],
        "path": [],
        "severity": {
            "W": "Warning",
            "E": "Hint"
        },
        "interpreter": [],
        "importStrategy": "useBundled",
        "showNotifications": "off"
    }
    
    2026-01-29 10:53:54.549 [info] DEBUG:pygls.protocol.json_rpc:Sending notification: 'window/logMessage' LogMessageParams(type=<MessageType.Log: 4>, message='c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\\python.exe -m isort --version-number')
    
    2026-01-29 10:53:54.549 [info] INFO:pygls.protocol.json_rpc:Sending data: {"params": {"type": 4, "message": "c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\\python.exe -m isort --version-number"}, "method": "window/logMessage", "jsonrpc": "2.0"}
    DEBUG:pygls.protocol.json_rpc:Sending notification: 'window/logMessage' LogMessageParams(type=<MessageType.Log: 4>, message='CWD Linter: C:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled')
    INFO:pygls.protocol.json_rpc:Sending data: {"params": {"type": 4, "message": "CWD Linter: C:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled"}, "method": "window/logMessage", "jsonrpc": "2.0"}
    
    2026-01-29 10:53:54.550 [info] c:\Users\arthu\AppData\Local\Python\pythoncore-3.15-64\python.exe -m isort --version-number
    2026-01-29 10:53:54.550 [info] CWD Linter: C:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled
    2026-01-29 10:53:54.574 [info] DEBUG:pygls.protocol.json_rpc:Sending notification: 'window/logMessage' LogMessageParams(type=<MessageType.Log: 4>, message='Version info for isort running for C:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled:\r\n5.13.2\n')
    
    2026-01-29 10:53:54.574 [info] INFO:pygls.protocol.json_rpc:Sending data: {"params": {"type": 4, "message": "Version info for isort running for C:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled:\r\n5.13.2\n"}, "method": "window/logMessage", "jsonrpc": "2.0"}
    DEBUG:pygls.protocol.json_rpc:Sending notification: 'window/logMessage' LogMessageParams(type=<MessageType.Log: 4>, message='SUPPORTED isort>=5.10.1\r\nFOUND isort==5.13.2\r\n')
    INFO:pygls.protocol.json_rpc:Sending data: {"params": {"type": 4, "message": "SUPPORTED isort>=5.10.1\r\nFOUND isort==5.13.2\r\n"}, "method": "window/logMessage", "jsonrpc": "2.0"}
    
    2026-01-29 10:53:54.574 [info] Version info for isort running for C:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\bundled:
    5.13.2
    
    2026-01-29 10:53:54.574 [info] SUPPORTED isort>=5.10.1
    FOUND isort==5.13.2
    
    2026-01-29 10:53:54.580 [info] INFO:pygls.protocol.json_rpc:Sending data: {"id": 0, "jsonrpc": "2.0", "result": {"capabilities": {"positionEncoding": "PositionEncodingKind.Utf16", "textDocumentSync": {"openClose": true, "change": 2, "willSave": false, "willSaveWaitUntil": false, "save": true}, "codeActionProvider": {"codeActionKinds": ["CodeActionKind.SourceOrganizeImports", "CodeActionKind.QuickFix"], "resolveProvider": true}, "executeCommandProvider": {"commands": []}, "workspace": {"workspaceFolders": {"supported": true, "changeNotifications": true}, "fileOperations": {}}}, "serverInfo": {"name": "isort-server", "version": "v0.1.0"}}}
    
    2026-01-29 10:53:54.582 [info] [Error - 10:53:54 AM] Server initialization failed.
    2026-01-29 10:53:54.582 [info] Error: Unsupported position encoding (PositionEncodingKind.Utf16) received from server isort
    	at w.doInitialize (c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\dist\extension.js:1:144777)
    	at async w.start (c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\dist\extension.js:1:143456)
    	at async t.restartServer (c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\dist\extension.js:1:59090)
    	at async o (c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\dist\extension.js:1:71144)
    	at async Kd.value (c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\dist\extension.js:1:71340)
    2026-01-29 10:53:54.582 [info] [Error - 10:53:54 AM] isort client: couldn't create connection to server.
    2026-01-29 10:53:54.582 [info] Error: Unsupported position encoding (PositionEncodingKind.Utf16) received from server isort
    	at w.doInitialize (c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\dist\extension.js:1:144777)
    	at async w.start (c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\dist\extension.js:1:143456)
    	at async t.restartServer (c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\dist\extension.js:1:59090)
    	at async o (c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\dist\extension.js:1:71144)
    	at async Kd.value (c:\Users\arthu\.vscode\extensions\ms-python.isort-2025.0.0\dist\extension.js:1:71340)
    2026-01-29 10:53:54.583 [error] Server: Start failed: Error: Unsupported position encoding (PositionEncodingKind.Utf16) received from server isort
    

    It is therefore confirmed that the literal string "PositionEncodingKind.Utf16" was sent.

    Finding the blame

    I did the following logging at ServerCapabilitiesBuilder.__init__():

            logger.info(f"{client_capabilities=}")
    

    This time I noticed:

    2026-01-29 11:11:44.601 [info] INFO:pygls.protocol.language_server:Language server initialized InitializeParams(capabilities=ClientCapabilities(workspace=WorkspaceClientCapabilities(apply_edit=True, workspace_edit=WorkspaceEditClientCapabilities(document_changes=True, resource_operations=[<ResourceOperationKind.Create: 'create'>, <ResourceOperationKind.Rename: 'rename'>, <ResourceOperationKind.Delete: 'delete'>], failure_handling=<FailureHandlingKind.TextOnlyTransactional: 'textOnlyTransactional'>, normalizes_line_endings=True, change_annotation_support=WorkspaceEditClientCapabilitiesChangeAnnotationSupportType(groups_on_label=True)), did_change_configuration=DidChangeConfigurationClientCapabilities(dynamic_registration=True), did_change_watched_files=DidChangeWatchedFilesClientCapabilities(dynamic_registration=True, relative_pattern_support=True), symbol=WorkspaceSymbolClientCapabilities(dynamic_registration=True, symbol_kind=WorkspaceSymbolClientCapabilitiesSymbolKindType(value_set=[<SymbolKind.File: 1>, <SymbolKind.Module: 2>, <SymbolKind.Namespace: 3>, <SymbolKind.Package: 4>, <SymbolKind.Class: 5>, <SymbolKind.Method: 6>, <SymbolKind.Property: 7>, <SymbolKind.Field: 8>, <SymbolKind.Constructor: 9>, <SymbolKind.Enum: 10>, <SymbolKind.Interface: 11>, <SymbolKind.Function: 12>, <SymbolKind.Variable: 13>, <SymbolKind.Constant: 14>, <SymbolKind.String: 15>, <SymbolKind.Number: 16>, <SymbolKind.Boolean: 17>, <SymbolKind.Array: 18>, <SymbolKind.Object: 19>, <SymbolKind.Key: 20>, <SymbolKind.Null: 21>, <SymbolKind.EnumMember: 22>, <SymbolKind.Struct: 23>, <SymbolKind.Event: 24>, <SymbolKind.Operator: 25>, <SymbolKind.TypeParameter: 26>]), tag_support=WorkspaceSymbolClientCapabilitiesTagSupportType(value_set=[<SymbolTag.Deprecated: 1>]), resolve_support=WorkspaceSymbolClientCapabilitiesResolveSupportType(properties=['location.range'])), execute_command=ExecuteCommandClientCapabilities(dynamic_registration=True), workspace_folders=True, configuration=True, semantic_tokens=SemanticTokensWorkspaceClientCapabilities(refresh_support=True), code_lens=CodeLensWorkspaceClientCapabilities(refresh_support=True), file_operations=FileOperationClientCapabilities(dynamic_registration=True, did_create=True, will_create=True, did_rename=True, will_rename=True, did_delete=True, will_delete=True), inline_value=InlineValueWorkspaceClientCapabilities(refresh_support=True), inlay_hint=InlayHintWorkspaceClientCapabilities(refresh_support=True), diagnostics=DiagnosticWorkspaceClientCapabilities(refresh_support=True), folding_range=None), text_document=TextDocumentClientCapabilities(synchronization=TextDocumentSyncClientCapabilities(dynamic_registration=True, will_save=True, will_save_wait_until=True, did_save=True), completion=CompletionClientCapabilities(dynamic_registration=True, completion_item=CompletionClientCapabilitiesCompletionItemType(snippet_support=True, commit_characters_support=True, documentation_format=[<MarkupKind.Markdown: 'markdown'>, <MarkupKind.PlainText: 'plaintext'>], deprecated_support=True, preselect_support=True, tag_support=CompletionClientCapabilitiesCompletionItemTypeTagSupportType(value_set=[<CompletionItemTag.Deprecated: 1>]), insert_replace_support=True, resolve_support=CompletionClientCapabilitiesCompletionItemTypeResolveSupportType(properties=['documentation', 'detail', 'additionalTextEdits']), insert_text_mode_support=CompletionClientCapabilitiesCompletionItemTypeInsertTextModeSupportType(value_set=[<InsertTextMode.AsIs: 1>, <InsertTextMode.AdjustIndentation: 2>]), label_details_support=True), completion_item_kind=CompletionClientCapabilitiesCompletionItemKindType(value_set=[<CompletionItemKind.Text: 1>, <CompletionItemKind.Method: 2>, <CompletionItemKind.Function: 3>, <CompletionItemKind.Constructor: 4>, <CompletionItemKind.Field: 5>, <CompletionItemKind.Variable: 6>, <CompletionItemKind.Class: 7>, <CompletionItemKind.Interface: 8>, <CompletionItemKind.Module: 9>, <CompletionItemKind.Property: 10>, <CompletionItemKind.Unit: 11>, <CompletionItemKind.Value: 12>, <CompletionItemKind.Enum: 13>, <CompletionItemKind.Keyword: 14>, <CompletionItemKind.Snippet: 15>, <CompletionItemKind.Color: 16>, <CompletionItemKind.File: 17>, <CompletionItemKind.Reference: 18>, <CompletionItemKind.Folder: 19>, <CompletionItemKind.EnumMember: 20>, <CompletionItemKind.Constant: 21>, <CompletionItemKind.Struct: 22>, <CompletionItemKind.Event: 23>, <CompletionItemKind.Operator: 24>, <CompletionItemKind.TypeParameter: 25>]), insert_text_mode=<InsertTextMode.AdjustIndentation: 2>, context_support=True, completion_list=CompletionClientCapabilitiesCompletionListType(item_defaults=['commitCharacters', 'editRange', 'insertTextFormat', 'insertTextMode'])), hover=HoverClientCapabilities(dynamic_registration=True, content_format=[<MarkupKind.Markdown: 'markdown'>, <MarkupKind.PlainText: 'plaintext'>]), signature_help=SignatureHelpClientCapabilities(dynamic_registration=True, signature_information=SignatureHelpClientCapabilitiesSignatureInformationType(documentation_format=[<MarkupKind.Markdown: 'markdown'>, <MarkupKind.PlainText: 'plaintext'>], parameter_information=SignatureHelpClientCapabilitiesSignatureInformationTypeParameterInformationType(label_offset_support=True), active_parameter_support=True), context_support=True), declaration=DeclarationClientCapabilities(dynamic_registration=True, link_support=True), definition=DefinitionClientCapabilities(dynamic_registration=True, link_support=True), type_definition=TypeDefinitionClientCapabilities(dynamic_registration=True, link_support=True), implementation=ImplementationClientCapabilities(dynamic_registration=True, link_support=True), references=ReferenceClientCapabilities(dynamic_registration=True), document_highlight=DocumentHighlightClientCapabilities(dynamic_registration=True), document_symbol=DocumentSymbolClientCapabilities(dynamic_registration=True, symbol_kind=DocumentSymbolClientCapabilitiesSymbolKindType(value_set=[<SymbolKind.File: 1>, <SymbolKind.Module: 2>, <SymbolKind.Namespace: 3>, <SymbolKind.Package: 4>, <SymbolKind.Class: 5>, <SymbolKind.Method: 6>, <SymbolKind.Property: 7>, <SymbolKind.Field: 8>, <SymbolKind.Constructor: 9>, <SymbolKind.Enum: 10>, <SymbolKind.Interface: 11>, <SymbolKind.Function: 12>, <SymbolKind.Variable: 13>, <SymbolKind.Constant: 14>, <SymbolKind.String: 15>, <SymbolKind.Number: 16>, <SymbolKind.Boolean: 17>, <SymbolKind.Array: 18>, <SymbolKind.Object: 19>, <SymbolKind.Key: 20>, <SymbolKind.Null: 21>, <SymbolKind.EnumMember: 22>, <SymbolKind.Struct: 23>, <SymbolKind.Event: 24>, <SymbolKind.Operator: 25>, <SymbolKind.TypeParameter: 26>]), hierarchical_document_symbol_support=True, tag_support=DocumentSymbolClientCapabilitiesTagSupportType(value_set=[<SymbolTag.Deprecated: 1>]), label_support=True), code_action=CodeActionClientCapabilities(dynamic_registration=True, code_action_literal_support=CodeActionClientCapabilitiesCodeActionLiteralSupportType(code_action_kind=CodeActionClientCapabilitiesCodeActionLiteralSupportTypeCodeActionKindType(value_set=['', 'quickfix', 'refactor', 'refactor.extract', 'refactor.inline', 'refactor.rewrite', 'source', 'source.organizeImports'])), is_preferred_support=True, disabled_support=True, data_support=True, resolve_support=CodeActionClientCapabilitiesResolveSupportType(properties=['edit']), honors_change_annotations=False), code_lens=CodeLensClientCapabilities(dynamic_registration=True), document_link=DocumentLinkClientCapabilities(dynamic_registration=True, tooltip_support=True), color_provider=DocumentColorClientCapabilities(dynamic_registration=True), formatting=DocumentFormattingClientCapabilities(dynamic_registration=True), range_formatting=DocumentRangeFormattingClientCapabilities(dynamic_registration=True, ranges_support=None), on_type_formatting=DocumentOnTypeFormattingClientCapabilities(dynamic_registration=True), rename=RenameClientCapabilities(dynamic_registration=True, prepare_support=True, prepare_support_default_behavior=<PrepareSupportDefaultBehavior.Identifier: 1>, honors_change_annotations=True), folding_range=FoldingRangeClientCapabilities(dynamic_registration=True, range_limit=5000, line_folding_only=True, folding_range_kind=FoldingRangeClientCapabilitiesFoldingRangeKindType(value_set=['comment', 'imports', 'region']), folding_range=FoldingRangeClientCapabilitiesFoldingRangeType(collapsed_text=False)), selection_range=SelectionRangeClientCapabilities(dynamic_registration=True), publish_diagnostics=PublishDiagnosticsClientCapabilities(related_information=True, tag_support=PublishDiagnosticsClientCapabilitiesTagSupportType(value_set=[<DiagnosticTag.Unnecessary: 1>, <DiagnosticTag.Deprecated: 2>]), version_support=False, code_description_support=True, data_support=True), call_hierarchy=CallHierarchyClientCapabilities(dynamic_registration=True), semantic_tokens=SemanticTokensClientCapabilities(requests=SemanticTokensClientCapabilitiesRequestsType(range=True, full=SemanticTokensClientCapabilitiesRequestsTypeFullType1(delta=True)), token_types=['namespace', 'type', 'class', 'enum', 'interface', 'struct', 'typeParameter', 'parameter', 'variable', 'property', 'enumMember', 'event', 'function', 'method', 'macro', 'keyword', 'modifier', 'comment', 'string', 'number', 'regexp', 'operator', 'decorator'], token_modifiers=['declaration', 'definition', 'readonly', 'static', 'deprecated', 'abstract', 'async', 'modification', 'documentation', 'defaultLibrary'], formats=[<TokenFormat.Relative: 'relative'>], dynamic_registration=True, overlapping_token_support=False, multiline_token_support=False, server_cancel_support=True, augments_syntax_tokens=True), linked_editing_range=LinkedEditingRangeClientCapabilities(dynamic_registration=True), moniker=None, type_hierarchy=TypeHierarchyClientCapabilities(dynamic_registration=True), inline_value=InlineValueClientCapabilities(dynamic_registration=True), inlay_hint=InlayHintClientCapabilities(dynamic_registration=True, resolve_support=InlayHintClientCapabilitiesResolveSupportType(properties=['tooltip', 'textEdits', 'label.tooltip', 'label.location', 'label.command'])), diagnostic=DiagnosticClientCapabilities(dynamic_registration=True, related_document_support=False), inline_completion=None), notebook_document=NotebookDocumentClientCapabilities(synchronization=NotebookDocumentSyncClientCapabilities(dynamic_registration=True, execution_summary_support=True)), window=WindowClientCapabilities(work_done_progress=True, show_message=ShowMessageRequestClientCapabilities(message_action_item=ShowMessageRequestClientCapabilitiesMessageActionItemType(additional_properties_support=True)), show_document=ShowDocumentClientCapabilities(support=True)), general=GeneralClientCapabilities(stale_request_support=GeneralClientCapabilitiesStaleRequestSupportType(cancel=True, retry_on_content_modified=['textDocument/semanticTokens/full', 'textDocument/semanticTokens/range', 'textDocument/semanticTokens/full/delta']), regular_expressions=RegularExpressionsClientCapabilities(engine='ECMAScript', version='ES2020'), markdown=MarkdownClientCapabilities(parser='marked', version='1.1.0', allowed_tags=None), position_encodings=['utf-16']), experimental=None), process_id=21352, client_info=InitializeParamsClientInfoType(name='Visual Studio Code', version='1.108.2'), locale='en', root_path='c:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled', root_uri='file:///c%3A/Users/arthu/.vscode/extensions/ms-python.isort-2025.0.0/bundled', initialization_options={'settings': [{'check': False, 'cwd': 'c:\\Users\\arthu\\.vscode\\extensions\\ms-python.isort-2025.0.0\\bundled', 'workspace': 'file:///c%3A/Users/arthu/.vscode/extensions/ms-python.isort-2025.0.0/bundled', 'args': [], 'path': [], 'severity': {'W': 'Warning', 'E': 'Hint'}, 'interpreter': ['c:\\Users\\arthu\\AppData\\Local\\Python\\pythoncore-3.15-64\\python.exe'], 'importStrategy': 'useBundled', 'showNotifications': 'off'}], 'globalSettings': {'check': False, 'cwd': 'C:\\Program Files\\Microsoft VS Code', 'workspace': 'C:\\Program Files\\Microsoft VS Code', 'args': [], 'path': [], 'severity': {'W': 'Warning', 'E': 'Hint'}, 'interpreter': [], 'importStrategy': 'useBundled', 'showNotifications': 'off'}}, trace=<TraceValues.Off: 'off'>, work_done_token=None, workspace_folders=[WorkspaceFolder(uri='file:///c%3A/Users/arthu/.vscode/extensions/ms-python.isort-2025.0.0/bundled', name='bundled')])
    
    2026-01-29 11:11:44.601 [info] INFO:pygls.capabilities:client_capabilities=ClientCapabilities(workspace=WorkspaceClientCapabilities(apply_edit=True, workspace_edit=WorkspaceEditClientCapabilities(document_changes=True, resource_operations=[<ResourceOperationKind.Create: 'create'>, <ResourceOperationKind.Rename: 'rename'>, <ResourceOperationKind.Delete: 'delete'>], failure_handling=<FailureHandlingKind.TextOnlyTransactional: 'textOnlyTransactional'>, normalizes_line_endings=True, change_annotation_support=WorkspaceEditClientCapabilitiesChangeAnnotationSupportType(groups_on_label=True)), did_change_configuration=DidChangeConfigurationClientCapabilities(dynamic_registration=True), did_change_watched_files=DidChangeWatchedFilesClientCapabilities(dynamic_registration=True, relative_pattern_support=True), symbol=WorkspaceSymbolClientCapabilities(dynamic_registration=True, symbol_kind=WorkspaceSymbolClientCapabilitiesSymbolKindType(value_set=[<SymbolKind.File: 1>, <SymbolKind.Module: 2>, <SymbolKind.Namespace: 3>, <SymbolKind.Package: 4>, <SymbolKind.Class: 5>, <SymbolKind.Method: 6>, <SymbolKind.Property: 7>, <SymbolKind.Field: 8>, <SymbolKind.Constructor: 9>, <SymbolKind.Enum: 10>, <SymbolKind.Interface: 11>, <SymbolKind.Function: 12>, <SymbolKind.Variable: 13>, <SymbolKind.Constant: 14>, <SymbolKind.String: 15>, <SymbolKind.Number: 16>, <SymbolKind.Boolean: 17>, <SymbolKind.Array: 18>, <SymbolKind.Object: 19>, <SymbolKind.Key: 20>, <SymbolKind.Null: 21>, <SymbolKind.EnumMember: 22>, <SymbolKind.Struct: 23>, <SymbolKind.Event: 24>, <SymbolKind.Operator: 25>, <SymbolKind.TypeParameter: 26>]), tag_support=WorkspaceSymbolClientCapabilitiesTagSupportType(value_set=[<SymbolTag.Deprecated: 1>]), resolve_support=WorkspaceSymbolClientCapabilitiesResolveSupportType(properties=['location.range'])), execute_command=ExecuteCommandClientCapabilities(dynamic_registration=True), workspace_folders=True, configuration=True, semantic_tokens=SemanticTokensWorkspaceClientCapabilities(refresh_support=True), code_lens=CodeLensWorkspaceClientCapabilities(refresh_support=True), file_operations=FileOperationClientCapabilities(dynamic_registration=True, did_create=True, will_create=True, did_rename=True, will_rename=True, did_delete=True, will_delete=True), inline_value=InlineValueWorkspaceClientCapabilities(refresh_support=True), inlay_hint=InlayHintWorkspaceClientCapabilities(refresh_support=True), diagnostics=DiagnosticWorkspaceClientCapabilities(refresh_support=True), folding_range=None), text_document=TextDocumentClientCapabilities(synchronization=TextDocumentSyncClientCapabilities(dynamic_registration=True, will_save=True, will_save_wait_until=True, did_save=True), completion=CompletionClientCapabilities(dynamic_registration=True, completion_item=CompletionClientCapabilitiesCompletionItemType(snippet_support=True, commit_characters_support=True, documentation_format=[<MarkupKind.Markdown: 'markdown'>, <MarkupKind.PlainText: 'plaintext'>], deprecated_support=True, preselect_support=True, tag_support=CompletionClientCapabilitiesCompletionItemTypeTagSupportType(value_set=[<CompletionItemTag.Deprecated: 1>]), insert_replace_support=True, resolve_support=CompletionClientCapabilitiesCompletionItemTypeResolveSupportType(properties=['documentation', 'detail', 'additionalTextEdits']), insert_text_mode_support=CompletionClientCapabilitiesCompletionItemTypeInsertTextModeSupportType(value_set=[<InsertTextMode.AsIs: 1>, <InsertTextMode.AdjustIndentation: 2>]), label_details_support=True), completion_item_kind=CompletionClientCapabilitiesCompletionItemKindType(value_set=[<CompletionItemKind.Text: 1>, <CompletionItemKind.Method: 2>, <CompletionItemKind.Function: 3>, <CompletionItemKind.Constructor: 4>, <CompletionItemKind.Field: 5>, <CompletionItemKind.Variable: 6>, <CompletionItemKind.Class: 7>, <CompletionItemKind.Interface: 8>, <CompletionItemKind.Module: 9>, <CompletionItemKind.Property: 10>, <CompletionItemKind.Unit: 11>, <CompletionItemKind.Value: 12>, <CompletionItemKind.Enum: 13>, <CompletionItemKind.Keyword: 14>, <CompletionItemKind.Snippet: 15>, <CompletionItemKind.Color: 16>, <CompletionItemKind.File: 17>, <CompletionItemKind.Reference: 18>, <CompletionItemKind.Folder: 19>, <CompletionItemKind.EnumMember: 20>, <CompletionItemKind.Constant: 21>, <CompletionItemKind.Struct: 22>, <CompletionItemKind.Event: 23>, <CompletionItemKind.Operator: 24>, <CompletionItemKind.TypeParameter: 25>]), insert_text_mode=<InsertTextMode.AdjustIndentation: 2>, context_support=True, completion_list=CompletionClientCapabilitiesCompletionListType(item_defaults=['commitCharacters', 'editRange', 'insertTextFormat', 'insertTextMode'])), hover=HoverClientCapabilities(dynamic_registration=True, content_format=[<MarkupKind.Markdown: 'markdown'>, <MarkupKind.PlainText: 'plaintext'>]), signature_help=SignatureHelpClientCapabilities(dynamic_registration=True, signature_information=SignatureHelpClientCapabilitiesSignatureInformationType(documentation_format=[<MarkupKind.Markdown: 'markdown'>, <MarkupKind.PlainText: 'plaintext'>], parameter_information=SignatureHelpClientCapabilitiesSignatureInformationTypeParameterInformationType(label_offset_support=True), active_parameter_support=True), context_support=True), declaration=DeclarationClientCapabilities(dynamic_registration=True, link_support=True), definition=DefinitionClientCapabilities(dynamic_registration=True, link_support=True), type_definition=TypeDefinitionClientCapabilities(dynamic_registration=True, link_support=True), implementation=ImplementationClientCapabilities(dynamic_registration=True, link_support=True), references=ReferenceClientCapabilities(dynamic_registration=True), document_highlight=DocumentHighlightClientCapabilities(dynamic_registration=True), document_symbol=DocumentSymbolClientCapabilities(dynamic_registration=True, symbol_kind=DocumentSymbolClientCapabilitiesSymbolKindType(value_set=[<SymbolKind.File: 1>, <SymbolKind.Module: 2>, <SymbolKind.Namespace: 3>, <SymbolKind.Package: 4>, <SymbolKind.Class: 5>, <SymbolKind.Method: 6>, <SymbolKind.Property: 7>, <SymbolKind.Field: 8>, <SymbolKind.Constructor: 9>, <SymbolKind.Enum: 10>, <SymbolKind.Interface: 11>, <SymbolKind.Function: 12>, <SymbolKind.Variable: 13>, <SymbolKind.Constant: 14>, <SymbolKind.String: 15>, <SymbolKind.Number: 16>, <SymbolKind.Boolean: 17>, <SymbolKind.Array: 18>, <SymbolKind.Object: 19>, <SymbolKind.Key: 20>, <SymbolKind.Null: 21>, <SymbolKind.EnumMember: 22>, <SymbolKind.Struct: 23>, <SymbolKind.Event: 24>, <SymbolKind.Operator: 25>, <SymbolKind.TypeParameter: 26>]), hierarchical_document_symbol_support=True, tag_support=DocumentSymbolClientCapabilitiesTagSupportType(value_set=[<SymbolTag.Deprecated: 1>]), label_support=True), code_action=CodeActionClientCapabilities(dynamic_registration=True, code_action_literal_support=CodeActionClientCapabilitiesCodeActionLiteralSupportType(code_action_kind=CodeActionClientCapabilitiesCodeActionLiteralSupportTypeCodeActionKindType(value_set=['', 'quickfix', 'refactor', 'refactor.extract', 'refactor.inline', 'refactor.rewrite', 'source', 'source.organizeImports'])), is_preferred_support=True, disabled_support=True, data_support=True, resolve_support=CodeActionClientCapabilitiesResolveSupportType(properties=['edit']), honors_change_annotations=False), code_lens=CodeLensClientCapabilities(dynamic_registration=True), document_link=DocumentLinkClientCapabilities(dynamic_registration=True, tooltip_support=True), color_provider=DocumentColorClientCapabilities(dynamic_registration=True), formatting=DocumentFormattingClientCapabilities(dynamic_registration=True), range_formatting=DocumentRangeFormattingClientCapabilities(dynamic_registration=True, ranges_support=None), on_type_formatting=DocumentOnTypeFormattingClientCapabilities(dynamic_registration=True), rename=RenameClientCapabilities(dynamic_registration=True, prepare_support=True, prepare_support_default_behavior=<PrepareSupportDefaultBehavior.Identifier: 1>, honors_change_annotations=True), folding_range=FoldingRangeClientCapabilities(dynamic_registration=True, range_limit=5000, line_folding_only=True, folding_range_kind=FoldingRangeClientCapabilitiesFoldingRangeKindType(value_set=['comment', 'imports', 'region']), folding_range=FoldingRangeClientCapabilitiesFoldingRangeType(collapsed_text=False)), selection_range=SelectionRangeClientCapabilities(dynamic_registration=True), publish_diagnostics=PublishDiagnosticsClientCapabilities(related_information=True, tag_support=PublishDiagnosticsClientCapabilitiesTagSupportType(value_set=[<DiagnosticTag.Unnecessary: 1>, <DiagnosticTag.Deprecated: 2>]), version_support=False, code_description_support=True, data_support=True), call_hierarchy=CallHierarchyClientCapabilities(dynamic_registration=True), semantic_tokens=SemanticTokensClientCapabilities(requests=SemanticTokensClientCapabilitiesRequestsType(range=True, full=SemanticTokensClientCapabilitiesRequestsTypeFullType1(delta=True)), token_types=['namespace', 'type', 'class', 'enum', 'interface', 'struct', 'typeParameter', 'parameter', 'variable', 'property', 'enumMember', 'event', 'function', 'method', 'macro', 'keyword', 'modifier', 'comment', 'string', 'number', 'regexp', 'operator', 'decorator'], token_modifiers=['declaration', 'definition', 'readonly', 'static', 'deprecated', 'abstract', 'async', 'modification', 'documentation', 'defaultLibrary'], formats=[<TokenFormat.Relative: 'relative'>], dynamic_registration=True, overlapping_token_support=False, multiline_token_support=False, server_cancel_support=True, augments_syntax_tokens=True), linked_editing_range=LinkedEditingRangeClientCapabilities(dynamic_registration=True), moniker=None, type_hierarchy=TypeHierarchyClientCapabilities(dynamic_registration=True), inline_value=InlineValueClientCapabilities(dynamic_registration=True), inlay_hint=InlayHintClientCapabilities(dynamic_registration=True, resolve_support=InlayHintClientCapabilitiesResolveSupportType(properties=['tooltip', 'textEdits', 'label.tooltip', 'label.location', 'label.command'])), diagnostic=DiagnosticClientCapabilities(dynamic_registration=True, related_document_support=False), inline_completion=None), notebook_document=NotebookDocumentClientCapabilities(synchronization=NotebookDocumentSyncClientCapabilities(dynamic_registration=True, execution_summary_support=True)), window=WindowClientCapabilities(work_done_progress=True, show_message=ShowMessageRequestClientCapabilities(message_action_item=ShowMessageRequestClientCapabilitiesMessageActionItemType(additional_properties_support=True)), show_document=ShowDocumentClientCapabilities(support=True)), general=GeneralClientCapabilities(stale_request_support=GeneralClientCapabilitiesStaleRequestSupportType(cancel=True, retry_on_content_modified=['textDocument/semanticTokens/full', 'textDocument/semanticTokens/range', 'textDocument/semanticTokens/full/delta']), regular_expressions=RegularExpressionsClientCapabilities(engine='ECMAScript', version='ES2020'), markdown=MarkdownClientCapabilities(parser='marked', version='1.1.0', allowed_tags=None), position_encodings=['utf-16']), experimental=None)
    
    2026-01-29 11:11:44.610 [info] DEBUG:pygls.protocol.language_server:Server capabilities: {"positionEncoding": "PositionEncodingKind.Utf16", "textDocumentSync": {"openClose": true, "change": 2, "willSave": false, "willSaveWaitUntil": false, "save": true}, "codeActionProvider": {"codeActionKinds": ["CodeActionKind.SourceOrganizeImports", "CodeActionKind.QuickFix"], "resolveProvider": true}, "executeCommandProvider": {"commands": []}, "workspace": {"workspaceFolders": {"supported": true, "changeNotifications": true}, "fileOperations": {}}}
    

    The client capabilities was therefore passed into ServerCapabilitiesBuilder intact as "utf-16". The pygls.protocol.language_server:Server capabilities logging does include the unwanted PositionEncodingKind.Utf16 string, but is it representative of what the jsonrpc part does?

            logger.debug(
                "Server capabilities: %s",
                json.dumps(self.server_capabilities, default=self._serialize_message),
            )

    Well, looks like it. What could've caused it though?

    JSONRPCProtocol._serialize_message() has a check for enum. I did the following printing:

    // in: def lsp_initialize()
            import enum
            logger.info(f"{isinstance(types.PositionEncodingKind, enum.Enum)=}")
            logger.info(f"{isinstance(types.PositionEncodingKind.Utf16, enum.Enum)=}")
            logger.info(f"{types.PositionEncodingKind.Utf16=}")
            logger.info(f"{types.PositionEncodingKind.Utf16.value=}")
            logger.info(f"{hasattr(types.PositionEncodingKind.Utf16, "__attrs_attrs__")=}")
            logger.info(f"{types.PositionEncodingKind.Utf16.__dict__}")
    2026-01-29 11:09:04.014 [info] INFO:pygls.capabilities:isinstance(types.PositionEncodingKind, enum.Enum)=False
    INFO:pygls.capabilities:isinstance(types.PositionEncodingKind.Utf16, enum.Enum)=True
    INFO:pygls.capabilities:types.PositionEncodingKind.Utf16=<PositionEncodingKind.Utf16: 'utf-16'>
    INFO:pygls.capabilities:types.PositionEncodingKind.Utf16.value='utf-16'
    INFO:pygls.capabilities:hasattr(types.PositionEncodingKind.Utf16, "__attrs_attrs__")=False
    INFO:pygls.capabilities:{'_value_': 'utf-16', '_name_': 'Utf16', '__objclass__': <enum 'PositionEncodingKind'>, '_sort_order_': 1}
    

    Nothing odd here. Perhaps we should print the thing before dumping to compare?

    // in: def lsp_initialize()
            logger.info(f"{self.server_capabilities.positionEncoding=}")
            logger.info(f"{json.dumps(self.server_capabilities.positionEncoding, default=self._serialize_message)=}")
            try:
                logger.info(f"{json.dumps(self.server_capabilities.positionEncoding)=}")
            except:
                pass
            logger.debug(
                "Server capabilities: %s",
                json.dumps(self.server_capabilities, default=self._serialize_message),
            )
    INFO:pygls.protocol.language_server:self.server_capabilities.position_encoding=<PositionEncodingKind.Utf16: 'utf-16'>
    INFO:pygls.protocol.language_server:json.dumps(self.server_capabilities.position_encoding, default=self._serialize_message)='"utf-16"'
    INFO:pygls.protocol.language_server:json.dumps(self.server_capabilities.position_encoding)='"utf-16"'
    

    Huh, not triggered here. Hey how did position_encoding become positionEncoding? Attr magic? This reminds me of the special casing in _serialize_message():

            if hasattr(data, "__attrs_attrs__"):
                return self._converter.unstructure(data)
    

    What's a converter? Hmmm it's constructed from a default_converter in BaseLanguageClient. Hmm it has something to do with cattrs, which according to its doc should only ever unstructure to value. This is beyond my ability to solve things by logging and I'm too hungry to continue.

  5. Artoria2e5 commented on Jan 29, 2026

    @Artoria2e5

    Some more logging injected at the same place

    2026-01-29 20:12:19.348 [info] INFO:pygls.protocol.language_server:self.server_capabilities.position_encoding=<PositionEncodingKind.Utf16: 'utf-16'>
    INFO:pygls.protocol.language_server:json.dumps(self.server_capabilities.position_encoding, default=self._serialize_message)='"utf-16"'
    INFO:pygls.protocol.language_server:json.dumps(self.server_capabilities.position_encoding)='"utf-16"'
    INFO:pygls.protocol.language_server:self._converter.unstructure(self.server_capabilities.position_encoding)=<PositionEncodingKind.Utf16: 'utf-16'>
    INFO:pygls.protocol.language_server:cattrs.unstructure(self.server_capabilities.position_encoding)=<PositionEncodingKind.Utf16: 'utf-16'>
    
    2026-01-29 20:12:19.348 [info] INFO:pygls.protocol.language_server:type(self.server_capabilities.position_encoding)=<enum 'PositionEncodingKind'>
    INFO:pygls.protocol.language_server:issubclass(type(self.server_capabilities.position_encoding), enum.Enum)=True
    INFO:pygls.protocol.language_server:self._converter.get_unstructure_hook(self.server_capabilities.position_encoding)=<function identity at 0x0000021AC2EAACF0>
    
    2026-01-29 20:12:19.349 [info] INFO:pygls.protocol.language_server:cattrs.get_unstructure_hook(self.server_capabilities.position_encoding)=<function identity at 0x0000021AC2EAACF0>
    

    Now this just doesn't make sense. That's not what their doc (https://catt.rs/en/stable/defaulthooks.html#enums) says. This is not what cattrs/converter.py says for (lambda t: issubclass(t, Enum), self._unstructure_enum),.

    Perhaps I should work on a minimal repro.

    import sys
    import os
    sys.path = [
        os.path.dirname(os.path.abspath(__file__)) + "/libs",
        *sys.path
    ]
    
    import enum
    import cattrs
    import json
    from cattrs.cols import is_sequence
    
    @enum.unique
    class PEK(str, enum.Enum):
        Utf8 = "utf-8"
        Utf16 = "utf-16"
        Utf32 = "utf-32"
    
    @enum.unique
    class PEK2(enum.Enum):
        Utf8 = "utf-8"
        Utf16 = "utf-16"
        Utf32 = "utf-32"
    
    print(f'{is_sequence(PEK.Utf16)=}')
    print(f'{cattrs.get_unstructure_hook(PEK.Utf16)=}')
    print(f'{json.dumps(cattrs.unstructure(PEK.Utf16))=}')
    
    from typing import Optional, Union
    import attrs
    
    @attrs.define
    class ServerCapabilities:
        position_encoding: Optional[Union[PEK, str]] = attrs.field(
            default=None
        )
    
    @attrs.define
    class ServerCapabilities2:
        position_encoding: Optional[Union[PEK2, str]] = attrs.field(
            default=None
        )
    
    def _serialize_message(data, u = cattrs.unstructure):
        """Function used to serialize data sent to the client."""
    
        if hasattr(data, "__attrs_attrs__"):
            return u(data)
    
        if isinstance(data, enum.Enum):
            return data.value
    
        return data.__dict__
    
    a = ServerCapabilities()
    a.position_encoding = PEK.Utf16
    b = ServerCapabilities2()
    b.position_encoding = PEK2.Utf16
    
    print(f'{json.dumps(_serialize_message(a))=}')
    print(f'{json.dumps(cattrs.unstructure(a))=}')
    print(f'{json.dumps(_serialize_message(b))=}')
    print(f'{json.dumps(cattrs.unstructure(b))=}')
    
    from pygls.protocol import default_converter
    print(f'{json.dumps(_serialize_message(a, default_converter().unstructure))=}')
    print(f'{json.dumps(_serialize_message(b, default_converter().unstructure))=}')

    gives

    is_sequence(PEK.Utf16)=False
    cattrs.get_unstructure_hook(PEK.Utf16)=<function identity at 0x0000024A244ACEB0>
    json.dumps(cattrs.unstructure(PEK.Utf16))='"utf-16"'
    json.dumps(_serialize_message(a))='{"position_encoding": "PEK.Utf16"}'
    json.dumps(cattrs.unstructure(a))='{"position_encoding": "PEK.Utf16"}'
    json.dumps(_serialize_message(b))='{"position_encoding": "utf-16"}'
    json.dumps(cattrs.unstructure(b))='{"position_encoding": "utf-16"}'
    json.dumps(_serialize_message(a, default_converter().unstructure))='{"positionEncoding": "PEK.Utf16"}'
    json.dumps(_serialize_message(b, default_converter().unstructure))='{"positionEncoding": "utf-16"}'
    

    Now we see the problem. Still, how?

  6. antoshik86 commented on Jan 31, 2026

    @antoshik86
    Author

    I’d like to summarize what seems to be going on and suggest a concrete fix.

    From Mingye Wang (@Artoria2e5)’s investigation, the root cause appears to be how pygls/cattrs serialize enums of the form class PEK(str, Enum) in server capabilities. Instead of sending the enum value (e.g. "utf-16"), the JSON produced on the wire ends up containing the enum member name (e.g. "PEK.Utf16"). This violates the LSP expectation for positionEncoding, which must be the literal string "utf-16", so the VS Code Python client is correct to reject it as an unsupported encoding.

    In the minimal repro, two enum definitions behave differently under cattrs:

    python
    @enum.unique
    class PEK(str, enum.Enum):
    Utf8 = "utf-8"
    Utf16 = "utf-16"
    Utf32 = "utf-32"

    @enum.unique
    class PEK2(enum.Enum):
    Utf8 = "utf-8"
    Utf16 = "utf-16"
    Utf32 = "utf-32"
    For PEK, cattrs.unstructure(...) ends up producing "PEK.Utf16" in JSON, while for PEK2 the output is the correct "utf-16". This matches what we see on the wire for positionEncoding.

    Given that, there are two straightforward ways to fix this on the server side:

    Change PositionEncodingKind (and any similar enums used in server capabilities) from class PositionEncodingKind(str, Enum) to a plain Enum:

    python
    class PositionEncodingKind(enum.Enum):
    Utf8 = "utf-8"
    Utf16 = "utf-16"
    Utf32 = "utf-32"
    This makes cattrs serialize positionEncoding as "utf-16", which is what the LSP spec and vscode-languageserver-node expect.

    Alternatively, keep the existing enum definition, but register a custom unstructure hook for this type (or add a generic hook in pygls), ensuring that cattrs always emits enum.value instead of the member name. For example:

    python
    from pygls.protocol import default_converter

    conv = default_converter()
    conv.register_unstructure_hook(PositionEncodingKind, lambda e: e.value)
    Either approach should make the server send "utf-16" as the positionEncoding capability and restore compatibility with the VS Code Python extension (and other LSP clients that perform a strict check on this field).

    I’m happy to test a patched build of jedi-language-server/pygls in my VSCodium setup as soon as a change is available.

  7. antoshik86 commented on Feb 3, 2026

    @antoshik86
    Author

    I can confirm that patching the PositionEncodingKind class definition locally fixes the issue on Windows immediately.

    For anyone who needs a quick fix without downgrading, I used a PowerShell script to locate and patch the file in the installed extension.

    The Fix:
    It finds lsprotocol/types.py inside the installed ms-python.python extension and changes:

    class PositionEncodingKind(str, enum.Enum):
    
    class PositionEncodingKind(enum.Enum):
    
    
    PowerShell "Hotfix" Script (Use at your own risk):
    
    powershell
    # Quick fix for "Unsupported position encoding" in VSCode/VSCodium Python extension
    $ErrorActionPreference = "Stop"
    
    # Detect extensions path (VSCodium or VSCode)
    $extensionsPath = Join-Path $env:USERPROFILE ".vscode-oss\extensions"
    if (-not (Test-Path $extensionsPath)) { $extensionsPath = Join-Path $env:USERPROFILE ".vscode\extensions" }
    
    # Find Python extension
    $pythonExt = Get-ChildItem -Path $extensionsPath -Filter "ms-python.python*" | Sort-Object Name -Descending | Select-Object -First 1
    if (-not $pythonExt) { Write-Error "Python extension not found"; exit }
    
    # Find the target file inside the extension
    $targetFile = Get-ChildItem -Path $pythonExt.FullName -Recurse -Filter "types.py" | Select-String -Pattern "class PositionEncodingKind\(str, enum\.Enum\):" -List | Select-Object -ExpandProperty Path
    
    if ($targetFile) {
        Write-Host "Patching file: $targetFile"
        (Get-Content -Path $targetFile -Raw) -replace 'class PositionEncodingKind\(str, enum\.Enum\):', 'class PositionEncodingKind(enum.Enum):' | Set-Content -Path $targetFile
        Write-Host "Success! Reload Window to apply." -ForegroundColor Green
    } else {
        Write-Warning "Target pattern not found. Already patched or different version."
    }
    Checked on ms-python.python-2026.0.0-universal, works perfectly.
  8. Artoria2e5 commented on Feb 3, 2026

    @Artoria2e5

    I kinda want to @ the cattrs author in here and ask about what the right way to fix this is, but I'm afraid of coming across too rude Well....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

feature-requestRequest for new features or functionality

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions