robotcode-language-server 0.95.2__tar.gz → 0.97.0__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 (74) hide show
  1. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/PKG-INFO +5 -6
  2. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/pyproject.toml +4 -4
  3. robotcode_language_server-0.97.0/src/robotcode/language_server/__version__.py +1 -0
  4. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/cli.py +3 -31
  5. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/diagnostics.py +11 -0
  6. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/documents.py +1 -1
  7. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/protocol.py +1 -1
  8. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/configuration.py +1 -6
  9. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/robot_workspace.py +7 -1
  10. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/protocol.py +9 -7
  11. robotcode_language_server-0.95.2/src/robotcode/language_server/__version__.py +0 -1
  12. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/.gitignore +0 -0
  13. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/LICENSE.txt +0 -0
  14. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/README.md +0 -0
  15. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/__init__.py +0 -0
  16. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/__init__.py +0 -0
  17. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/decorators.py +0 -0
  18. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/__init__.py +0 -0
  19. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/code_action.py +0 -0
  20. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/code_lens.py +0 -0
  21. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/commands.py +0 -0
  22. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/completion.py +0 -0
  23. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/declaration.py +0 -0
  24. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/definition.py +0 -0
  25. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/document_highlight.py +0 -0
  26. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/document_symbols.py +0 -0
  27. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/folding_range.py +0 -0
  28. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/formatting.py +0 -0
  29. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/hover.py +0 -0
  30. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/implementation.py +0 -0
  31. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/inlay_hint.py +0 -0
  32. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/inline_value.py +0 -0
  33. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/linked_editing_ranges.py +0 -0
  34. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/protocol_part.py +0 -0
  35. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/references.py +0 -0
  36. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/rename.py +0 -0
  37. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/selection_range.py +0 -0
  38. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/semantic_tokens.py +0 -0
  39. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/signature_help.py +0 -0
  40. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/window.py +0 -0
  41. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/parts/workspace.py +0 -0
  42. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/common/server.py +0 -0
  43. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/hooks.py +0 -0
  44. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/py.typed +0 -0
  45. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/__init__.py +0 -0
  46. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/__init__.py +0 -0
  47. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/code_action_documentation.py +0 -0
  48. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/code_action_helper_mixin.py +0 -0
  49. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/code_action_quick_fixes.py +0 -0
  50. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/code_action_refactor.py +0 -0
  51. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/code_lens.py +0 -0
  52. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/completion.py +0 -0
  53. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/debugging_utils.py +0 -0
  54. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/diagnostics.py +0 -0
  55. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/document_highlight.py +0 -0
  56. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/document_symbols.py +0 -0
  57. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/documents_cache.py +0 -0
  58. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/folding_range.py +0 -0
  59. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/formatting.py +0 -0
  60. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/goto.py +0 -0
  61. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/hover.py +0 -0
  62. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/http_server.py +0 -0
  63. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/inlay_hint.py +0 -0
  64. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/inline_value.py +0 -0
  65. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/keywords_treeview.py +0 -0
  66. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/project_info.py +0 -0
  67. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/protocol_part.py +0 -0
  68. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/references.py +0 -0
  69. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/rename.py +0 -0
  70. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/robocop_diagnostics.py +0 -0
  71. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/selection_range.py +0 -0
  72. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/semantic_tokens.py +0 -0
  73. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/parts/signature_help.py +0 -0
  74. {robotcode_language_server-0.95.2 → robotcode_language_server-0.97.0}/src/robotcode/language_server/robotframework/server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: robotcode-language-server
3
- Version: 0.95.2
3
+ Version: 0.97.0
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
@@ -10,7 +10,6 @@ Project-URL: Issues, https://github.com/robotcodedev/robotcode/issues
10
10
  Project-URL: Source, https://github.com/robotcodedev/robotcode
11
11
  Author-email: Daniel Biehl <dbiehl@live.de>
12
12
  License: Apache-2.0
13
- License-File: LICENSE.txt
14
13
  Classifier: Development Status :: 5 - Production/Stable
15
14
  Classifier: Framework :: Robot Framework
