robotcode-robot 1.2.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.
- robotcode/robot/__version__.py +1 -1
- robotcode/robot/config/model.py +2 -2
- robotcode/robot/diagnostics/entities.py +1 -44
- robotcode/robot/diagnostics/errors.py +1 -0
- robotcode/robot/diagnostics/model_helper.py +4 -4
- robotcode/robot/diagnostics/namespace.py +2 -2
- robotcode/robot/diagnostics/namespace_analyzer.py +74 -32
- robotcode/robot/utils/ast.py +17 -17
- robotcode/robot/utils/variables.py +84 -4
- {robotcode_robot-1.2.0.dist-info → robotcode_robot-1.3.0.dev1.dist-info}/METADATA +2 -2
- {robotcode_robot-1.2.0.dist-info → robotcode_robot-1.3.0.dev1.dist-info}/RECORD +13 -13
- {robotcode_robot-1.2.0.dist-info → robotcode_robot-1.3.0.dev1.dist-info}/WHEEL +0 -0
- {robotcode_robot-1.2.0.dist-info → robotcode_robot-1.3.0.dev1.dist-info}/licenses/LICENSE.txt +0 -0
robotcode/robot/__version__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "1.
|
1
|
+
__version__ = "1.3.0-dev1"
|
robotcode/robot/config/model.py
CHANGED
@@ -2371,11 +2371,11 @@ class RobotConfig(RobotExtendBaseProfile):
|
|
2371
2371
|
|
2372
2372
|
Examples:
|
2373
2373
|
```toml
|
2374
|
-
|
2374
|
+
default-profiles = "default"
|
2375
2375
|
```
|
2376
2376
|
|
2377
2377
|
```toml
|
2378
|
-
|
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
|
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"
|
@@ -253,7 +253,7 @@ class ModelHelper:
|
|
253
253
|
|
254
254
|
return lib_entry, kw_namespace
|
255
255
|
|
256
|
-
|
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
|
-
|
504
|
-
if
|
505
|
-
base_name, _ =
|
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
|
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
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
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
|
-
|
197
|
-
|
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(
|
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(
|
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
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
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=
|
1245
|
-
name_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(
|
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
|
-
|
1751
|
-
if
|
1752
|
-
base_name, _ =
|
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(
|
robotcode/robot/utils/ast.py
CHANGED
@@ -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
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
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) ->
|
67
|
-
return
|
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.
|
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.
|
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=
|
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=
|
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=
|
13
|
-
robotcode/robot/diagnostics/errors.py,sha256=
|
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=
|
18
|
-
robotcode/robot/diagnostics/namespace.py,sha256=
|
19
|
-
robotcode/robot/diagnostics/namespace_analyzer.py,sha256=
|
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=
|
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
|
27
|
+
robotcode/robot/utils/variables.py,sha256=zwRiorUiHp5GTmzLrJAhiVopcJC6-RywEHArKRtYzMY,4814
|
28
28
|
robotcode/robot/utils/visitor.py,sha256=nP3O0qh3YYuxR6S8wYJRBFfNwIVgsgohURBlrnFkRYQ,2299
|
29
|
-
robotcode_robot-1.
|
30
|
-
robotcode_robot-1.
|
31
|
-
robotcode_robot-1.
|
32
|
-
robotcode_robot-1.
|
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,,
|
File without changes
|
{robotcode_robot-1.2.0.dist-info → robotcode_robot-1.3.0.dev1.dist-info}/licenses/LICENSE.txt
RENAMED
File without changes
|