robotcode-robot 1.3.0.dev4__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 (35) hide show
  1. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/PKG-INFO +2 -2
  2. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/pyproject.toml +1 -1
  3. robotcode_robot-1.3.0.dev6/src/robotcode/robot/__version__.py +1 -0
  4. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/diagnostics/entities.py +18 -2
  5. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/diagnostics/keyword_finder.py +17 -1
  6. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/diagnostics/library_doc.py +2 -2
  7. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/diagnostics/namespace.py +225 -194
  8. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/diagnostics/namespace_analyzer.py +173 -157
  9. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/utils/ast.py +7 -5
  10. robotcode_robot-1.3.0.dev6/src/robotcode/robot/utils/variables.py +227 -0
  11. robotcode_robot-1.3.0.dev4/src/robotcode/robot/__version__.py +0 -1
  12. robotcode_robot-1.3.0.dev4/src/robotcode/robot/utils/variables.py +0 -152
  13. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/.gitignore +0 -0
  14. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/LICENSE.txt +0 -0
  15. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/README.md +0 -0
  16. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/__init__.py +0 -0
  17. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/config/__init__.py +0 -0
  18. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/config/loader.py +0 -0
  19. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/config/model.py +0 -0
  20. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/config/utils.py +0 -0
  21. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/diagnostics/__init__.py +0 -0
  22. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/diagnostics/data_cache.py +0 -0
  23. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/diagnostics/diagnostics_modifier.py +0 -0
  24. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/diagnostics/document_cache_helper.py +0 -0
  25. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/diagnostics/errors.py +0 -0
  26. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/diagnostics/imports_manager.py +0 -0
  27. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/diagnostics/model_helper.py +0 -0
  28. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/diagnostics/workspace_config.py +0 -0
  29. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/py.typed +0 -0
  30. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/utils/__init__.py +0 -0
  31. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/utils/markdownformatter.py +0 -0
  32. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/utils/match.py +0 -0
  33. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/utils/robot_path.py +0 -0
  34. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/utils/stubs.py +0 -0
  35. {robotcode_robot-1.3.0.dev4 → robotcode_robot-1.3.0.dev6}/src/robotcode/robot/utils/visitor.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: robotcode-robot
3
- Version: 1.3.0.dev4
3
+ Version: 1.3.0.dev6
4
4
  Summary: Support classes for RobotCode for handling Robot Framework projects.
5
5
  Project-URL: Homepage, https://robotcode.io
6
6
  Project-URL: Donate, https://opencollective.com/robotcode
@@ -26,7 +26,7 @@ Classifier: Topic :: Utilities
26
26
  Classifier: Typing :: Typed
27
27
  Requires-Python: >=3.8
28
28
  Requires-Dist: platformdirs<4.4.0,>=3.2.0
29
- Requires-Dist: robotcode-core==1.3.0-dev.4
29
+ Requires-Dist: robotcode-core==1.3.0-dev.6
30
30
  Requires-Dist: robotframework>=4.1.0
31
31
  Requires-Dist: tomli>=1.1.0; python_version < '3.11'
32
32
  Description-Content-Type: text/markdown
@@ -30,7 +30,7 @@ dependencies = [
30
30
  "robotframework>=4.1.0",
31
31
  "tomli>=1.1.0; python_version < '3.11'",
32
32
  "platformdirs>=3.2.0,<4.4.0",
33
- "robotcode-core==1.3.0-dev.4",
33
+ "robotcode-core==1.3.0-dev.6",
34
34
  ]
35
35
  dynamic = ["version"]
36
36
 
@@ -0,0 +1 @@
1
+ __version__ = "1.3.0-dev.6"
@@ -19,7 +19,7 @@ from robot.parsing.lexer.tokens import Token
19
19
  from robotcode.core.lsp.types import Position, Range
20
20
 
21
21
  from ..utils.ast import range_from_token
22
- from ..utils.variables import VariableMatcher
22
+ from ..utils.variables import VariableMatcher, search_variable
23
23
 
24
24
  if TYPE_CHECKING:
25
25
  from robotcode.robot.diagnostics.library_doc import KeywordDoc, LibraryDoc
@@ -187,10 +187,17 @@ class VariableDefinition(SourceEntity):
187
187
 
188
188
  value: Any = field(default=None, compare=False)
189
189
  value_is_native: bool = field(default=False, compare=False)
190
+ value_type: Optional[str] = field(default=None, compare=False)
190
191
 
191
192
  @functools.cached_property
192
193
  def matcher(self) -> VariableMatcher:
193
- return VariableMatcher(self.name)
194
+ return search_variable(self.name)
195
+
196
+ @functools.cached_property
197
+ def convertable_name(self) -> str:
198
+ m = self.matcher
199
+ value_type = f": {self.value_type}" if self.value_type else ""
200
+ return f"{m.identifier}{{{m.base.strip()}{value_type}}}"
194
201
 
195
202
  @single_call
196
203
  def __hash__(self) -> int:
@@ -268,6 +275,15 @@ class ArgumentDefinition(LocalVariableDefinition):
268
275
  return hash((type(self), self.name, self.type, self.range, self.source))
269
276
 
270
277
 
278
+ @dataclass
279
+ class EmbeddedArgumentDefinition(ArgumentDefinition):
280
+ pattern: Optional[str] = field(default=None, compare=False)
281
+
282
+ @single_call
283
+ def __hash__(self) -> int:
284
+ return hash((type(self), self.name, self.type, self.range, self.source))
285
+
286
+
271
287
  @dataclass
272
288
  class LibraryArgumentDefinition(ArgumentDefinition):
273
289
  @single_call
@@ -87,9 +87,25 @@ class KeywordFinder:
87
87
  try:
88
88
  result = self._find_keyword(name, handle_bdd_style)
89
89
  if result is None:
90
+ error_message = "No keyword with found."
91
+
92
+ if name and name.strip(": ").upper() == "FOR":
93
+ error_message = (
94
+ f"Support for the old FOR loop syntax has been removed. "
95
+ f"Replace '{name}' with 'FOR', end the loop with 'END', and "
96
+ f"remove escaping backslashes."
97
+ )
98
+ elif name and name == "\\":
99
+ error_message = (
100
+ "No keyword with name '\\' found. If it is used inside a for "
101
+ "loop, remove escaping backslashes and end the loop with 'END'."
102
+ )
103
+ else:
104
+ error_message = f"No keyword with name '{name}' found."
105
+
90
106
  self.diagnostics.append(
91
107
  DiagnosticsEntry(
92
- f"No keyword with name '{name}' found.",
108
+ error_message,
93
109
  DiagnosticSeverity.ERROR,
94
110
  Error.KEYWORD_NOT_FOUND,
95
111
  )
@@ -67,7 +67,7 @@ from robotcode.core.utils.path import normalized_path
67
67
  from ..utils import get_robot_version
68
68
  from ..utils.ast import (
69
69
  cached_isinstance,
70
- get_variable_token,
70
+ get_first_variable_token,
71
71
  range_from_token,
72
72
  strip_variable_token,
73
73
  )
@@ -2785,7 +2785,7 @@ def _get_argument_definitions_from_line(
2785
2785
 
2786
2786
  for argument_token in (cast(RobotToken, e) for e in arguments):
2787
2787
  try:
2788
- argument = get_variable_token(argument_token)
2788
+ argument = get_first_variable_token(argument_token)
2789
2789
 
2790
2790
  if argument is not None and argument.value != "@{}":
2791
2791
  if argument.value not in args: