Pyright has a configuration option called deprecateTypingAliases that adds a diagnostic whenever collection type hints are used through the typing module instead of collections.abc (i.e. using typing.Sequence should add a diagnostic but collections.abc.Sequence won't).
Another thing to know is that when typeCheckingMode="standard" then the diagnostic has severity level of "Hint", but when typeCheckingMode="strict" the diagnostic is upgraded to severity level "Error"
The Issue itself
Neovim seems to display the diagnostic both in standard mode and in strict mode and properly displays the diagnostic severity. Helix, however, only displays the diagnostic in strict mode when it's promoted to an "Error" severity.
References/Resources
Neovim properly displaying the diagnostic with severity "Hint" in "standard" mode
Neovim properly displaying the diagnostic with severity "Error" in "strict" mode
Helix not displaying the diagnostic with severity "Hint" in "standard" mode
Helix properly displaying the diagnostic with severity "Error" in "strict" mode
The pyright configuration used to replicate this issue (this is placed in the pyproject.toml project file)
Summary
Context about Pyright
Pyright has a configuration option called
deprecateTypingAliases
that adds a diagnostic whenever collection type hints are used through thetyping
module instead ofcollections.abc
(i.e. usingtyping.Sequence
should add a diagnostic butcollections.abc.Sequence
won't).Another thing to know is that when
typeCheckingMode="standard"
then the diagnostic has severity level of "Hint", but whentypeCheckingMode="strict"
the diagnostic is upgraded to severity level "Error"The Issue itself
Neovim seems to display the diagnostic both in standard mode and in strict mode and properly displays the diagnostic severity. Helix, however, only displays the diagnostic in strict mode when it's promoted to an "Error" severity.
References/Resources
Neovim properly displaying the diagnostic with severity "Hint" in "standard" mode
Neovim properly displaying the diagnostic with severity "Error" in "strict" mode
Helix not displaying the diagnostic with severity "Hint" in "standard" mode
Helix properly displaying the diagnostic with severity "Error" in "strict" mode
The pyright configuration used to replicate this issue (this is placed in the
pyproject.toml
project file)languages.toml
file contentsReproduction Steps
I tried this: 1. `hx~/.cache/helix/helix.log
``` 2024-02-29T12:39:43.031 helix_view::clipboard [DEBUG] Using pbcopy+pbpaste to interact with the system clipboard 2024-02-29T12:39:43.054 helix_vcs [INFO] Error { context: "failed to open git repo", source: Discover( NoGitRepository { path: "/private/tmp/example_project/example", }, ), } 2024-02-29T12:39:43.054 helix_vcs [INFO] failed to open diff base for /private/tmp/example_project/example/scratch.py 2024-02-29T12:39:43.054 helix_vcs [INFO] Error { context: "failed to open git repo", source: Discover( NoGitRepository { path: "/private/tmp/example_project/example", }, ), } 2024-02-29T12:39:43.054 helix_vcs [INFO] failed to obtain current head name for /private/tmp/example_project/example/scratch.py 2024-02-29T12:39:43.055 helix_lsp::client [INFO] Using custom LSP config: {} 2024-02-29T12:39:43.055 helix_lsp::transport [INFO] pyright -> {"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"general":{"positionEncodings":["utf-8","utf-32","utf-16"]},"textDocument":{"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"disabledSupport":true,"isPreferredSupport":true,"resolveSupport":{"properties":["edit","command"]}},"completion":{"completionItem":{"deprecatedSupport":true,"insertReplaceSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{}},"hover":{"contentFormat":["markdown"]},"inlayHint":{"dynamicRegistration":false},"publishDiagnostics":{"versionSupport":true},"rename":{"dynamicRegistration":false,"honorsChangeAnnotations":false,"prepareSupport":true},"signatureHelp":{"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown"],"parameterInformation":{"labelOffsetSupport":true}}}},"window":{"workDoneProgress":true},"workspace":{"applyEdit":true,"configuration":true,"didChangeConfiguration":{"dynamicRegistration":false},"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":false},"executeCommand":{"dynamicRegistration":false},"inlayHint":{"refreshSupport":false},"symbol":{"dynamicRegistration":false},"workspaceEdit":{"documentChanges":true,"failureHandling":"abort","normalizesLineEndings":false,"resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"helix","version":"23.10 (f6021dd0)"},"initializationOptions":{},"processId":50900,"rootPath":"/private/tmp/example_project","rootUri":"file:///private/tmp/example_project","workspaceFolders":[{"name":"example_project","uri":"file:///private/tmp/example_project"}]},"id":0} 2024-02-29T12:39:43.055 helix_view::editor [DEBUG] editor status: Loaded 1 file. 2024-02-29T12:39:43.055 helix_lsp::transport [INFO] ruff-lsp -> {"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"general":{"positionEncodings":["utf-8","utf-32","utf-16"]},"textDocument":{"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"disabledSupport":true,"isPreferredSupport":true,"resolveSupport":{"properties":["edit","command"]}},"completion":{"completionItem":{"deprecatedSupport":true,"insertReplaceSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{}},"hover":{"contentFormat":["markdown"]},"inlayHint":{"dynamicRegistration":false},"publishDiagnostics":{"versionSupport":true},"rename":{"dynamicRegistration":false,"honorsChangeAnnotations":false,"prepareSupport":true},"signatureHelp":{"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown"],"parameterInformation":{"labelOffsetSupport":true}}}},"window":{"workDoneProgress":true},"workspace":{"applyEdit":true,"configuration":true,"didChangeConfiguration":{"dynamicRegistration":false},"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":false},"executeCommand":{"dynamicRegistration":false},"inlayHint":{"refreshSupport":false},"symbol":{"dynamicRegistration":false},"workspaceEdit":{"documentChanges":true,"failureHandling":"abort","normalizesLineEndings":false,"resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"helix","version":"23.10 (f6021dd0)"},"processId":50900,"rootPath":"/private/tmp/example_project","rootUri":"file:///private/tmp/example_project","workspaceFolders":[{"name":"example_project","uri":"file:///private/tmp/example_project"}]},"id":0} 2024-02-29T12:39:43.056 helix_tui::backend::crossterm [DEBUG] The keyboard enhancement protocol is supported in this terminal (checked in 1.093625ms) 2024-02-29T12:39:43.056 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:43.056 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:43.082 helix_term::application [DEBUG] received editor event: IdleTimer 2024-02-29T12:39:43.164 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":3,"message":"Pyright language server 1.1.350 starting"}} 2024-02-29T12:39:43.164 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":3,"message":"Server root directory: file:///nix/store/y13c4vq9ff81hv7wac27j0vgcm1j0hms-pyright-1.1.350/lib/node_modules/pyright/dist"}} 2024-02-29T12:39:43.164 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Pyright language server 1.1.350 starting"), "type": Number(3)}) }))) 2024-02-29T12:39:43.164 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Info, message: "Pyright language server 1.1.350 starting" } 2024-02-29T12:39:43.164 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Server root directory: file:///nix/store/y13c4vq9ff81hv7wac27j0vgcm1j0hms-pyright-1.1.350/lib/node_modules/pyright/dist"), "type": Number(3)}) }))) 2024-02-29T12:39:43.164 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Info, message: "Server root directory: file:///nix/store/y13c4vq9ff81hv7wac27j0vgcm1j0hms-pyright-1.1.350/lib/node_modules/pyright/dist" } 2024-02-29T12:39:43.166 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":3,"message":"Starting service instance \"example_project\""}} 2024-02-29T12:39:43.166 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Starting service instance \"example_project\""), "type": Number(3)}) }))) 2024-02-29T12:39:43.166 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Info, message: "Starting service instance \"example_project\"" } 2024-02-29T12:39:43.166 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","id":0,"result":{"capabilities":{"textDocumentSync":2,"definitionProvider":{"workDoneProgress":true},"declarationProvider":{"workDoneProgress":true},"typeDefinitionProvider":{"workDoneProgress":true},"referencesProvider":{"workDoneProgress":true},"documentSymbolProvider":{"workDoneProgress":true},"workspaceSymbolProvider":{"workDoneProgress":true},"hoverProvider":{"workDoneProgress":true},"documentHighlightProvider":{"workDoneProgress":true},"renameProvider":{"prepareProvider":true,"workDoneProgress":true},"completionProvider":{"triggerCharacters":[".","[","\"","'"],"resolveProvider":true,"workDoneProgress":true,"completionItem":{"labelDetailsSupport":true}},"signatureHelpProvider":{"triggerCharacters":["(",",",")"],"workDoneProgress":true},"codeActionProvider":{"codeActionKinds":["quickfix","source.organizeImports"],"workDoneProgress":true},"executeCommandProvider":{"commands":[],"workDoneProgress":true},"callHierarchyProvider":true,"workspace":{"workspaceFolders":{"supported":true,"changeNotifications":true}}}}} 2024-02-29T12:39:43.166 helix_lsp::transport [INFO] pyright <- {"capabilities":{"callHierarchyProvider":true,"codeActionProvider":{"codeActionKinds":["quickfix","source.organizeImports"],"workDoneProgress":true},"completionProvider":{"completionItem":{"labelDetailsSupport":true},"resolveProvider":true,"triggerCharacters":[".","[","\"","'"],"workDoneProgress":true},"declarationProvider":{"workDoneProgress":true},"definitionProvider":{"workDoneProgress":true},"documentHighlightProvider":{"workDoneProgress":true},"documentSymbolProvider":{"workDoneProgress":true},"executeCommandProvider":{"commands":[],"workDoneProgress":true},"hoverProvider":{"workDoneProgress":true},"referencesProvider":{"workDoneProgress":true},"renameProvider":{"prepareProvider":true,"workDoneProgress":true},"signatureHelpProvider":{"triggerCharacters":["(",",",")"],"workDoneProgress":true},"textDocumentSync":2,"typeDefinitionProvider":{"workDoneProgress":true},"workspace":{"workspaceFolders":{"changeNotifications":true,"supported":true}},"workspaceSymbolProvider":{"workDoneProgress":true}}} 2024-02-29T12:39:43.167 helix_lsp::transport [INFO] pyright -> {"jsonrpc":"2.0","method":"initialized","params":{}} 2024-02-29T12:39:43.167 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: None, method: "initialized", params: None }))) 2024-02-29T12:39:43.167 helix_lsp::transport [INFO] pyright -> {"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{}}} 2024-02-29T12:39:43.167 helix_lsp::transport [INFO] pyright -> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"python","text":"import typing as t\nfrom collections import abc\n\nt.Sequence\nabc.Sequence\n","uri":"file:///private/tmp/example_project/example/scratch.py","version":0}}} 2024-02-29T12:39:43.167 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","id":0,"method":"client/registerCapability","params":{"registrations":[{"id":"6613a416-0e6c-4e3f-9646-60e3096aea4b","method":"workspace/didChangeWatchedFiles","registerOptions":{"watchers":[{"globPattern":"**/pyrightconfig.json","kind":7},{"globPattern":"**","kind":7}]}}]}} 2024-02-29T12:39:43.167 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, MethodCall(MethodCall { jsonrpc: Some(V2), method: "client/registerCapability", params: Map({"registrations": Array [Object {"id": String("6613a416-0e6c-4e3f-9646-60e3096aea4b"), "method": String("workspace/didChangeWatchedFiles"), "registerOptions": Object {"watchers": Array [Object {"globPattern": String("**/pyrightconfig.json"), "kind": Number(7)}, Object {"globPattern": String("**"), "kind": Number(7)}]}}]}), id: Num(0) }))) 2024-02-29T12:39:43.167 helix_lsp::file_event [DEBUG] Registering didChangeWatchedFiles for client '0' with id '6613a416-0e6c-4e3f-9646-60e3096aea4b' 2024-02-29T12:39:43.167 helix_lsp::transport [INFO] pyright -> {"jsonrpc":"2.0","result":null,"id":0} 2024-02-29T12:39:43.167 globset [DEBUG] glob converted to regex: Glob { glob: "**", re: "(?-u)^.*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([RecursivePrefix]) } 2024-02-29T12:39:43.167 globset [DEBUG] built glob set; 0 literals, 1 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes 2024-02-29T12:39:43.168 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","id":1,"method":"workspace/configuration","params":{"items":[{"scopeUri":"file:///private/tmp/example_project","section":"python"}]}} 2024-02-29T12:39:43.168 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, MethodCall(MethodCall { jsonrpc: Some(V2), method: "workspace/configuration", params: Map({"items": Array [Object {"scopeUri": String("file:///private/tmp/example_project"), "section": String("python")}]}), id: Num(1) }))) 2024-02-29T12:39:43.168 helix_lsp::transport [INFO] pyright -> {"jsonrpc":"2.0","result":[null],"id":1} 2024-02-29T12:39:43.168 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","id":2,"method":"workspace/configuration","params":{"items":[{"scopeUri":"file:///private/tmp/example_project","section":"python.analysis"}]}} 2024-02-29T12:39:43.168 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, MethodCall(MethodCall { jsonrpc: Some(V2), method: "workspace/configuration", params: Map({"items": Array [Object {"scopeUri": String("file:///private/tmp/example_project"), "section": String("python.analysis")}]}), id: Num(2) }))) 2024-02-29T12:39:43.168 helix_lsp::transport [INFO] pyright -> {"jsonrpc":"2.0","result":[null],"id":2} 2024-02-29T12:39:43.168 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","id":3,"method":"workspace/configuration","params":{"items":[{"scopeUri":"file:///private/tmp/example_project","section":"pyright"}]}} 2024-02-29T12:39:43.168 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, MethodCall(MethodCall { jsonrpc: Some(V2), method: "workspace/configuration", params: Map({"items": Array [Object {"scopeUri": String("file:///private/tmp/example_project"), "section": String("pyright")}]}), id: Num(3) }))) 2024-02-29T12:39:43.168 helix_lsp::transport [INFO] pyright -> {"jsonrpc":"2.0","result":[null],"id":3} 2024-02-29T12:39:43.198 helix_term::application [DEBUG] received editor event: Redraw 2024-02-29T12:39:43.198 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:43.198 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:43.241 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":3,"message":"Loading pyproject.toml file at /private/tmp/example_project/pyproject.toml"}} 2024-02-29T12:39:43.241 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Loading pyproject.toml file at /private/tmp/example_project/pyproject.toml"), "type": Number(3)}) }))) 2024-02-29T12:39:43.241 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Info, message: "Loading pyproject.toml file at /private/tmp/example_project/pyproject.toml" } 2024-02-29T12:39:43.241 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":3,"message":"Assuming Python version 3.11"}} 2024-02-29T12:39:43.241 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Assuming Python version 3.11"), "type": Number(3)}) }))) 2024-02-29T12:39:43.241 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Info, message: "Assuming Python version 3.11" } 2024-02-29T12:39:43.241 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":2,"message":"The useLibraryCodeForTypes has been specified in both the config file and the client settings. The value in the config file (true) will take precedence"}} 2024-02-29T12:39:43.241 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":3,"message":"Found 2 source files"}} 2024-02-29T12:39:43.241 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("The useLibraryCodeForTypes has been specified in both the config file and the client settings. The value in the config file (true) will take precedence"), "type": Number(2)}) }))) 2024-02-29T12:39:43.241 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Warning, message: "The useLibraryCodeForTypes has been specified in both the config file and the client settings. The value in the config file (true) will take precedence" } 2024-02-29T12:39:43.241 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","id":4,"method":"client/registerCapability","params":{"registrations":[{"id":"fb4fa114-b64d-4520-9b58-a7ab67d69335","method":"workspace/didChangeWatchedFiles","registerOptions":{"watchers":[{"globPattern":"**/pyrightconfig.json","kind":7},{"globPattern":"**","kind":7}]}}]}} 2024-02-29T12:39:43.241 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Found 2 source files"), "type": Number(3)}) }))) 2024-02-29T12:39:43.241 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Info, message: "Found 2 source files" } 2024-02-29T12:39:43.241 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, MethodCall(MethodCall { jsonrpc: Some(V2), method: "client/registerCapability", params: Map({"registrations": Array [Object {"id": String("fb4fa114-b64d-4520-9b58-a7ab67d69335"), "method": String("workspace/didChangeWatchedFiles"), "registerOptions": Object {"watchers": Array [Object {"globPattern": String("**/pyrightconfig.json"), "kind": Number(7)}, Object {"globPattern": String("**"), "kind": Number(7)}]}}]}), id: Num(4) }))) 2024-02-29T12:39:43.241 helix_lsp::file_event [DEBUG] Registering didChangeWatchedFiles for client '0' with id 'fb4fa114-b64d-4520-9b58-a7ab67d69335' 2024-02-29T12:39:43.241 helix_lsp::transport [INFO] pyright -> {"jsonrpc":"2.0","result":null,"id":4} 2024-02-29T12:39:43.241 globset [DEBUG] glob converted to regex: Glob { glob: "**", re: "(?-u)^.*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([RecursivePrefix]) } 2024-02-29T12:39:43.241 globset [DEBUG] built glob set; 0 literals, 1 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes 2024-02-29T12:39:43.241 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","id":5,"method":"client/unregisterCapability","params":{"unregisterations":[{"id":"6613a416-0e6c-4e3f-9646-60e3096aea4b","method":"workspace/didChangeWatchedFiles"}]}} 2024-02-29T12:39:43.241 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, MethodCall(MethodCall { jsonrpc: Some(V2), method: "client/unregisterCapability", params: Map({"unregisterations": Array [Object {"id": String("6613a416-0e6c-4e3f-9646-60e3096aea4b"), "method": String("workspace/didChangeWatchedFiles")}]}), id: Num(5) }))) 2024-02-29T12:39:43.241 helix_lsp::file_event [DEBUG] Unregistering didChangeWatchedFiles with id '6613a416-0e6c-4e3f-9646-60e3096aea4b' for client '0' 2024-02-29T12:39:43.241 helix_lsp::transport [INFO] pyright -> {"jsonrpc":"2.0","result":null,"id":5} 2024-02-29T12:39:43.275 helix_term::application [DEBUG] received editor event: Redraw 2024-02-29T12:39:43.275 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:43.275 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:43.318 helix_lsp::transport [INFO] ruff-lsp <- {"params": {"type": 4, "message": "Workspace settings: null"}, "method": "window/logMessage", "jsonrpc": "2.0"} 2024-02-29T12:39:43.318 helix_lsp::transport [INFO] ruff-lsp <- {"params": {"type": 4, "message": "Global settings: {}"}, "method": "window/logMessage", "jsonrpc": "2.0"} 2024-02-29T12:39:43.319 helix_term::application [DEBUG] received editor event: LanguageServerMessage((1, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Workspace settings: null"), "type": Number(4)}) }))) 2024-02-29T12:39:43.319 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "Workspace settings: null" } 2024-02-29T12:39:43.319 helix_term::application [DEBUG] received editor event: LanguageServerMessage((1, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Global settings: {}"), "type": Number(4)}) }))) 2024-02-29T12:39:43.319 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "Global settings: {}" } 2024-02-29T12:39:43.321 helix_lsp::transport [INFO] ruff-lsp <- {"id": 0, "jsonrpc": "2.0", "result": {"capabilities": {"positionEncoding": "utf-16", "textDocumentSync": {"openClose": true, "change": 2, "save": true}, "hoverProvider": true, "codeActionProvider": {"codeActionKinds": ["quickfix", "source.fixAll", "source.organizeImports", "source.fixAll.ruff", "source.organizeImports.ruff", "notebook.source.fixAll", "notebook.source.organizeImports", "notebook.source.fixAll.ruff", "notebook.source.organizeImports.ruff"], "resolveProvider": true}, "documentFormattingProvider": true, "documentRangeFormattingProvider": {"documentSelector": [{"language": "python", "scheme": "file"}, {"language": "python", "scheme": "untitled"}], "rangesSupport": false, "workDoneProgress": false}, "executeCommandProvider": {"commands": ["ruff.applyAutofix", "ruff.applyOrganizeImports", "ruff.applyFormat"]}, "workspace": {"workspaceFolders": {"supported": true, "changeNotifications": true}, "fileOperations": {}}}, "serverInfo": {"name": "Ruff", "version": "0.0.52"}}} 2024-02-29T12:39:43.321 helix_lsp::transport [INFO] ruff-lsp <- {"capabilities":{"codeActionProvider":{"codeActionKinds":["quickfix","source.fixAll","source.organizeImports","source.fixAll.ruff","source.organizeImports.ruff","notebook.source.fixAll","notebook.source.organizeImports","notebook.source.fixAll.ruff","notebook.source.organizeImports.ruff"],"resolveProvider":true},"documentFormattingProvider":true,"documentRangeFormattingProvider":{"documentSelector":[{"language":"python","scheme":"file"},{"language":"python","scheme":"untitled"}],"rangesSupport":false,"workDoneProgress":false},"executeCommandProvider":{"commands":["ruff.applyAutofix","ruff.applyOrganizeImports","ruff.applyFormat"]},"hoverProvider":true,"positionEncoding":"utf-16","textDocumentSync":{"change":2,"openClose":true,"save":true},"workspace":{"fileOperations":{},"workspaceFolders":{"changeNotifications":true,"supported":true}}},"serverInfo":{"name":"Ruff","version":"0.0.52"}} 2024-02-29T12:39:43.321 helix_lsp::transport [INFO] ruff-lsp -> {"jsonrpc":"2.0","method":"initialized","params":{}} 2024-02-29T12:39:43.321 helix_term::application [DEBUG] received editor event: LanguageServerMessage((1, Notification(Notification { jsonrpc: None, method: "initialized", params: None }))) 2024-02-29T12:39:43.321 helix_lsp::transport [INFO] ruff-lsp -> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"python","text":"import typing as t\nfrom collections import abc\n\nt.Sequence\nabc.Sequence\n","uri":"file:///private/tmp/example_project/example/scratch.py","version":0}}} 2024-02-29T12:39:43.323 helix_lsp::transport [INFO] ruff-lsp <- {"params": {"type": 4, "message": "Interpreter executable (/nix/store/rk6bdnzy2y4s8r0xx328xcc85ny238bq-python3-3.11.8/bin/ruff) not found"}, "method": "window/logMessage", "jsonrpc": "2.0"} 2024-02-29T12:39:43.323 helix_term::application [DEBUG] received editor event: LanguageServerMessage((1, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Interpreter executable (/nix/store/rk6bdnzy2y4s8r0xx328xcc85ny238bq-python3-3.11.8/bin/ruff) not found"), "type": Number(4)}) }))) 2024-02-29T12:39:43.323 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "Interpreter executable (/nix/store/rk6bdnzy2y4s8r0xx328xcc85ny238bq-python3-3.11.8/bin/ruff) not found" } 2024-02-29T12:39:43.323 helix_lsp::transport [INFO] ruff-lsp <- {"params": {"type": 4, "message": "Using environment executable: /nix/store/4d4b2vmzqnsbf1ji3x1yhn07hwskcaf7-ruff-0.2.2/bin/ruff"}, "method": "window/logMessage", "jsonrpc": "2.0"} 2024-02-29T12:39:43.323 helix_term::application [DEBUG] received editor event: LanguageServerMessage((1, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Using environment executable: /nix/store/4d4b2vmzqnsbf1ji3x1yhn07hwskcaf7-ruff-0.2.2/bin/ruff"), "type": Number(4)}) }))) 2024-02-29T12:39:43.323 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "Using environment executable: /nix/store/4d4b2vmzqnsbf1ji3x1yhn07hwskcaf7-ruff-0.2.2/bin/ruff" } 2024-02-29T12:39:43.331 helix_lsp::transport [INFO] ruff-lsp <- {"params": {"type": 4, "message": "Inferred version 0.2.2 for: /nix/store/4d4b2vmzqnsbf1ji3x1yhn07hwskcaf7-ruff-0.2.2/bin/ruff"}, "method": "window/logMessage", "jsonrpc": "2.0"} 2024-02-29T12:39:43.331 helix_term::application [DEBUG] received editor event: LanguageServerMessage((1, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Inferred version 0.2.2 for: /nix/store/4d4b2vmzqnsbf1ji3x1yhn07hwskcaf7-ruff-0.2.2/bin/ruff"), "type": Number(4)}) }))) 2024-02-29T12:39:43.331 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "Inferred version 0.2.2 for: /nix/store/4d4b2vmzqnsbf1ji3x1yhn07hwskcaf7-ruff-0.2.2/bin/ruff" } 2024-02-29T12:39:43.331 helix_lsp::transport [INFO] ruff-lsp <- {"params": {"type": 4, "message": "Found ruff 0.2.2 at /nix/store/4d4b2vmzqnsbf1ji3x1yhn07hwskcaf7-ruff-0.2.2/bin/ruff"}, "method": "window/logMessage", "jsonrpc": "2.0"} 2024-02-29T12:39:43.331 helix_term::application [DEBUG] received editor event: LanguageServerMessage((1, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Found ruff 0.2.2 at /nix/store/4d4b2vmzqnsbf1ji3x1yhn07hwskcaf7-ruff-0.2.2/bin/ruff"), "type": Number(4)}) }))) 2024-02-29T12:39:43.331 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "Found ruff 0.2.2 at /nix/store/4d4b2vmzqnsbf1ji3x1yhn07hwskcaf7-ruff-0.2.2/bin/ruff" } 2024-02-29T12:39:43.331 helix_lsp::transport [INFO] ruff-lsp <- {"params": {"type": 4, "message": "Running Ruff with: /nix/store/4d4b2vmzqnsbf1ji3x1yhn07hwskcaf7-ruff-0.2.2/bin/ruff ['--force-exclude', '--no-cache', '--no-fix', '--quiet', '--output-format', 'json', '-', '--stdin-filename', '/private/tmp/example_project/example/scratch.py']"}, "method": "window/logMessage", "jsonrpc": "2.0"} 2024-02-29T12:39:43.331 helix_term::application [DEBUG] received editor event: LanguageServerMessage((1, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Running Ruff with: /nix/store/4d4b2vmzqnsbf1ji3x1yhn07hwskcaf7-ruff-0.2.2/bin/ruff ['--force-exclude', '--no-cache', '--no-fix', '--quiet', '--output-format', 'json', '-', '--stdin-filename', '/private/tmp/example_project/example/scratch.py']"), "type": Number(4)}) }))) 2024-02-29T12:39:43.331 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Log, message: "Running Ruff with: /nix/store/4d4b2vmzqnsbf1ji3x1yhn07hwskcaf7-ruff-0.2.2/bin/ruff ['--force-exclude', '--no-cache', '--no-fix', '--quiet', '--output-format', 'json', '-', '--stdin-filename', '/private/tmp/example_project/example/scratch.py']" } 2024-02-29T12:39:43.341 helix_lsp::transport [INFO] ruff-lsp <- {"params": {"uri": "file:///private/tmp/example_project/example/scratch.py", "diagnostics": []}, "method": "textDocument/publishDiagnostics", "jsonrpc": "2.0"} 2024-02-29T12:39:43.341 helix_term::application [DEBUG] received editor event: LanguageServerMessage((1, Notification(Notification { jsonrpc: Some(V2), method: "textDocument/publishDiagnostics", params: Map({"diagnostics": Array [], "uri": String("file:///private/tmp/example_project/example/scratch.py")}) }))) 2024-02-29T12:39:43.353 helix_term::application [DEBUG] received editor event: Redraw 2024-02-29T12:39:43.353 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:43.353 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:43.555 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///private/tmp/example_project/example/scratch.py","version":0,"diagnostics":[]}} 2024-02-29T12:39:43.555 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: Some(V2), method: "textDocument/publishDiagnostics", params: Map({"diagnostics": Array [], "uri": String("file:///private/tmp/example_project/example/scratch.py"), "version": Number(0)}) }))) 2024-02-29T12:39:43.590 helix_term::application [DEBUG] received editor event: Redraw 2024-02-29T12:39:43.590 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:43.590 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:46.765 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:46.765 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:46.817 helix_term::application [DEBUG] received editor event: IdleTimer 2024-02-29T12:39:46.870 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:46.871 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:46.921 helix_term::application [DEBUG] received editor event: IdleTimer 2024-02-29T12:39:47.062 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:47.063 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:47.113 helix_term::application [DEBUG] received editor event: IdleTimer 2024-02-29T12:39:47.214 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:47.215 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:47.266 helix_term::application [DEBUG] received editor event: IdleTimer 2024-02-29T12:39:48.410 helix_term::commands::typed [DEBUG] quitting... 2024-02-29T12:39:48.410 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-02-29T12:39:48.410 helix_term::job [DEBUG] waiting on jobs... 2024-02-29T12:39:48.411 helix_term::job [DEBUG] waiting on jobs... 2024-02-29T12:39:48.411 helix_lsp::file_event [DEBUG] Removing LSP client: 0 2024-02-29T12:39:48.411 helix_lsp::transport [INFO] pyright -> {"jsonrpc":"2.0","method":"shutdown","id":1} 2024-02-29T12:39:48.411 helix_lsp::transport [INFO] ruff-lsp -> {"jsonrpc":"2.0","method":"shutdown","id":1} 2024-02-29T12:39:48.411 helix_lsp::file_event [DEBUG] Removing LSP client: 1 2024-02-29T12:39:48.413 helix_lsp::transport [INFO] pyright <- {"jsonrpc":"2.0","id":1,"result":null} 2024-02-29T12:39:48.414 helix_lsp::transport [INFO] pyright <- null 2024-02-29T12:39:48.414 helix_lsp::transport [INFO] pyright -> {"jsonrpc":"2.0","method":"exit"} 2024-02-29T12:39:48.414 helix_lsp::transport [INFO] ruff-lsp <- {"id": 1, "jsonrpc": "2.0", "result": null} 2024-02-29T12:39:48.414 helix_lsp::transport [INFO] ruff-lsp <- null 2024-02-29T12:39:48.414 helix_lsp::transport [INFO] ruff-lsp -> {"jsonrpc":"2.0","method":"exit"} ```