robotcode-robot 1.1.0__py3-none-any.whl → 1.3.0.dev1__py3-none-any.whl

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.
@@ -1 +1 @@
1
- __version__ = "1.1.0"
1
+ __version__ = "1.3.0-dev1"
@@ -2371,11 +2371,11 @@ class RobotConfig(RobotExtendBaseProfile):
2371
2371
 
2372
2372
  Examples:
2373
2373
  ```toml
2374
- default_profiles = "default"
2374
+ default-profiles = "default"
2375
2375
  ```
2376
2376
 
2377
2377
  ```toml
2378
- default_profiles = ["default", "Firefox"]
2378
+ default-profiles = ["default", "Firefox"]
2379
2379
  ```
2380
2380
  """
2381
2381
  )
@@ -17,10 +17,9 @@ from typing_extensions import Concatenate, ParamSpec
17
17
 
18
18
  from robot.parsing.lexer.tokens import Token
19
19
  from robotcode.core.lsp.types import Position, Range
20
- from robotcode.robot.utils.match import normalize
21
20
 
22
21
  from ..utils.ast import range_from_token
23
- from ..utils.variables import search_variable
22
+ from ..utils.variables import VariableMatcher
24
23
 
25
24
  if TYPE_CHECKING:
26
25
  from robotcode.robot.diagnostics.library_doc import KeywordDoc, LibraryDoc
@@ -164,48 +163,6 @@ class VariablesImport(Import):
164
163
  return hash((type(self), self.name, self.args))
165
164
 
166
165
 
167
- class InvalidVariableError(Exception):
168
- pass
169
-
170
-
171
- class VariableMatcher:
172
- def __init__(self, name: str) -> None:
173
- self.name = name
174
-
175
- match = search_variable(name, "$@&%", ignore_errors=True)
176
-
177
- if match.base is None:
178
- raise InvalidVariableError(f"Invalid variable '{name}'")
179
-
180
- self.base = match.base
181
-
182
- self.normalized_name = normalize(self.base)
183
-
184
- def __eq__(self, o: object) -> bool:
185
- if type(o) is VariableMatcher:
186
- return o.normalized_name == self.normalized_name
187
-
188
- if type(o) is str:
189
- match = search_variable(o, "$@&%", ignore_errors=True)
190
- base = match.base
191
- if base is None:
192
- return False
193
-
194
- normalized = normalize(base)
195
- return self.normalized_name == normalized
196
-
197
- return False
198
-
199
- def __hash__(self) -> int:
200
- return hash(self.normalized_name)
201
-
202
- def __str__(self) -> str:
203
- return self.name
204
-
205
- def __repr__(self) -> str:
206
- return f"{type(self).__name__}(name={self.name!r})"
207
-
208
-
209
166
  class VariableDefinitionType(Enum):
210
167
  VARIABLE = "suite variable"
211
168
  LOCAL_VARIABLE = "local variable"
@@ -43,3 +43,4 @@ class Error:
43
43
  VARIABLE_OVERRIDDEN = "VariableOverridden"
44
44
  MODEL_ERROR = "ModelError"
45
45
  TOKEN_ERROR = "TokenError"
46
+ ASSIGN_MARK_ALLOWED_ONLY_ON_LAST_VAR = "AssignmentMarkAllowedOnlyOnLastVariable"
@@ -253,7 +253,7 @@ class ModelHelper:
253
253
 
254
254
  return lib_entry, kw_namespace
255
255
 
256
- match_extended = re.compile(
256
+ MATCH_EXTENDED = re.compile(
257
257
  r"""
258
258
  (.+?) # base name (group 1)
259
259
  ([^\s\w].+) # extended part (group 2)
@@ -500,9 +500,9 @@ class ModelHelper:
500
500
  and sub_token.value[1:2] == "{"
501
501
  and sub_token.value[-1:] == "}"
502
502
  ):