16
15
  Classifier: Framework :: Robot Framework :: Tool
@@ -25,10 +24,10 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
25
24
  Classifier: Topic :: Utilities
26
25
  Classifier: Typing :: Typed
27
26
  Requires-Python: >=3.8
28
- Requires-Dist: robotcode-analyze==0.95.2
29
- Requires-Dist: robotcode-jsonrpc2==0.95.2
30
- Requires-Dist: robotcode-robot==0.95.2
31
- Requires-Dist: robotcode==0.95.2
27
+ Requires-Dist: robotcode-analyze==0.97.0
28
+ Requires-Dist: robotcode-jsonrpc2==0.97.0
29
+ Requires-Dist: robotcode-robot==0.97.0
30
+ Requires-Dist: robotcode==0.97.0
32
31
  Requires-Dist: robotframework>=4.1.0
33
32
  Description-Content-Type: text/markdown
34
33
 
@@ -27,10 +27,10 @@ classifiers = [
27
27
  ]
28
28
  dependencies = [
29
29
  "robotframework>=4.1.0",
30
- "robotcode-jsonrpc2==0.95.2",
31
- "robotcode-robot==0.95.2",
32
- "robotcode-analyze==0.95.2",
33
- "robotcode==0.95.2",
30
+ "robotcode-jsonrpc2==0.97.0",
31
+ "robotcode-robot==0.97.0",
32
+ "robotcode-analyze==0.97.0",
33
+ "robotcode==0.97.0",
34
34
  ]
35
35
  dynamic = ["version"]
36
36
 
@@ -15,12 +15,7 @@ from robotcode.plugin.click_helper.types import AddressesPort, add_options
15
15
  from robotcode.robot.config.loader import load_robot_config_from_path
16
16
  from robotcode.robot.config.model import RobotBaseProfile
17
17
  from robotcode.robot.config.utils import get_config_files
18
- from robotcode.robot.diagnostics.workspace_config import (
19
- AnalysisDiagnosticModifiersConfig,
20
- AnalysisRobotConfig,
21
- CacheConfig,
22
- WorkspaceAnalysisConfig,
23
- )
18
+ from robotcode.robot.diagnostics.workspace_config import WorkspaceAnalysisConfig
24
19
 
25
20
  from .__version__ import __version__
26
21
 
