robotcode-robot 0.95.0__py3-none-any.whl → 0.95.2__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -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()
@@ -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
- if get_robot_version() < (7, 0):
293
-
294
- def _tokenize_variables(token: Token, variables: Any) -> Iterator[Token]:
295
- lineno = token.lineno
296
- col_offset = token.col_offset
297
- remaining = ""
298
- for before, variable, remaining in variables:
299
- if before:
300
- yield Token(token.type, before, lineno, col_offset)
301
- col_offset += len(before)
302
- yield Token(Token.VARIABLE, variable, lineno, col_offset)
303
- col_offset += len(variable)
304
- if remaining:
305
- yield Token(token.type, remaining, lineno, col_offset)
306
-
307
- else:
308
-
309
- def _tokenize_variables(token: Token, variables: Any) -> Iterator[Token]:
310
- lineno = token.lineno
311
- col_offset = token.col_offset
312
- after = ""
313
- for match in variables:
314
- if match.before:
315
- yield Token(token.type, match.before, lineno, col_offset)
316
- yield Token(Token.VARIABLE, match.match, lineno, col_offset + match.start)
317
- col_offset += match.end
318
- after = match.after
319
- if after:
320
- yield Token(token.type, after, lineno, col_offset)
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
@@ -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
- @lru_cache(maxsize=None)
7
+
8
+ @lru_cache(maxsize=8192)
7
9
  def normalize(text: str) -> str:
8
- # return text.lower().replace("_", "").replace(" ", "")
9
- return text.casefold().translate(_transform_table)
10
+ return text.translate(_transform_table).casefold()
10
11
 
11
12
 
12
- @lru_cache(maxsize=None)
13
+ @lru_cache(maxsize=8192)
13
14
  def normalize_namespace(text: str) -> str:
14
- return text.lower().replace(" ", "")
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)
@@ -1,30 +1,6 @@
1
- from __future__ import annotations
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=512)
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=512)
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=512)
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=512)
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=512)
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))
@@ -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.0
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.0
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,,