From 43b720990d9d93a1446d16be630c619e58001087 Mon Sep 17 00:00:00 2001 From: AryanRG Date: Sat, 17 Oct 2026 09:16:26 +0530 Subject: [PATCH] Fix LSP kind for Jedi string completions --- pylsp/plugins/jedi_completion.py | 1 + test/plugins/test_completion.py | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/pylsp/plugins/jedi_completion.py b/pylsp/plugins/jedi_completion.py index 51c3589c..ff4c77bb 100644 --- a/pylsp/plugins/jedi_completion.py +++ b/pylsp/plugins/jedi_completion.py @@ -26,6 +26,7 @@ "keyword": lsp.CompletionItemKind.Keyword, "property": lsp.CompletionItemKind.Property, # added in Jedi 0.18 "statement": lsp.CompletionItemKind.Variable, + "string": lsp.CompletionItemKind.Value, } # Types of parso nodes for which snippet is not included in the completion diff --git a/test/plugins/test_completion.py b/test/plugins/test_completion.py index bbaeabe0..7b467241 100644 --- a/test/plugins/test_completion.py +++ b/test/plugins/test_completion.py @@ -133,6 +133,25 @@ def test_jedi_completion_type(case, config, workspace): assert items[case.label]["kind"] == case.expected +@pytest.mark.parametrize("enum_name", ["Kind", "Foo"]) +def test_jedi_dictionary_key_completion_type(enum_name, config, workspace): + source = ( + "from enum import Enum\n" + f"class {enum_name}(str, Enum):\n" + " something = 'value'\n" + "def foo():\n" + f" a = {{'some_key': {enum_name}.something}}\n" + " a['some" + ) + doc = Document(DOC_URI, workspace, source) + items = pylsp_jedi_completions(config, doc, {"line": 5, "character": 11}) + + assert items + item = next(item for item in items if item["label"].strip("'") == "some_key") + assert item["kind"] == lsp.CompletionItemKind.Value + assert item["insertText"] == item["label"] + + def test_jedi_completion(config, workspace) -> None: # Over 'i' in os.path.isabs(...) com_position = {"line": 1, "character": 15}