Coverage for src/debputy/lsp/languages/lsp_debputy_config.py: 76%
25 statements
« prev ^ index » next coverage.py v7.8.2, created at 2025-09-07 09:27 +0000
« prev ^ index » next coverage.py v7.8.2, created at 2025-09-07 09:27 +0000
1from typing import (
2 Optional,
3 Union,
4 Sequence,
5 TYPE_CHECKING,
6)
8from debputy.linting.lint_util import LintState
9from debputy.lsp.config.parser import DEBPUTY_CONFIG_PARSER
10from debputy.lsp.lsp_features import (
11 lint_diagnostics,
12 lsp_standard_handler,
13 lsp_hover,
14 lsp_completer,
15 LanguageDispatchRule,
16 SecondaryLanguage,
17)
18from debputy.lsp.lsp_generic_yaml import (
19 generic_yaml_hover,
20 LSPYAMLHelper,
21 generic_yaml_lint,
22 generic_yaml_completer,
23)
25try:
26 from debputy.lsp.debputy_ls import DebputyLanguageServer
27 from debputy.lsp.vendoring._deb822_repro.locatable import (
28 Position as TEPosition,
29 Range as TERange,
30 )
31except ImportError:
32 pass
34if TYPE_CHECKING:
35 import lsprotocol.types as types
36else:
37 import debputy.lsprotocol.types as types
40_DISPATCH_RULE = LanguageDispatchRule.new_rule(
41 "debputy-config.yaml",
42 "debputy-config.yaml",
43 [],
44 [SecondaryLanguage("yaml", secondary_lookup="basename")],
45)
48lsp_standard_handler(_DISPATCH_RULE, types.TEXT_DOCUMENT_CODE_ACTION)
49lsp_standard_handler(_DISPATCH_RULE, types.TEXT_DOCUMENT_WILL_SAVE_WAIT_UNTIL)
52def _initialize_yaml_helper(lint_state: LintState) -> LSPYAMLHelper[None]:
53 return LSPYAMLHelper(
54 lint_state,
55 lint_state.plugin_feature_set.manifest_parser_generator,
56 None,
57 )
60@lint_diagnostics(_DISPATCH_RULE)
61async def lint_debputy_config(lint_state: LintState) -> None:
62 await generic_yaml_lint(
63 lint_state,
64 DEBPUTY_CONFIG_PARSER,
65 _initialize_yaml_helper,
66 )
69@lsp_completer(_DISPATCH_RULE)
70def deboputy_config_completer(
71 ls: "DebputyLanguageServer",
72 params: types.CompletionParams,
73) -> Optional[Union[types.CompletionList, Sequence[types.CompletionItem]]]:
74 return generic_yaml_completer(
75 ls,
76 params,
77 DEBPUTY_CONFIG_PARSER,
78 )
81@lsp_hover(_DISPATCH_RULE)
82def debputy_config_hover(
83 ls: "DebputyLanguageServer",
84 params: types.HoverParams,
85) -> Optional[types.Hover]:
86 return generic_yaml_hover(ls, params, lambda _: DEBPUTY_CONFIG_PARSER)