robotcode-robot 0.95.0__py3-none-any.whl → 0.95.2__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/diagnostics/entities.py +8 -8
- robotcode/robot/diagnostics/imports_manager.py +3 -10
- robotcode/robot/diagnostics/keyword_finder.py +40 -39
- robotcode/robot/diagnostics/library_doc.py +197 -204
- robotcode/robot/diagnostics/model_helper.py +3 -3
- robotcode/robot/diagnostics/namespace.py +2 -7
- robotcode/robot/diagnostics/namespace_analyzer.py +8 -5
- robotcode/robot/utils/ast.py +42 -60
- robotcode/robot/utils/markdownformatter.py +11 -11
- robotcode/robot/utils/match.py +6 -5
- robotcode/robot/utils/robot_path.py +2 -2
- robotcode/robot/utils/stubs.py +1 -25
- robotcode/robot/utils/variables.py +5 -5
- robotcode/robot/utils/visitor.py +2 -28
- {robotcode_robot-0.95.0.dist-info → robotcode_robot-0.95.2.dist-info}/METADATA +2 -2
- robotcode_robot-0.95.2.dist-info/RECORD +32 -0
- robotcode_robot-0.95.0.dist-info/RECORD +0 -32
- {robotcode_robot-0.95.0.dist-info → robotcode_robot-0.95.2.dist-info}/WHEEL +0 -0
- {robotcode_robot-0.95.0.dist-info → robotcode_robot-0.95.2.dist-info}/licenses/LICENSE.txt +0 -0
@@ -1,4 +1,5 @@
|
|
1
1
|
import ast
|
2
|
+
import functools
|
2
3
|
import itertools
|
3
4
|
import os
|
4
5
|
import token as python_token
|
@@ -70,7 +71,7 @@ from .entities import (
|
|
70
71
|
)
|
71
72
|
from .errors import DIAGNOSTICS_SOURCE_NAME, Error
|
72
73
|
from .keyword_finder import KeywordFinder
|
73
|
-
from .library_doc import KeywordDoc, is_embedded_keyword
|
74
|
+
from .library_doc import KeywordDoc, LibraryDoc, is_embedded_keyword
|
74
75
|
from .model_helper import ModelHelper
|
75
76
|
|
76
77
|
if TYPE_CHECKING:
|
@@ -697,7 +698,7 @@ class NamespaceAnalyzer(Visitor):
|
|
697
698
|
code=Error.RESERVED_KEYWORD,
|
698
699
|
)
|
699
700
|
|
700
|
-
if get_robot_version() >= (6, 0) and result.is_resource_keyword and result.is_private
|
701
|
+
if get_robot_version() >= (6, 0) and result.is_resource_keyword and result.is_private:
|
701
702
|
if self._namespace.source != result.source:
|
702
703
|
self._append_diagnostics(
|
703
704
|
range=kw_range,
|
@@ -1042,12 +1043,14 @@ class NamespaceAnalyzer(Visitor):
|
|
1042
1043
|
if name_token is not None and name_token.value:
|
1043
1044
|
self._analyze_token_variables(name_token, DiagnosticSeverity.HINT)
|
1044
1045
|
|
1046
|
+
@functools.cached_property
|
1047
|
+
def _namespace_lib_doc(self) -> LibraryDoc:
|
1048
|
+
return self._namespace.get_library_doc()
|
1049
|
+
|
1045
1050
|
def visit_Keyword(self, node: Keyword) -> None: # noqa: N802
|
1046
1051
|
if node.name:
|
1047
1052
|
name_token = node.header.get_token(Token.KEYWORD_NAME)
|
1048
|
-
self._current_keyword_doc = ModelHelper.get_keyword_definition_at_token(
|
1049
|
-
self._namespace.get_library_doc(), name_token
|
1050
|
-
)
|
1053
|
+
self._current_keyword_doc = ModelHelper.get_keyword_definition_at_token(self._namespace_lib_doc, name_token)
|
1051
1054
|
|
1052
1055
|
if self._current_keyword_doc is not None and self._current_keyword_doc not in self._keyword_references:
|
1053
1056
|
self._keyword_references[self._current_keyword_doc] = set()
|
robotcode/robot/utils/ast.py
CHANGED
@@ -38,13 +38,6 @@ def cached_isinstance(obj: Any, *expected_types: Type[_T]) -> TypeGuard[Union[_T
|
|
38
38
|
return False
|
39
39
|
|
40
40
|
|
41
|
-
# def cached_isinstance(obj: Any, *expected_types: type) -> bool:
|
42
|
-
# try:
|
43
|
-
# return isinstance(obj, expected_types)
|
44
|
-
# except TypeError:
|
45
|
-
# return False
|
46
|
-
|
47
|
-
|
48
41
|
def iter_nodes(node: ast.AST, descendants: bool = True) -> Iterator[ast.AST]:
|
49
42
|
for _field, value in ast.iter_fields(node):
|
50
43
|
if cached_isinstance(value, list):
|
@@ -87,23 +80,23 @@ class FirstAndLastRealStatementFinder(Visitor):
|
|
87
80
|
self.last_statement = statement
|
88
81
|
|
89
82
|
|
83
|
+
_NON_DATA_TOKENS = {
|
84
|
+
Token.SEPARATOR,
|
85
|
+
Token.CONTINUATION,
|
86
|
+
Token.EOL,
|
87
|
+
Token.EOS,
|
88
|
+
}
|
89
|
+
|
90
|
+
_NON_DATA_TOKENS_WITH_COMMENT = {*_NON_DATA_TOKENS, Token.COMMENT}
|
91
|
+
|
92
|
+
|
90
93
|
def _get_non_data_range_from_node(
|
91
94
|
node: ast.AST, only_start: bool = False, allow_comments: bool = False
|
92
95
|
) -> Optional[Range]:
|
96
|
+
non_data_tokens = _NON_DATA_TOKENS_WITH_COMMENT if allow_comments else _NON_DATA_TOKENS
|
93
97
|
if cached_isinstance(node, Statement) and node.tokens:
|
94
98
|
start_token = next(
|
95
|
-
(
|
96
|
-
v
|
97
|
-
for v in node.tokens
|
98
|
-
if v.type
|
99
|
-
not in [
|
100
|
-
Token.SEPARATOR,
|
101
|
-
*([] if allow_comments else [Token.COMMENT]),
|
102
|
-
Token.CONTINUATION,
|
103
|
-
Token.EOL,
|
104
|
-
Token.EOS,
|
105
|
-
]
|
106
|
-
),
|
99
|
+
(v for v in node.tokens if v.type not in non_data_tokens),
|
107
100
|
None,
|
108
101
|
)
|
109
102
|
|
@@ -113,18 +106,7 @@ def _get_non_data_range_from_node(
|
|
113
106
|
end_tokens = node.tokens
|
114
107
|
|
115
108
|
end_token = next(
|
116
|
-
(
|
117
|
-
v
|
118
|
-
for v in reversed(end_tokens)
|
119
|
-
if v.type
|
120
|
-
not in [
|
121
|
-
Token.SEPARATOR,
|
122
|
-
*([] if allow_comments else [Token.COMMENT]),
|
123
|
-
Token.CONTINUATION,
|
124
|
-
Token.EOL,
|
125
|
-
Token.EOS,
|
126
|
-
]
|
127
|
-
),
|
109
|
+
(v for v in reversed(end_tokens) if v.type not in non_data_tokens),
|
128
110
|
None,
|
129
111
|
)
|
130
112
|
if start_token is not None and end_token is not None:
|
@@ -289,35 +271,35 @@ def tokenize_variables(
|
|
289
271
|
return _tokenize_variables(token, variables)
|
290
272
|
|
291
273
|
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
274
|
+
def _tokenize_variables_before7(token: Token, variables: Any) -> Iterator[Token]:
|
275
|
+
lineno = token.lineno
|
276
|
+
col_offset = token.col_offset
|
277
|
+
remaining = ""
|
278
|
+
for before, variable, remaining in variables:
|
279
|
+
if before:
|
280
|
+
yield Token(token.type, before, lineno, col_offset)
|
281
|
+
col_offset += len(before)
|
282
|
+
yield Token(Token.VARIABLE, variable, lineno, col_offset)
|
283
|
+
col_offset += len(variable)
|
284
|
+
if remaining:
|
285
|
+
yield Token(token.type, remaining, lineno, col_offset)
|
286
|
+
|
287
|
+
|
288
|
+
def _tokenize_variables_v7(token: Token, variables: Any) -> Iterator[Token]:
|
289
|
+
lineno = token.lineno
|
290
|
+
col_offset = token.col_offset
|
291
|
+
after = ""
|
292
|
+
for match in variables:
|
293
|
+
if match.before:
|
294
|
+
yield Token(token.type, match.before, lineno, col_offset)
|
295
|
+
yield Token(Token.VARIABLE, match.match, lineno, col_offset + match.start)
|
296
|
+
col_offset += match.end
|
297
|
+
after = match.after
|
298
|
+
if after:
|
299
|
+
yield Token(token.type, after, lineno, col_offset)
|
300
|
+
|
301
|
+
|
302
|
+
_tokenize_variables = _tokenize_variables_before7 if get_robot_version() < (7, 0) else _tokenize_variables_v7
|
321
303
|
|
322
304
|
|
323
305
|
def iter_over_keyword_names_and_owners(
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
3
3
|
import itertools
|
4
4
|
import re
|
5
5
|
from abc import ABC, abstractmethod
|
6
|
-
from typing import Any, Callable, Iterator, List, Optional, Tuple
|
6
|
+
from typing import Any, Callable, Final, Iterator, List, Optional, Tuple
|
7
7
|
|
8
8
|
|
9
9
|
class Formatter(ABC):
|
@@ -87,7 +87,7 @@ class SingleLineFormatter(Formatter):
|
|
87
87
|
|
88
88
|
|
89
89
|
class HeaderFormatter(SingleLineFormatter):
|
90
|
-
_regex = re.compile(r"^(={1,5})\s+(\S.*?)\s+\1$")
|
90
|
+
_regex: Final["re.Pattern[str]"] = re.compile(r"^(={1,5})\s+(\S.*?)\s+\1$")
|
91
91
|
|
92
92
|
def match(self, line: str) -> Optional[re.Match[str]]:
|
93
93
|
return self._regex.match(line)
|
@@ -103,8 +103,8 @@ class HeaderFormatter(SingleLineFormatter):
|
|
103
103
|
|
104
104
|
class LinkFormatter:
|
105
105
|
_image_exts = (".jpg", ".jpeg", ".png", ".gif", ".bmp", ".svg")
|
106
|
-
_link = re.compile(r"\[(.+?\|.*?)\]")
|
107
|
-
_url = re.compile(
|
106
|
+
_link: Final["re.Pattern[str]"] = re.compile(r"\[(.+?\|.*?)\]")
|
107
|
+
_url: Final["re.Pattern[str]"] = re.compile(
|
108
108
|
r"""
|
109
109
|
((^|\ ) ["'(\[{]*) # begin of line or space and opt. any char "'([{
|
110
110
|
([a-z][\w+-.]*://[^\s|]+?) # url
|
@@ -177,7 +177,7 @@ class LinkFormatter:
|
|
177
177
|
|
178
178
|
|
179
179
|
class LineFormatter:
|
180
|
-
_bold = re.compile(
|
180
|
+
_bold: Final["re.Pattern[str]"] = re.compile(
|
181
181
|
r"""
|
182
182
|
( # prefix (group 1)
|
183
183
|
(^|\ ) # begin of line or space
|
@@ -193,7 +193,7 @@ class LineFormatter:
|
|
193
193
|
""",
|
194
194
|
re.VERBOSE,
|
195
195
|
)
|
196
|
-
_italic = re.compile(
|
196
|
+
_italic: Final["re.Pattern[str]"] = re.compile(
|
197
197
|
r"""
|
198
198
|
( (^|\ ) ["'(]* ) # begin of line or space and opt. any char "'(
|
199
199
|
_ # start of italic
|
@@ -203,7 +203,7 @@ _ # end of italic
|
|
203
203
|
""",
|
204
204
|
re.VERBOSE,
|
205
205
|
)
|
206
|
-
_code = re.compile(
|
206
|
+
_code: Final["re.Pattern[str]"] = re.compile(
|
207
207
|
r"""
|
208
208
|
( (^|\ ) ["'(]* ) # same as above with _ changed to ``
|
209
209
|
``
|
@@ -296,7 +296,7 @@ class ListFormatter(Formatter):
|
|
296
296
|
|
297
297
|
|
298
298
|
class RulerFormatter(SingleLineFormatter):
|
299
|
-
regex = re.compile("^-{3,}$")
|
299
|
+
regex: Final["re.Pattern[str]"] = re.compile("^-{3,}$")
|
300
300
|
|
301
301
|
def match(self, line: str) -> Optional[re.Match[str]]:
|
302
302
|
return self.regex.match(line)
|
@@ -306,9 +306,9 @@ class RulerFormatter(SingleLineFormatter):
|
|
306
306
|
|
307
307
|
|
308
308
|
class TableFormatter(Formatter):
|
309
|
-
_table_line = re.compile(r"^\| (.* |)\|$")
|
310
|
-
_line_splitter = re.compile(r" \|(?= )")
|
311
|
-
_format_cell_content = _line_formatter.format
|
309
|
+
_table_line: Final["re.Pattern[str]"] = re.compile(r"^\| (.* |)\|$")
|
310
|
+
_line_splitter: Final["re.Pattern[str]"] = re.compile(r" \|(?= )")
|
311
|
+
_format_cell_content: Final[Callable[[str], str]] = _line_formatter.format
|
312
312
|
|
313
313
|
def _handles(self, line: str) -> bool:
|
314
314
|
return self._table_line.match(line) is not None
|
robotcode/robot/utils/match.py
CHANGED
@@ -2,16 +2,17 @@ from functools import lru_cache
|
|
2
2
|
|
3
3
|
_transform_table = str.maketrans("", "", "_ ")
|
4
4
|
|
5
|
+
_transform_table_namespace = str.maketrans("", "", " ")
|
5
6
|
|
6
|
-
|
7
|
+
|
8
|
+
@lru_cache(maxsize=8192)
|
7
9
|
def normalize(text: str) -> str:
|
8
|
-
|
9
|
-
return text.casefold().translate(_transform_table)
|
10
|
+
return text.translate(_transform_table).casefold()
|
10
11
|
|
11
12
|
|
12
|
-
@lru_cache(maxsize=
|
13
|
+
@lru_cache(maxsize=8192)
|
13
14
|
def normalize_namespace(text: str) -> str:
|
14
|
-
return text.
|
15
|
+
return text.translate(_transform_table_namespace).casefold()
|
15
16
|
|
16
17
|
|
17
18
|
def eq(str1: str, str2: str) -> bool:
|
@@ -6,7 +6,7 @@ from typing import Optional, Union
|
|
6
6
|
|
7
7
|
def find_file_ex(
|
8
8
|
path: Union[Path, "PathLike[str]", str],
|
9
|
-
basedir: Union[Path, PathLike[str], str] = ".",
|
9
|
+
basedir: Union[Path, "PathLike[str]", str] = ".",
|
10
10
|
file_type: Optional[str] = None,
|
11
11
|
) -> str:
|
12
12
|
from robot.errors import DataError
|
@@ -33,7 +33,7 @@ def find_file_ex(
|
|
33
33
|
|
34
34
|
def find_file(
|
35
35
|
path: Union[Path, "PathLike[str]", str],
|
36
|
-
basedir: Union[Path, PathLike[str], str] = ".",
|
36
|
+
basedir: Union[Path, "PathLike[str]", str] = ".",
|
37
37
|
file_type: Optional[str] = None,
|
38
38
|
) -> str:
|
39
39
|
return find_file_ex(path, basedir, file_type)
|
robotcode/robot/utils/stubs.py
CHANGED
@@ -1,30 +1,6 @@
|
|
1
|
-
from
|
1
|
+
from typing import Any, Dict, Iterator, List, Protocol, Set
|
2
2
|
|
3
|
-
from typing import Any, Dict, Iterator, List, Optional, Protocol, Set, runtime_checkable
|
4
3
|
|
5
|
-
|
6
|
-
@runtime_checkable
|
7
|
-
class HasError(Protocol):
|
8
|
-
error: Optional[str]
|
9
|
-
|
10
|
-
|
11
|
-
@runtime_checkable
|
12
|
-
class HasErrors(Protocol):
|
13
|
-
errors: Optional[List[str]]
|
14
|
-
|
15
|
-
|
16
|
-
@runtime_checkable
|
17
|
-
class HeaderAndBodyBlock(Protocol):
|
18
|
-
header: Any
|
19
|
-
body: List[Any]
|
20
|
-
|
21
|
-
|
22
|
-
@runtime_checkable
|
23
|
-
class BodyBlock(Protocol):
|
24
|
-
body: List[Any]
|
25
|
-
|
26
|
-
|
27
|
-
@runtime_checkable
|
28
4
|
class Languages(Protocol):
|
29
5
|
languages: List[Any]
|
30
6
|
headers: Dict[str, str]
|
@@ -47,26 +47,26 @@ BUILTIN_VARIABLES = [
|
|
47
47
|
]
|
48
48
|
|
49
49
|
|
50
|
-
@functools.lru_cache(maxsize=
|
50
|
+
@functools.lru_cache(maxsize=8192)
|
51
51
|
def contains_variable(string: str, identifiers: str = "$@&") -> bool:
|
52
52
|
return cast(bool, robot_contains_variable(string, identifiers))
|
53
53
|
|
54
54
|
|
55
|
-
@functools.lru_cache(maxsize=
|
55
|
+
@functools.lru_cache(maxsize=8192)
|
56
56
|
def is_scalar_assign(string: str, allow_assign_mark: bool = False) -> bool:
|
57
57
|
return cast(bool, robot_is_scalar_assign(string, allow_assign_mark))
|
58
58
|
|
59
59
|
|
60
|
-
@functools.lru_cache(maxsize=
|
60
|
+
@functools.lru_cache(maxsize=8192)
|
61
61
|
def is_variable(string: str, identifiers: str = "$@&") -> bool:
|
62
62
|
return cast(bool, robot_is_variable(string, identifiers))
|
63
63
|
|
64
64
|
|
65
|
-
@functools.lru_cache(maxsize=
|
65
|
+
@functools.lru_cache(maxsize=8192)
|
66
66
|
def search_variable(string: str, identifiers: str = "$@&%*", ignore_errors: bool = False) -> RobotVariableMatch:
|
67
67
|
return robot_search_variable(string, identifiers, ignore_errors)
|
68
68
|
|
69
69
|
|
70
|
-
@functools.lru_cache(maxsize=
|
70
|
+
@functools.lru_cache(maxsize=8192)
|
71
71
|
def split_from_equals(string: str) -> Tuple[str, Optional[str]]:
|
72
72
|
return cast(Tuple[str, Optional[str]], robot_split_from_equals(string))
|
robotcode/robot/utils/visitor.py
CHANGED
@@ -2,8 +2,8 @@ import ast
|
|
2
2
|
from abc import ABC
|
3
3
|
from typing import (
|
4
4
|
Any,
|
5
|
-
AsyncIterator,
|
6
5
|
Callable,
|
6
|
+
ClassVar,
|
7
7
|
Dict,
|
8
8
|
Iterator,
|
9
9
|
Optional,
|
@@ -37,34 +37,8 @@ def iter_field_values(node: ast.AST) -> Iterator[Any]:
|
|
37
37
|
pass
|
38
38
|
|
39
39
|
|
40
|
-
def iter_child_nodes(node: ast.AST) -> Iterator[ast.AST]:
|
41
|
-
for _name, field in iter_fields(node):
|
42
|
-
if isinstance(field, ast.AST):
|
43
|
-
yield field
|
44
|
-
elif isinstance(field, list):
|
45
|
-
for item in field:
|
46
|
-
if isinstance(item, ast.AST):
|
47
|
-
yield item
|
48
|
-
|
49
|
-
|
50
|
-
async def iter_nodes(node: ast.AST) -> AsyncIterator[ast.AST]:
|
51
|
-
for _name, value in iter_fields(node):
|
52
|
-
if isinstance(value, list):
|
53
|
-
for item in value:
|
54
|
-
if isinstance(item, ast.AST):
|
55
|
-
yield item
|
56
|
-
async for n in iter_nodes(item):
|
57
|
-
yield n
|
58
|
-
|
59
|
-
elif isinstance(value, ast.AST):
|
60
|
-
yield value
|
61
|
-
|
62
|
-
async for n in iter_nodes(value):
|
63
|
-
yield n
|
64
|
-
|
65
|
-
|
66
40
|
class VisitorFinder(ABC):
|
67
|
-
__cls_finder_cache__: Dict[Type[Any], Optional[Callable[..., Any]]]
|
41
|
+
__cls_finder_cache__: ClassVar[Dict[Type[Any], Optional[Callable[..., Any]]]]
|
68
42
|
|
69
43
|
def __init_subclass__(cls, **kwargs: Any) -> None:
|
70
44
|
super().__init_subclass__(**kwargs)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: robotcode-robot
|
3
|
-
Version: 0.95.
|
3
|
+
Version: 0.95.2
|
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.2.0,>=3.2.0
|
29
|
-
Requires-Dist: robotcode-core==0.95.
|
29
|
+
Requires-Dist: robotcode-core==0.95.2
|
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
|
@@ -0,0 +1,32 @@
|
|
1
|
+
robotcode/robot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
+
robotcode/robot/__version__.py,sha256=MtUGhM3YznPa3gIwYy1bSEC9CMiXlkQf9fXXldoBPnM,23
|
3
|
+
robotcode/robot/py.typed,sha256=bWew9mHgMy8LqMu7RuqQXFXLBxh2CRx0dUbSx-3wE48,27
|
4
|
+
robotcode/robot/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
+
robotcode/robot/config/loader.py,sha256=bNJwr_XdCoUzpG2ag0BH33PIfiCwn0GMxn7q_Sw3zOk,8103
|
6
|
+
robotcode/robot/config/model.py,sha256=sgr6-4_E06g-yIXW41Z-NtIXZ_7JMmR5WvUD7kTUqu4,89106
|
7
|
+
robotcode/robot/config/utils.py,sha256=xY-LH31BidWzonpvSrle-4HvKrp02I7IRqU2JwlL4Ls,2931
|
8
|
+
robotcode/robot/diagnostics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
|
+
robotcode/robot/diagnostics/data_cache.py,sha256=Wge9HuxSUiBVMmrmlsYSMmG2ad7f3Texwox0Dm8lN7U,2969
|
10
|
+
robotcode/robot/diagnostics/diagnostics_modifier.py,sha256=3dDsu8-ET6weIvv7Sk3IQaPYFNxnXUs8Y7gpGTjfOBs,9796
|
11
|
+
robotcode/robot/diagnostics/document_cache_helper.py,sha256=n903UxVXM4Uq4fPxN5s-dugQAKcWUwf4Nw4q0CJV7aw,23902
|
12
|
+
robotcode/robot/diagnostics/entities.py,sha256=b4u2yQN8MDg90RoTMaW7iLogiDNwOAtK180KCB94RfE,10970
|
13
|
+
robotcode/robot/diagnostics/errors.py,sha256=vRH7HiZOfQIC-L7ys2Bj9ULYxLpUH7I03qJRSkEx08k,1813
|
14
|
+
robotcode/robot/diagnostics/imports_manager.py,sha256=_IA_aDdylTGXul4FLoN4bmUBwPjiRqpaSszulZcl45M,58886
|
15
|
+
robotcode/robot/diagnostics/keyword_finder.py,sha256=dm4BA0ccp5V4C65CkSYUJUNXegSmvG24uu09T3eL6a4,17319
|
16
|
+
robotcode/robot/diagnostics/library_doc.py,sha256=ndDh5AVqCKWLmp1raB-9HBE3e-ptkkXInfAZyiU7lDA,100428
|
17
|
+
robotcode/robot/diagnostics/model_helper.py,sha256=ltuUNWwZJFBmMFXIomMmW1IP5v7tMpQSoC1YbncgoNI,30985
|
18
|
+
robotcode/robot/diagnostics/namespace.py,sha256=lJOkaS_yCp8SVhURqh5NqAsm394s0cHZUMQwVeh9nno,75159
|
19
|
+
robotcode/robot/diagnostics/namespace_analyzer.py,sha256=MgEoEGH7FvwVYoR3wA0JEGQxMWJTUUHq10NrorJV5LY,74183
|
20
|
+
robotcode/robot/diagnostics/workspace_config.py,sha256=3SoewUj_LZB1Ki5hXM8oxQpJr6vyiog66SUw-ibODSA,2478
|
21
|
+
robotcode/robot/utils/__init__.py,sha256=OjNPMn_XSnfaMCyKd8Kmq6vlRt6mIGlzW4qiiD3ykUg,447
|
22
|
+
robotcode/robot/utils/ast.py,sha256=eqAVVquoRbMw3WvGmK6FnkUjZzAxHAitVjqK-vx-HSY,10764
|
23
|
+
robotcode/robot/utils/markdownformatter.py,sha256=SdHFfK9OdBnljWMP5r5Jy2behtHy-_Myd7GV4hiH-kI,11688
|
24
|
+
robotcode/robot/utils/match.py,sha256=9tG1OD9KS1v9ocWgsERSf6z_w9gAeE5LourNUYHzvTM,653
|
25
|
+
robotcode/robot/utils/robot_path.py,sha256=Z-GVBOPA_xeD20bCJi4_AWaU0eQWvCym-YFtyRpXARE,1767
|
26
|
+
robotcode/robot/utils/stubs.py,sha256=umugZYAyneFNgqRJBRMJPzm0u0B_TH8Sx_y-ykXnxpw,351
|
27
|
+
robotcode/robot/utils/variables.py,sha256=-ldL8mRRSYYW2pwlm8IpoDeQcG6LYBqaYyV_7U3xsIc,2174
|
28
|
+
robotcode/robot/utils/visitor.py,sha256=nP3O0qh3YYuxR6S8wYJRBFfNwIVgsgohURBlrnFkRYQ,2299
|
29
|
+
robotcode_robot-0.95.2.dist-info/METADATA,sha256=df4ORmop30qwHqbcpO1sXHaYH-F5Bb4hhzfaM8rGOwg,2240
|
30
|
+
robotcode_robot-0.95.2.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
31
|
+
robotcode_robot-0.95.2.dist-info/licenses/LICENSE.txt,sha256=B05uMshqTA74s-0ltyHKI6yoPfJ3zYgQbvcXfDVGFf8,10280
|
32
|
+
robotcode_robot-0.95.2.dist-info/RECORD,,
|
@@ -1,32 +0,0 @@
|
|
1
|
-
robotcode/robot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
robotcode/robot/__version__.py,sha256=1KBvo1_4ig2ZeMfCvFApYtfDll8Ysfu6h45ByRERz1E,23
|
3
|
-
robotcode/robot/py.typed,sha256=bWew9mHgMy8LqMu7RuqQXFXLBxh2CRx0dUbSx-3wE48,27
|
4
|
-
robotcode/robot/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
-
robotcode/robot/config/loader.py,sha256=bNJwr_XdCoUzpG2ag0BH33PIfiCwn0GMxn7q_Sw3zOk,8103
|
6
|
-
robotcode/robot/config/model.py,sha256=sgr6-4_E06g-yIXW41Z-NtIXZ_7JMmR5WvUD7kTUqu4,89106
|
7
|
-
robotcode/robot/config/utils.py,sha256=xY-LH31BidWzonpvSrle-4HvKrp02I7IRqU2JwlL4Ls,2931
|
8
|
-
robotcode/robot/diagnostics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
|
-
robotcode/robot/diagnostics/data_cache.py,sha256=Wge9HuxSUiBVMmrmlsYSMmG2ad7f3Texwox0Dm8lN7U,2969
|
10
|
-
robotcode/robot/diagnostics/diagnostics_modifier.py,sha256=3dDsu8-ET6weIvv7Sk3IQaPYFNxnXUs8Y7gpGTjfOBs,9796
|
11
|
-
robotcode/robot/diagnostics/document_cache_helper.py,sha256=n903UxVXM4Uq4fPxN5s-dugQAKcWUwf4Nw4q0CJV7aw,23902
|
12
|
-
robotcode/robot/diagnostics/entities.py,sha256=dA5jTt1pSCLvWWC_DkHPjfBZmnS80dVt3gZptASR3Uo,11008
|
13
|
-
robotcode/robot/diagnostics/errors.py,sha256=vRH7HiZOfQIC-L7ys2Bj9ULYxLpUH7I03qJRSkEx08k,1813
|
14
|
-
robotcode/robot/diagnostics/imports_manager.py,sha256=lmwg_wYFZLNx_o0u856_5JihXHPLBei2vfr6Puhlm-c,59127
|
15
|
-
robotcode/robot/diagnostics/keyword_finder.py,sha256=O3EHA93ZGqNI-TocvSYAmWz7INWakhhfBeiXq57wepM,17421
|
16
|
-
robotcode/robot/diagnostics/library_doc.py,sha256=6j_7qy5O-dFAbVmwjn_sDkBHrFvghJwu0fvPcLhJnMw,100901
|
17
|
-
robotcode/robot/diagnostics/model_helper.py,sha256=-dRXt__coz-m2HaMLTqgQEUF6ylH0QZxj5hUv2DBJyQ,31017
|
18
|
-
robotcode/robot/diagnostics/namespace.py,sha256=Y6HDBKIYyCc3qCg2TT-orB9mASd-Ii4fkZuIpcFQMbk,75417
|
19
|
-
robotcode/robot/diagnostics/namespace_analyzer.py,sha256=NlvfAEYH_GyE1ZQ1JH9vR9yPfki3Xmw9TyNEc-B0mtM,74067
|
20
|
-
robotcode/robot/diagnostics/workspace_config.py,sha256=3SoewUj_LZB1Ki5hXM8oxQpJr6vyiog66SUw-ibODSA,2478
|
21
|
-
robotcode/robot/utils/__init__.py,sha256=OjNPMn_XSnfaMCyKd8Kmq6vlRt6mIGlzW4qiiD3ykUg,447
|
22
|
-
robotcode/robot/utils/ast.py,sha256=_ob36KHFY776n9dhljn0xAWVoUDb7pV86fPW40vIirY,11266
|
23
|
-
robotcode/robot/utils/markdownformatter.py,sha256=Cj4NjComTcNZf8uuezvtBbZqPMLjS237RknMopZYETk,11418
|
24
|
-
robotcode/robot/utils/match.py,sha256=Vtz1ueT6DIZZ4hKyXgvTg1A3x2puBwHgvjw1oAYBn5w,632
|
25
|
-
robotcode/robot/utils/robot_path.py,sha256=6XfNjnIVQREwgUR7r0eUMHgLnduXKTpHWy2Dvs_MbPo,1763
|
26
|
-
robotcode/robot/utils/stubs.py,sha256=6-DMI_CQVJHDgG13t-zINKGCRb_Q7MQPm0_AkfhAEvE,748
|
27
|
-
robotcode/robot/utils/variables.py,sha256=XNPUDpghGy_f_Fne9lJ4OST-kFi-72Nrr0yJUu6f_Oc,2169
|
28
|
-
robotcode/robot/utils/visitor.py,sha256=V3ZtpzrCilKpLQfDXUcjapd2uGq12XxbHppNPOl_Jns,3080
|
29
|
-
robotcode_robot-0.95.0.dist-info/METADATA,sha256=ucoFRI1dSKtBhbXI3KtxfGXyEbIXRUHxBoe7LURhGVY,2240
|
30
|
-
robotcode_robot-0.95.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
31
|
-
robotcode_robot-0.95.0.dist-info/licenses/LICENSE.txt,sha256=B05uMshqTA74s-0ltyHKI6yoPfJ3zYgQbvcXfDVGFf8,10280
|
32
|
-
robotcode_robot-0.95.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|