robotcode-language-server 1.3.0.dev5__tar.gz → 1.3.0.dev6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/PKG-INFO +5 -5
  2. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/pyproject.toml +4 -4
  3. robotcode_language_server-1.3.0.dev6/src/robotcode/language_server/__version__.py +1 -0
  4. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/formatting.py +3 -1
  5. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/robocop_diagnostics.py +94 -14
  6. robotcode_language_server-1.3.0.dev5/src/robotcode/language_server/__version__.py +0 -1
  7. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/.gitignore +0 -0
  8. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/LICENSE.txt +0 -0
  9. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/README.md +0 -0
  10. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/__init__.py +0 -0
  11. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/cli.py +0 -0
  12. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/__init__.py +0 -0
  13. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/decorators.py +0 -0
  14. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/__init__.py +0 -0
  15. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/code_action.py +0 -0
  16. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/code_lens.py +0 -0
  17. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/commands.py +0 -0
  18. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/completion.py +0 -0
  19. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/declaration.py +0 -0
  20. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/definition.py +0 -0
  21. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/diagnostics.py +0 -0
  22. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/document_highlight.py +0 -0
  23. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/document_symbols.py +0 -0
  24. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/documents.py +0 -0
  25. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/folding_range.py +0 -0
  26. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/formatting.py +0 -0
  27. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/hover.py +0 -0
  28. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/implementation.py +0 -0
  29. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/inlay_hint.py +0 -0
  30. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/inline_value.py +0 -0
  31. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/linked_editing_ranges.py +0 -0
  32. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/protocol_part.py +0 -0
  33. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/references.py +0 -0
  34. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/rename.py +0 -0
  35. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/selection_range.py +0 -0
  36. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/semantic_tokens.py +0 -0
  37. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/signature_help.py +0 -0
  38. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/window.py +0 -0
  39. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/workspace.py +0 -0
  40. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/parts/workspace_symbols.py +0 -0
  41. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/protocol.py +0 -0
  42. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/common/server.py +0 -0
  43. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/hooks.py +0 -0
  44. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/py.typed +0 -0
  45. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/__init__.py +0 -0
  46. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/configuration.py +0 -0
  47. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/__init__.py +0 -0
  48. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/code_action_documentation.py +0 -0
  49. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/code_action_helper_mixin.py +0 -0
  50. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/code_action_quick_fixes.py +0 -0
  51. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/code_action_refactor.py +0 -0
  52. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/code_lens.py +0 -0
  53. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/completion.py +0 -0
  54. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/debugging_utils.py +0 -0
  55. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/diagnostics.py +0 -0
  56. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/document_highlight.py +0 -0
  57. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/document_symbols.py +0 -0
  58. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/documents_cache.py +0 -0
  59. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/folding_range.py +0 -0
  60. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/goto.py +0 -0
  61. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/hover.py +0 -0
  62. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/http_server.py +0 -0
  63. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/inlay_hint.py +0 -0
  64. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/inline_value.py +0 -0
  65. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/keywords_treeview.py +0 -0
  66. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/project_info.py +0 -0
  67. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/protocol_part.py +0 -0
  68. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/references.py +0 -0
  69. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/rename.py +0 -0
  70. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/robocop_tidy_mixin.py +0 -0
  71. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/robot_workspace.py +0 -0
  72. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/selection_range.py +0 -0
  73. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/semantic_tokens.py +0 -0
  74. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/signature_help.py +0 -0
  75. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/parts/workspace_symbols.py +0 -0
  76. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/protocol.py +0 -0
  77. {robotcode_language_server-1.3.0.dev5 → robotcode_language_server-1.3.0.dev6}/src/robotcode/language_server/robotframework/server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: robotcode-language-server
3
- Version: 1.3.0.dev5
3
+ Version: 1.3.0.dev6
4
4
  Summary: RobotCode Language Server for Robot Framework
5
5
  Project-URL: Homepage, https://robotcode.io
6
6
  Project-URL: Donate, https://opencollective.com/robotcode
@@ -25,10 +25,10 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
25
25
  Classifier: Topic :: Utilities
26
26
  Classifier: Typing :: Typed
27
27
  Requires-Python: >=3.8
28
- Requires-Dist: robotcode-analyze==1.3.0-dev.5
29
- Requires-Dist: robotcode-jsonrpc2==1.3.0-dev.5
30
- Requires-Dist: robotcode-robot==1.3.0-dev.5
31
- Requires-Dist: robotcode==1.3.0-dev.5
28
+ Requires-Dist: robotcode-analyze==1.3.0-dev.6
29
+ Requires-Dist: robotcode-jsonrpc2==1.3.0-dev.6
30
+ Requires-Dist: robotcode-robot==1.3.0-dev.6
31
+ Requires-Dist: robotcode==1.3.0-dev.6
32
32
  Requires-Dist: robotframework>=4.1.0
33
33
  Description-Content-Type: text/markdown
34
34
 
@@ -27,10 +27,10 @@ classifiers = [
27
27
  ]
28
28
  dependencies = [
29
29
  "robotframework>=4.1.0",
30
- "robotcode-jsonrpc2==1.3.0-dev.5",
31
- "robotcode-robot==1.3.0-dev.5",
32
- "robotcode-analyze==1.3.0-dev.5",
33
- "robotcode==1.3.0-dev.5",
30
+ "robotcode-jsonrpc2==1.3.0-dev.6",
31
+ "robotcode-robot==1.3.0-dev.6",
32
+ "robotcode-analyze==1.3.0-dev.6",
33
+ "robotcode==1.3.0-dev.6",
34
34
  ]
35
35
  dynamic = ["version"]
36
36
 
@@ -0,0 +1 @@
1
+ __version__ = "1.3.0-dev.6"
@@ -64,7 +64,7 @@ class RobotFormattingProtocolPart(RobotLanguageServerProtocolPart, RoboCopTidyMi
64
64
  options: FormattingOptions,
65
65
  **further_options: Any,
66
66
  ) -> Optional[List[TextEdit]]:
67
- if (get_robot_version() >= (5, 0)) and self.robocop_installed and self.robocop_version >= (6, 0):
67
+ if self.robocop_installed and self.robocop_version >= (6, 0):
68
68
  if not self.is_robocop_notification_shown and self.robotidy_installed:
69
69
  self.parent.window.show_message(
70
70
  "`robotframework-robocop >= 6.0` is installed and will be used for formatting.\n\n"
@@ -201,9 +201,11 @@ class RobotFormattingProtocolPart(RobotLanguageServerProtocolPart, RoboCopTidyMi
201
201
  from robocop.formatter.runner import RobocopFormatter
202
202
 
203
203
  robocop_config = self.get_robocop_config(document)
204
+ workspace_folder = self.parent.workspace.get_workspace_folder(document.uri)
204
205
 
205
206
  config_manager = ConfigManager(
206
207
  [document.uri.to_path()],
208
+ root=workspace_folder.uri.to_path() if workspace_folder else None,
207
209
  config=robocop_config.config_file,
208
210
  ignore_git_dir=robocop_config.ignore_git_dir,
209
211
  ignore_file_config=robocop_config.ignore_file_config,
@@ -1,5 +1,6 @@
1
1
  import io
2
2
  from typing import TYPE_CHECKING, Any, List, Optional
3
+ from weakref import WeakKeyDictionary
3
4
 
4
5
  from robotcode.core.language import language_id
5
6
  from robotcode.core.lsp.types import (
@@ -20,6 +21,8 @@ from .protocol_part import RobotLanguageServerProtocolPart
20
21
  from .robocop_tidy_mixin import RoboCopTidyMixin
21
22
 
22
23
  if TYPE_CHECKING:
24
+ from robocop.linter.runner import RobocopLinter
25
+
23
26
  from ..protocol import RobotLanguageServerProtocol
24
27
 
25
28
 
@@ -30,8 +33,9 @@ class RobotRoboCopDiagnosticsProtocolPart(RobotLanguageServerProtocolPart, RoboC
30
33
  super().__init__(parent)
31
34
 
32
35
  self.source_name = "robocop"
36
+ self._robocop_linters: WeakKeyDictionary[WorkspaceFolder, "RobocopLinter"] = WeakKeyDictionary()
33
37
 
34
- if self.robocop_installed and self.robocop_version < (6, 0):
38
+ if self.robocop_installed:
35
39
  parent.diagnostics.collect.add(self.collect_diagnostics)
36
40
 
37
41
  def get_config(self, document: TextDocument) -> Optional[RoboCopConfig]:
@@ -45,18 +49,26 @@ class RobotRoboCopDiagnosticsProtocolPart(RobotLanguageServerProtocolPart, RoboC
45
49
  @_logger.call
46
50
  def collect_diagnostics(
47
51
  self, sender: Any, document: TextDocument, diagnostics_type: DiagnosticsCollectType
48
- ) -> DiagnosticsResult:
49
- workspace_folder = self.parent.workspace.get_workspace_folder(document.uri)
50
- if workspace_folder is not None:
51
- extension_config = self.get_config(document)
52
-
53
- if extension_config is not None and extension_config.enabled:
54
- return DiagnosticsResult(
55
- self.collect_diagnostics,
56
- self.collect(document, workspace_folder, extension_config),
57
- )
52
+ ) -> Optional[DiagnosticsResult]:
53
+ if self.robocop_installed:
54
+ workspace_folder = self.parent.workspace.get_workspace_folder(document.uri)
55
+ if workspace_folder is not None:
56
+ config = self.get_config(document)
57
+
58
+ if config is not None and config.enabled:
59
+ if self.robocop_version >= (6, 0):
60
+ # In Robocop 6.0, the diagnostics are collected in a different way
61
+ return DiagnosticsResult(
62
+ self.collect_diagnostics,
63
+ self.collect(document, workspace_folder, config),
64
+ )
58
65
 
59
- return DiagnosticsResult(self.collect_diagnostics, [])
66
+ return DiagnosticsResult(
67
+ self.collect_diagnostics,
68
+ self.collect_old(document, workspace_folder, config),
69
+ )
70
+
71
+ return None
60
72
 
61
73
  @_logger.call
62
74
  def collect(
@@ -64,6 +76,69 @@ class RobotRoboCopDiagnosticsProtocolPart(RobotLanguageServerProtocolPart, RoboC
64
76
  document: TextDocument,
65
77
  workspace_folder: WorkspaceFolder,
66
78
  extension_config: RoboCopConfig,
79
+ ) -> List[Diagnostic]:
80
+ from robocop.config import ConfigManager
81
+ from robocop.linter.rules import RuleSeverity
82
+ from robocop.linter.runner import RobocopLinter
83
+
84
+ linter = self._robocop_linters.get(workspace_folder, None)
85
+
86
+ if linter is None:
87
+ config_manager = ConfigManager(
88
+ [],
89
+ root=workspace_folder.uri.to_path(),
90
+ config=extension_config.config_file,
91
+ ignore_git_dir=extension_config.ignore_git_dir,
92
+ ignore_file_config=extension_config.ignore_file_config,
93
+ )
94
+ linter = RobocopLinter(config_manager)
95
+ self._robocop_linters[workspace_folder] = linter
96
+
97
+ source = document.uri.to_path()
98
+
99
+ config = linter.config_manager.get_config_for_source_file(source)
100
+ model = self.parent.documents_cache.get_model(document, False)
101
+ diagnostics = linter.run_check(model, source, config)
102
+
103
+ return [
104
+ Diagnostic(
105
+ range=Range(
106
+ start=Position(
107
+ line=diagnostic.range.start.line - 1,
108
+ character=diagnostic.range.start.character - 1,
109
+ ),
110
+ end=Position(
111
+ line=max(0, diagnostic.range.end.line - 1),
112
+ character=max(0, diagnostic.range.end.character - 1),
113
+ ),
114
+ ),
115
+ message=diagnostic.message,
116
+ severity=(
117
+ DiagnosticSeverity.INFORMATION
118
+ if diagnostic.severity == RuleSeverity.INFO
119
+ else (
120
+ DiagnosticSeverity.WARNING
121
+ if diagnostic.severity == RuleSeverity.WARNING
122
+ else (
123
+ DiagnosticSeverity.ERROR
124
+ if diagnostic.severity == RuleSeverity.ERROR
125
+ else DiagnosticSeverity.HINT
126
+ )
127
+ )
128
+ ),
129
+ source=self.source_name,
130
+ code=f"{diagnostic.rule.rule_id}-{diagnostic.rule.name}",
131
+ code_description=self.get_code_description(self.robocop_version, diagnostic),
132
+ )
133
+ for diagnostic in diagnostics
134
+ ]
135
+
136
+ @_logger.call
137
+ def collect_old(
138
+ self,
139
+ document: TextDocument,
140
+ workspace_folder: WorkspaceFolder,
141
+ extension_config: RoboCopConfig,
67
142
  ) -> List[Diagnostic]:
68
143
  from robocop import __version__
69
144
  from robocop.config import Config
@@ -174,7 +249,9 @@ class RobotRoboCopDiagnosticsProtocolPart(RobotLanguageServerProtocolPart, RoboC
174
249
  if version < (3, 0):
175
250
  return None
176
251
 
177
- base = f"https://robocop.readthedocs.io/en/{version.major}.{version.minor}.{version.patch}"
252
+ version_letter = "v" if version.major >= 6 else ""
253
+
254
+ base = f"https://robocop.readthedocs.io/en/{version_letter}{version.major}.{version.minor}.{version.patch}"
178
255
 
179
256
  if version < (4, 0):
180
257
  return CodeDescription(href=f"{base}/rules.html#{issue.name}".lower())
@@ -187,4 +264,7 @@ class RobotRoboCopDiagnosticsProtocolPart(RobotLanguageServerProtocolPart, RoboC
187
264
  href=f"{base}/rules_list.html#{issue.name}-{issue.severity.value}{issue.rule_id}".lower()
188
265
  )
189
266
 
190
- return CodeDescription(href=f"{base}/rules_list.html#{issue.name}".lower())
267
+ if version < (6, 0):
268
+ return CodeDescription(href=f"{base}/rules_list.html#{issue.name}".lower())
269
+
270
+ return CodeDescription(href=f"{base}/rules/rules_list.html#{issue.rule.rule_id}-{issue.rule.name}".lower())
@@ -1 +0,0 @@
1
- __version__ = "1.3.0-dev.5"