503
- match = cls.match_extended.match(name[2:-1])
504
- if match is not None:
505
- base_name, _ = match.groups()
503
+ extended_match = cls.MATCH_EXTENDED.match(name[2:-1])
504
+ if extended_match is not None:
505
+ base_name, _ = extended_match.groups()
506
506
  name = f"{name[0]}{{{base_name.strip()}}}"
507
507
  var = namespace.find_variable(
508
508
  name,
@@ -55,6 +55,8 @@ from ..utils.ast import (
55
55
  from ..utils.stubs import Languages
56
56
  from ..utils.variables import (
57
57
  BUILTIN_VARIABLES,
58
+ InvalidVariableError,
59
+ VariableMatcher,
58
60
  is_scalar_assign,
59
61
  is_variable,
60
62
  search_variable,
@@ -66,7 +68,6 @@ from .entities import (
66
68
  EnvironmentVariableDefinition,
67
69
  GlobalVariableDefinition,
68
70
  Import,
69
- InvalidVariableError,
70
71
  LibraryEntry,
71
72
  LibraryImport,
72
73
  LocalVariableDefinition,
@@ -76,7 +77,6 @@ from .entities import (
76
77
  TestCaseDefinition,
77
78
  TestVariableDefinition,
78
79
  VariableDefinition,
79
- VariableMatcher,
80
80
  VariablesEntry,
81
81
  VariablesImport,
82
82
  )
@@ -54,13 +54,20 @@ from ..utils.ast import (
54
54
  strip_variable_token,
55
55
  tokenize_variables,
56
56
  )
57
- from ..utils.variables import contains_variable, is_scalar_assign, is_variable, search_variable, split_from_equals
57
+ from ..utils.variables import (
58
+ InvalidVariableError,
59
+ VariableMatcher,
60
+ contains_variable,
61
+ is_scalar_assign,
62
+ is_variable,
63
+ search_variable,
64
+ split_from_equals,
65
+ )
58
66
  from ..utils.visitor import Visitor
59
67
  from .entities import (
60
68
  ArgumentDefinition,
61
69
  EnvironmentVariableDefinition,
62
70
  GlobalVariableDefinition,
63
- InvalidVariableError,
64
71
  LibraryEntry,
65
72
  LocalVariableDefinition,
66
73
  TagDefinition,
@@ -68,7 +75,6 @@ from .entities import (
68
75
  TestVariableDefinition,
69
76
  VariableDefinition,
70
77
  VariableDefinitionType,
71
- VariableMatcher,
72
78
  VariableNotFoundDefinition,
73
79
  )
74
80
  from .errors import DIAGNOSTICS_SOURCE_NAME, Error
@@ -186,19 +192,18 @@ class NamespaceAnalyzer(Visitor):
186
192
  if name_token is None:
187
193
  return
188
194
 
189
- name = name_token.value
190
-
191
- if name is not None:
192
- match = search_variable(name, ignore_errors=True)
193
- if not match.is_assign(allow_assign_mark=True):
195
+ if name_token.value is not None:
196
+ matcher = search_variable(
197
+ name_token.value[:-1].rstrip() if name_token.value.endswith("=") else name_token.value,
198
+ ignore_errors=True,
199
+ )
200
+ if not matcher.is_assign(allow_assign_mark=True) or matcher.name is None:
194
201
  return
195
202
 
196
- if name.endswith("="):
197
- name = name[:-1].rstrip()
203
+ name = matcher.name
204
+
205
+ stripped_name_token = strip_variable_token(name_token, matcher=matcher)
198
206
 
199
- stripped_name_token = strip_variable_token(
200
- Token(name_token.type, name, name_token.lineno, name_token.col_offset, name_token.error)
201
- )
202
207
  r = range_from_token(stripped_name_token)
203
208
 
204
209
  existing_var = self._find_variable(name)
@@ -413,7 +418,7 @@ class NamespaceAnalyzer(Visitor):
413
418
  self, token: Token, severity: DiagnosticSeverity = DiagnosticSeverity.ERROR
414
419
  ) -> None:
415
420
  for var_token, var in self._iter_expression_variables_from_token(token):
416
- self._handle_find_variable_result(token, var_token, var, severity)
421
+ self._handle_find_variable_result(var_token, var, severity)
417
422
 
418
423
  def _append_error_from_node(
419
424
  self,
@@ -479,11 +484,10 @@ class NamespaceAnalyzer(Visitor):
479
484
 
480
485
  def _analyze_token_variables(self, token: Token, severity: DiagnosticSeverity = DiagnosticSeverity.ERROR) -> None:
481
486
  for var_token, var in self._iter_variables_from_token(token):
482
- self._handle_find_variable_result(token, var_token, var, severity)
487
+ self._handle_find_variable_result(var_token, var, severity)
483
488
 
484
489
  def _handle_find_variable_result(
485
490
  self,
486
- token: Token,
487
491
  var_token: Token,
488
492
  var: VariableDefinition,
489
493
  severity: DiagnosticSeverity = DiagnosticSeverity.ERROR,
@@ -664,6 +668,9 @@ class NamespaceAnalyzer(Visitor):
664
668
  else:
665
669
  self._keyword_references[result].add(Location(self._namespace.document_uri, kw_range))
666
670
 
671
+ if result.is_embedded:
672
+ self._analyze_token_variables(keyword_token)
673
+
667
674
  if result.errors:
668
675
  self._append_diagnostics(
669
676
  range=kw_range,
@@ -1016,7 +1023,6 @@ class NamespaceAnalyzer(Visitor):
1016
1023
  )
1017
1024
  return
1018
1025
 
1019
- self._analyze_token_variables(keyword_token)
1020
1026
  self._analyze_statement_variables(node)
1021
1027
 
1022
1028
  self._analyze_keyword_call(
@@ -1224,25 +1230,61 @@ class NamespaceAnalyzer(Visitor):
1224
1230
  pass
1225
1231
 
1226
1232
  def _analyze_assign_statement(self, node: Statement) -> None:
1233
+ token_with_assign_mark: Optional[Token] = None
1227
1234
  for assign_token in node.get_tokens(Token.ASSIGN):
1228
1235
  variable_token = self._get_variable_token(assign_token)
1229
1236
 
1237
+ if token_with_assign_mark is not None:
1238
+ r = range_from_token(token_with_assign_mark)
1239
+ r.start.character = r.end.character - 1
1240
+ self._append_diagnostics(
1241
+ range=r,
1242
+ message="Assign mark '=' can be used only with the last variable.",
1243
+ severity=DiagnosticSeverity.ERROR,
1244
+ code=Error.ASSIGN_MARK_ALLOWED_ONLY_ON_LAST_VAR,
1245
+ )
1246
+
1247
+ if assign_token.value.endswith("="):
1248
+ token_with_assign_mark = assign_token
1249
+
1230
1250
  try:
1231
1251
  if variable_token is not None:
1232
1252
  matcher = VariableMatcher(variable_token.value)
1233
- existing_var = next(
1234
- (
1235
- v
1236
- for k, v in self._variables.items()
1237
- if k == matcher
1238
- and v.type in [VariableDefinitionType.ARGUMENT, VariableDefinitionType.LOCAL_VARIABLE]
1239
- ),
1240
- None,
1241
- )
1253
+ stripped_variable_token = strip_variable_token(variable_token, matcher=matcher)
1254
+ if matcher.name is None:
1255
+ return
1256
+
1257
+ if matcher.items:
1258
+ existing_var = self._find_variable(matcher.name)
1259
+ if existing_var is None:
1260
+ self._handle_find_variable_result(
1261
+ stripped_variable_token,
1262
+ VariableNotFoundDefinition(
1263
+ stripped_variable_token.lineno,
1264
+ stripped_variable_token.col_offset,
1265
+ stripped_variable_token.lineno,
1266
+ stripped_variable_token.end_col_offset,
1267
+ self._namespace.source,
1268
+ matcher.name,
1269
+ stripped_variable_token,
1270
+ ),
1271
+ )
1272
+ return
1273
+ else:
1274
+ existing_var = next(
1275
+ (
1276
+ v
1277
+ for k, v in self._variables.items()
1278
+ if k == matcher
1279
+ and v.type in [VariableDefinitionType.ARGUMENT, VariableDefinitionType.LOCAL_VARIABLE]
1280
+ ),
1281
+ None,
1282
+ )
1283
+
1242
1284
  if existing_var is None:
1243
1285
  var_def = LocalVariableDefinition(
1244
- name=variable_token.value,
1245
- name_token=strip_variable_token(variable_token),
1286
+ name=matcher.name,
1287
+ name_token=stripped_variable_token,
1246
1288
  line_no=variable_token.lineno,
1247
1289
  col_offset=variable_token.col_offset,
1248
1290
  end_line_no=variable_token.lineno,
@@ -1256,7 +1298,7 @@ class NamespaceAnalyzer(Visitor):
1256
1298
  self._variable_references[existing_var].add(
1257
1299
  Location(
1258
1300
  self._namespace.document_uri,
1259
- range_from_token(strip_variable_token(variable_token)),
1301
+ range_from_token(stripped_variable_token),
1260
1302
  )
1261
1303
  )
1262
1304
 
@@ -1747,9 +1789,9 @@ class NamespaceAnalyzer(Visitor):
1747
1789
  and var_token.value[1:2] == "{"
1748
1790
  and var_token.value[-1:] == "}"
1749
1791
  ):
1750
- match = ModelHelper.match_extended.match(name[2:-1])
1751
- if match is not None:
1752
- base_name, _ = match.groups()
1792
+ extended_match = ModelHelper.MATCH_EXTENDED.match(name[2:-1])
1793
+ if extended_match is not None:
1794
+ base_name, _ = extended_match.groups()
1753
1795
  name = f"{name[0]}{{{base_name.strip()}}}"
1754
1796
  var = self._find_variable(name)
1755
1797
  sub_sub_token = Token(
@@ -11,6 +11,7 @@ from robot.parsing.lexer.tokens import Token
11
11
  from robot.parsing.model.statements import EmptyLine, Statement
12
12
  from robotcode.core.lsp.types import Position, Range
13
13
 
14
+ from ..utils.variables import VariableMatcher, search_variable
14
15
  from . import get_robot_version
15
16
  from .visitor import Visitor
16
17
 
@@ -325,23 +326,22 @@ def iter_over_keyword_names_and_owners(
325
326
  yield ".".join(tokens[:i]), ".".join(tokens[i:])
326
327
 
327
328
 
328
- def strip_variable_token(token: Token) -> Token:
329
- if (
330
- token.type == Token.VARIABLE
331
- and token.value[:1] in "$@&%"
332
- and token.value[1:2] == "{"
333
- and token.value[-1:] == "}"
334
- ):
335
- value = token.value[2:-1]
336
-
337
- stripped_value = value.lstrip()
338
- stripped_offset = len(value) - len(stripped_value)
339
- return Token(
340
- token.type,
341
- stripped_value.rstrip(),
342
- token.lineno,
343
- token.col_offset + 2 + stripped_offset,
344
- )
329
+ def strip_variable_token(token: Token, identifiers: str = "$@&%*", matcher: Optional[VariableMatcher] = None) -> Token:
330
+ if token.type == Token.VARIABLE:
331
+ if matcher is None:
332
+ matcher = search_variable(token.value, identifiers, ignore_errors=True)
333
+
334
+ if matcher.is_variable():
335
+ value = matcher.base
336
+
337
+ stripped_value = value.lstrip()
338
+ stripped_offset = len(value) - len(stripped_value)
339
+ return Token(
340
+ token.type,
341
+ matcher.base.strip(),
342
+ token.lineno,
343
+ token.col_offset + 2 + stripped_offset,
344
+ )
345
345
 
346
346
  return token
347
347
 
@@ -1,12 +1,92 @@
1
1
  import functools
2
- from typing import Optional, Tuple, cast
2
+ from typing import Any, Optional, Tuple, cast
3
3
 
4
4
  from robot.utils.escaping import split_from_equals as robot_split_from_equals
5
- from robot.variables.search import VariableMatch as RobotVariableMatch
6
5
  from robot.variables.search import contains_variable as robot_contains_variable
7
6
  from robot.variables.search import is_scalar_assign as robot_is_scalar_assign
8
7
  from robot.variables.search import is_variable as robot_is_variable
9
8
  from robot.variables.search import search_variable as robot_search_variable
9
+ from robotcode.robot.utils.match import normalize
10
+
11
+
12
+ class InvalidVariableError(Exception):
13
+ pass
14
+
15
+
16
+ class VariableMatcher:
17
+ def __init__(self, string: str, identifiers: str = "$@&%", ignore_errors: bool = True) -> None:
18
+ self.string = string
19
+
20
+ self.match = robot_search_variable(string, identifiers=identifiers, ignore_errors=ignore_errors)
21
+
22
+ if not ignore_errors and self.match.base is None:
23
+ raise InvalidVariableError(f"Invalid variable '{string}'")
24
+
25
+ self.base = self.match.base
26
+ self.identifier = self.match.identifier
27
+ self.name = "%s{%s}" % (self.identifier, self.base.strip()) if self.base else None
28
+ self.items = self.match.items
29
+ self.start = self.match.start
30
+ self.end = self.match.end
31
+ self.after = self.match.after
32
+ self.before = self.match.before
33
+
34
+ self.normalized_name = normalize(self.base) if self.base else None
35
+
36
+ def __eq__(self, o: object) -> bool:
37
+ if self.normalized_name is None:
38
+ return False
39
+
40
+ if type(o) is VariableMatcher:
41
+ return o.normalized_name == self.normalized_name
42
+
43
+ if type(o) is str:
44
+ match = search_variable(o, "$@&%", ignore_errors=True)
45
+ base = match.base
46
+ if base is None:
47
+ return False
48
+
49
+ normalized = normalize(base)
50
+ return self.normalized_name == normalized
51
+
52
+ return False
53
+
54
+ def __hash__(self) -> int:
55
+ return hash(self.normalized_name)
56
+
57
+ def __str__(self) -> str:
58
+ return self.string
59
+
60
+ def __repr__(self) -> str:
61
+ return f"{type(self).__name__}(name={self.string!r})"
62
+
63
+ def resolve_base(self, variables: Any, ignore_errors: bool = False) -> None:
64
+ self.match.resolve_base(variables, ignore_errors)
65
+
66
+ def is_variable(self) -> bool:
67
+ return bool(self.match.is_variable())
68
+
69
+ def is_scalar_variable(self) -> bool:
70
+ return bool(self.match.is_scalar_variable())
71
+
72
+ def is_list_variable(self) -> bool:
73
+ return bool(self.match.is_list_variable())
74
+
75
+ def is_dict_variable(self) -> bool:
76
+ return bool(self.match.is_dict_variable())
77
+
78
+ def is_assign(self, allow_assign_mark: bool = False) -> bool:
79
+ return bool(self.match.is_assign(allow_assign_mark))
80
+
81
+ def is_scalar_assign(self, allow_assign_mark: bool = False) -> bool:
82
+ return bool(self.match.is_scalar_assign(allow_assign_mark))
83
+
84
+ def is_list_assign(self, allow_assign_mark: bool = False) -> bool:
85
+ return bool(self.match.is_list_assign(allow_assign_mark))
86
+
87
+ def is_dict_assign(self, allow_assign_mark: bool = False) -> bool:
88
+ return bool(self.match.is_dict_assign(allow_assign_mark))
89
+
10
90
 
11
91
  BUILTIN_VARIABLES = [
12
92
  "${CURDIR}",
@@ -63,8 +143,8 @@ def is_variable(string: str, identifiers: str = "$@&") -> bool:
63
143
 
64
144
 
65
145
  @functools.lru_cache(maxsize=8192)
66
- def search_variable(string: str, identifiers: str = "$@&%*", ignore_errors: bool = False) -> RobotVariableMatch:
67
- return robot_search_variable(string, identifiers, ignore_errors)
146
+ def search_variable(string: str, identifiers: str = "$@&%*", ignore_errors: bool = False) -> VariableMatcher:
147
+ return VariableMatcher(string, identifiers, ignore_errors)
68
148
 
69
149
 
70
150
  @functools.lru_cache(maxsize=8192)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: robotcode-robot
3
- Version: 1.1.0
3
+ Version: 1.3.0.dev1
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.1.0
29
+ Requires-Dist: robotcode-core==1.3.0-dev1
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
@@ -1,32 +1,32 @@
1
1
  robotcode/robot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- robotcode/robot/__version__.py,sha256=LGVQyDsWifdACo7qztwb8RWWHds1E7uQ-ZqD8SAjyw4,22
2
+ robotcode/robot/__version__.py,sha256=AWwdr9SBHDif_MzS0HLtSq_6ipM55E-2k8Y5FUnKvd8,27
3
3
  robotcode/robot/py.typed,sha256=bWew9mHgMy8LqMu7RuqQXFXLBxh2CRx0dUbSx-3wE48,27
4
4
  robotcode/robot/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  robotcode/robot/config/loader.py,sha256=qrP810HNMDpqhXopWa0dOa0Wq_zQfVctsNYKY6sLKGI,8654
6
- robotcode/robot/config/model.py,sha256=sgr6-4_E06g-yIXW41Z-NtIXZ_7JMmR5WvUD7kTUqu4,89106
6
+ robotcode/robot/config/model.py,sha256=lN12CbUh_t0tMfMQpCi2Clcnpf8YTrh4KD1pbl6vpks,89106
7
7
  robotcode/robot/config/utils.py,sha256=xY-LH31BidWzonpvSrle-4HvKrp02I7IRqU2JwlL4Ls,2931
8
8
  robotcode/robot/diagnostics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  robotcode/robot/diagnostics/data_cache.py,sha256=duLbcKzwqlCC1tBvJY8ASYh2LcIoCSs8_NgQ8NUQ7VU,3186
10
10
  robotcode/robot/diagnostics/diagnostics_modifier.py,sha256=6zJdXBd6g1QM12XJbsHd8gNNysECMnWlne3q8XNgBDo,9797
11
11
  robotcode/robot/diagnostics/document_cache_helper.py,sha256=5H0S7qDCeoEmqjMLUE7EQy9iZcZTYIUl5H1Pdvn5s5I,23886
12
- robotcode/robot/diagnostics/entities.py,sha256=I55YMxXpl7C1Sx6GgxRqb7vWMK7uWIoB7GhR1X9b66c,12983
13
- robotcode/robot/diagnostics/errors.py,sha256=RGnE4KCgNxQ58hNMBuAD3Q-qWqZVWZSZsCnhBGtQScw,1975
12
+ robotcode/robot/diagnostics/entities.py,sha256=mcEg2DXhymqhwRLuhFcuErcZR_46XrqFI1JV4_0NIOo,11872
13
+ robotcode/robot/diagnostics/errors.py,sha256=irVOZIcnpf611c9BdWXWpRu2esEl6SSN0EvZjA7p3bY,2060
14
14
  robotcode/robot/diagnostics/imports_manager.py,sha256=hu4Wp9b8J1jk55-NBqK2teQieWQF5D8LKxM5fyaxI1U,61156
15
15
  robotcode/robot/diagnostics/keyword_finder.py,sha256=dm4BA0ccp5V4C65CkSYUJUNXegSmvG24uu09T3eL6a4,17319
16
16
  robotcode/robot/diagnostics/library_doc.py,sha256=ruHS1bjOae0v4HQ2zH-B0baP_zs8BFa7mjsIb8tyvp4,100541
17
- robotcode/robot/diagnostics/model_helper.py,sha256=nq78e6TQ9Anvz_VSLW560lRTKrRjBsh7NoWttEvJ2hw,30973
18
- robotcode/robot/diagnostics/namespace.py,sha256=qSE-1z8U8AoE7HyY-cUMLgaEETjMB3gQr3IHLVdgFSU,78941
19
- robotcode/robot/diagnostics/namespace_analyzer.py,sha256=ksa9Mmexnvo8XWscm-OLqG9jd2lxetYLtmVx0KgCkj4,76047
17
+ robotcode/robot/diagnostics/model_helper.py,sha256=RmKg1t5qsbSbW5uiehpFzJt157gDSQ1ayzXlur26AGI,31000
18
+ robotcode/robot/diagnostics/namespace.py,sha256=J7Lwk4njBNlJ7C16nCB1QUZJoy8QmEqRCzfpU6-h56E,78941
19
+ robotcode/robot/diagnostics/namespace_analyzer.py,sha256=Ybj7_dPdQHtuXenonCS_eVZaeV7-_TgFIUDGB9Hjz-c,77846
20
20
  robotcode/robot/diagnostics/workspace_config.py,sha256=gyKR5z-HpnjxPAui3YujgeZqXX7RYBO_ErGVlk7vnGc,2689
21
21
  robotcode/robot/utils/__init__.py,sha256=OjNPMn_XSnfaMCyKd8Kmq6vlRt6mIGlzW4qiiD3ykUg,447
22
- robotcode/robot/utils/ast.py,sha256=m5pNr2m84lmPP4yIstq5RHjLrj0u8RsSmy6iCXBnV4g,11092
22
+ robotcode/robot/utils/ast.py,sha256=MmDs0EXa-GvGo-5Jf96alz5vDcQlksoIStvEOsqiVGk,11275
23
23
  robotcode/robot/utils/markdownformatter.py,sha256=v2p4T-d0wc0SuUJ4iLJJg1pHjgIA6dZX4l_XnZIXjXM,11690
24
24
  robotcode/robot/utils/match.py,sha256=9tG1OD9KS1v9ocWgsERSf6z_w9gAeE5LourNUYHzvTM,653
25
25
  robotcode/robot/utils/robot_path.py,sha256=Z-GVBOPA_xeD20bCJi4_AWaU0eQWvCym-YFtyRpXARE,1767
26
26
  robotcode/robot/utils/stubs.py,sha256=umugZYAyneFNgqRJBRMJPzm0u0B_TH8Sx_y-ykXnxpw,351
27
- robotcode/robot/utils/variables.py,sha256=-ldL8mRRSYYW2pwlm8IpoDeQcG6LYBqaYyV_7U3xsIc,2174
27
+ robotcode/robot/utils/variables.py,sha256=zwRiorUiHp5GTmzLrJAhiVopcJC6-RywEHArKRtYzMY,4814
28
28
  robotcode/robot/utils/visitor.py,sha256=nP3O0qh3YYuxR6S8wYJRBFfNwIVgsgohURBlrnFkRYQ,2299
29
- robotcode_robot-1.1.0.dist-info/METADATA,sha256=9clEMI2FUOz5qd4N8VmYxi5qc24c0zdMzr7zh9I0XWg,2238
30
- robotcode_robot-1.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
31
- robotcode_robot-1.1.0.dist-info/licenses/LICENSE.txt,sha256=B05uMshqTA74s-0ltyHKI6yoPfJ3zYgQbvcXfDVGFf8,10280
32
- robotcode_robot-1.1.0.dist-info/RECORD,,
29
+ robotcode_robot-1.3.0.dev1.dist-info/METADATA,sha256=dfSkzDRkqOMQfLyc0SBov-HUVpOf3J02y7ECAXXdxmI,2248
30
+ robotcode_robot-1.3.0.dev1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
31
+ robotcode_robot-1.3.0.dev1.dist-info/licenses/LICENSE.txt,sha256=B05uMshqTA74s-0ltyHKI6yoPfJ3zYgQbvcXfDVGFf8,10280
32
+ robotcode_robot-1.3.0.dev1.dist-info/RECORD,,