@@ -101,36 +96,13 @@ def language_server(
101
96
  if analyzer_config is None:
102
97
  analyzer_config = AnalyzeConfig()
103
98
 
104
- analysis_config = WorkspaceAnalysisConfig(
105
- cache=(
106
- CacheConfig(
107
- # TODO savelocation
108
- ignored_libraries=analyzer_config.cache.ignored_libraries or [],
109
- ignored_variables=analyzer_config.cache.ignored_variables or [],
110
- ignore_arguments_for_library=analyzer_config.cache.ignore_arguments_for_library or [],
111
- )
112
- if analyzer_config.cache is not None
113
- else CacheConfig()
114
- ),
115
- robot=AnalysisRobotConfig(global_library_search_order=analyzer_config.global_library_search_order or []),
116
- modifiers=(
117
- AnalysisDiagnosticModifiersConfig(
118
- ignore=analyzer_config.modifiers.ignore or [],
119
- error=analyzer_config.modifiers.error or [],
120
- warning=analyzer_config.modifiers.warning or [],
121
- information=analyzer_config.modifiers.information or [],
122
- hint=analyzer_config.modifiers.hint or [],
123
- )
124
- if analyzer_config.modifiers is not None
125
- else AnalysisDiagnosticModifiersConfig()
126
- ),
127
- )
99
+ analysis_config = analyzer_config.to_workspace_analysis_config()
128
100
 
129
101
  profile = robot_config.combine_profiles(
130
102
  *(app.config.profiles or []), verbose_callback=app.verbose, error_callback=app.error
131
103
  ).evaluated_with_env(verbose_callback=app.verbose, error_callback=app.error)
132
104
  except (TypeError, ValueError) as e:
133
- app.echo(str(e), err=True)
105
+ app.error(str(e), err=True)
134
106
 
135
107
  mode, port, bind, pipe_name = resolve_server_options(
136
108
  ctx, app, mode, port, bind, pipe_name, tcp, socket, stdio, pipe, None
@@ -250,6 +250,8 @@ class DiagnosticsProtocolPart(LanguageServerProtocolPart):
250
250
 
251
251
  if needs_refresh:
252
252
  self.refresh()
253
+ except (SystemExit, KeyboardInterrupt):
254
+ raise
253
255
  except BaseException as e:
254
256
  self._logger.exception(e)
255
257
  finally:
@@ -410,6 +412,9 @@ class DiagnosticsProtocolPart(LanguageServerProtocolPart):
410
412
  self._current_diagnostics_task = run_as_task(self._analyse_document, document)
411
413
  self._current_diagnostics_task.result(self._diagnostics_task_timeout)
412
414
 
415
+ except (SystemExit, KeyboardInterrupt):
416
+ raise
417
+
413
418
  except CancelledError:
414
419
  self._logger.debug(
415
420
  lambda: f"Analyzing {document.uri} cancelled", context_name="workspace_diagnostics"
@@ -502,6 +507,10 @@ class DiagnosticsProtocolPart(LanguageServerProtocolPart):
502
507
  )
503
508
  if self._current_diagnostics_task is not None:
504
509
  self._current_diagnostics_task.result(self._diagnostics_task_timeout)
510
+
511
+ except (SystemExit, KeyboardInterrupt):
512
+ raise
513
+
505
514
  except CancelledError:
506
515
  self._logger.debug(
507
516
  lambda: f"Collecting diagnostics for {document.uri} cancelled",
@@ -566,6 +575,8 @@ class DiagnosticsProtocolPart(LanguageServerProtocolPart):
566
575
  future.cancel()
567
576
  try:
568
577
  concurrent.futures.wait([future], timeout=5)
578
+ except (SystemExit, KeyboardInterrupt):
579
+ raise
569
580
  except BaseException as e:
570
581
  self._logger.exception(e)
571
582
 
@@ -56,7 +56,7 @@ class TextDocumentProtocolPart(LanguageServerProtocolPart, DocumentsManager):
56
56
 
57
57
  def __init__(self, parent: "LanguageServerProtocol") -> None:
58
58
  super().__init__(parent)
59
- DocumentsManager.__init__(self, parent.languages)
59
+ DocumentsManager.__init__(self, parent.language_definitions)
60
60
 
61
61
  self.parent.on_initialized.add(self._protocol_initialized)
62
62
 
@@ -107,7 +107,7 @@ class LanguageServerProtocol(JsonRPCProtocol):
107
107
  version: Optional[str] = None
108
108
 
109
109
  file_extensions: ClassVar[Set[str]] = set()
110
- languages: ClassVar[List[LanguageDefinition]] = []
110
+ language_definitions: ClassVar[List[LanguageDefinition]] = []
111
111
 
112
112
  def __init__(self, server: JsonRPCServer[Any]):
113
113
  super().__init__()
@@ -8,6 +8,7 @@ from robotcode.robot.diagnostics.workspace_config import (
8
8
  AnalysisRobotConfig,
9
9
  CacheConfig,
10
10
  RobotConfig,
11
+ WorkspaceConfig,
11
12
  )
12
13
 
13
14
 
@@ -43,12 +44,6 @@ class RoboTidyConfig(ConfigBase):
43
44
  config: Optional[str] = None
44
45
 
45
46
 
46
- @config_section("robotcode.workspace")
47
- @dataclass
48
- class WorkspaceConfig(ConfigBase):
49
- exclude_patterns: List[str] = field(default_factory=list)
50
-
51
-
52
47
  @config_section("robotcode.documentationServer")
53
48
  @dataclass
54
49
  class DocumentationServerConfig(ConfigBase):
@@ -63,6 +63,12 @@ class RobotWorkspaceProtocolPart(RobotLanguageServerProtocolPart):
63
63
  config = self.parent.workspace.get_configuration(RobotCodeConfig, folder.uri)
64
64
 
65
65
  extensions = [ROBOT_FILE_EXTENSION, RESOURCE_FILE_EXTENSION]
66
+
67
+ exclude_patterns = [
68
+ *self.parent.analysis_config.exclude_patterns,
69
+ *(config.workspace.exclude_patterns or []),
70
+ ]
71
+
66
72
  with self.parent.window.progress("Collect sources", cancellable=False):
67
73
  files = list(
68
74
  filter(
@@ -72,7 +78,7 @@ class RobotWorkspaceProtocolPart(RobotLanguageServerProtocolPart):
72
78
  ignore_files=[ROBOT_IGNORE_FILE, GIT_IGNORE_FILE],
73
79
  include_hidden=False,
74
80
  parent_spec=IgnoreSpec.from_list(
75
- [*DEFAULT_SPEC_RULES, *(config.workspace.exclude_patterns or [])],
81
+ [*DEFAULT_SPEC_RULES, *exclude_patterns],
76
82
  folder.uri.to_path(),
77
83
  ),
78
84
  verbose_callback=self._logger.debug,
@@ -1,3 +1,4 @@
1
+ import glob
1
2
  import os
2
3
  import sys
3
4
  from dataclasses import dataclass, field
@@ -92,7 +93,6 @@ class RobotInitializationOptions(CamelSnakeMixin):
92
93
  class RobotLanguageServerProtocol(LanguageServerProtocol):
93
94
  _logger: Final = LoggingDescriptor()
94
95
 
95
- # documents_cache = ProtocolPartDescriptor(DocumentsCachePart)
96
96
  robot_workspace = ProtocolPartDescriptor(RobotWorkspaceProtocolPart)
97
97
  robot_diagnostics = ProtocolPartDescriptor(RobotDiagnosticsProtocolPart)
98
98
  robot_folding_ranges = ProtocolPartDescriptor(RobotFoldingRangeProtocolPart)
@@ -133,7 +133,7 @@ class RobotLanguageServerProtocol(LanguageServerProtocol):
133
133
  "yml",
134
134
  }
135
135
 
136
- languages: ClassVar[List[LanguageDefinition]] = [
136
+ language_definitions: ClassVar[List[LanguageDefinition]] = [
137
137
  LanguageDefinition(
138
138
  id="robotframework",
139
139
  extensions=[".robot", ".resource"],
@@ -215,7 +215,6 @@ class RobotLanguageServerProtocol(LanguageServerProtocol):
215
215
 
216
216
  def server_initialized(self, sender: Any) -> None:
217
217
  for folder in self.workspace.workspace_folders:
218
- config: RobotConfig = self.workspace.get_configuration(RobotConfig, folder.uri)
219
218
 
220
219
  for p in self.robot_profile.python_path or []:
221
220
  pa = Path(str(p))
@@ -223,9 +222,11 @@ class RobotLanguageServerProtocol(LanguageServerProtocol):
223
222
  pa = Path(folder.uri.to_path(), pa)
224
223
 
225
224
  absolute_path = str(pa.absolute())
226
- if absolute_path not in sys.path:
227
- sys.path.insert(0, absolute_path)
225
+ for f in glob.glob(absolute_path):
226
+ if Path(f).is_dir() and f not in sys.path:
227
+ sys.path.insert(0, f)
228
228
 
229
+ config: RobotConfig = self.workspace.get_configuration(RobotConfig, folder.uri)
229
230
  if config is not None:
230
231
  if config.env:
231
232
  for k, v in config.env.items():
@@ -238,7 +239,8 @@ class RobotLanguageServerProtocol(LanguageServerProtocol):
238
239
  pa = Path(folder.uri.to_path(), pa)
239
240
 
240
241
  absolute_path = str(pa.absolute())
241
- if absolute_path not in sys.path:
242
- sys.path.insert(0, absolute_path)
242
+ for f in glob.glob(absolute_path):
243
+ if Path(f).is_dir() and f not in sys.path:
244
+ sys.path.insert(0, f)
243
245
 
244
246
  self.on_robot_initialized(self)
@@ -1 +0,0 @@
1
- __version__ = "0.95.2"