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

1from typing import ( 

2 Optional, 

3 Union, 

4 Sequence, 

5 TYPE_CHECKING, 

6) 

7 

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) 

24 

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 

33 

34if TYPE_CHECKING: 

35 import lsprotocol.types as types 

36else: 

37 import debputy.lsprotocol.types as types 

38 

39 

40_DISPATCH_RULE = LanguageDispatchRule.new_rule( 

41 "debputy-config.yaml", 

42 "debputy-config.yaml", 

43 [], 

44 [SecondaryLanguage("yaml", secondary_lookup="basename")], 

45) 

46 

47 

48lsp_standard_handler(_DISPATCH_RULE, types.TEXT_DOCUMENT_CODE_ACTION) 

49lsp_standard_handler(_DISPATCH_RULE, types.TEXT_DOCUMENT_WILL_SAVE_WAIT_UNTIL) 

50 

51 

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 ) 

58 

59 

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 ) 

67 

68 

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 ) 

79 

80 

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)