robotcode-robot 0.99.0__py3-none-any.whl → 0.100.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- __version__ = "0.99.0"
1
+ __version__ = "0.100.0"
@@ -5,6 +5,7 @@ from pathlib import Path
5
5
  from typing import Any, Callable, Dict, Optional, Sequence, Tuple, Type, TypeVar, Union
6
6
 
7
7
  from robotcode.core.utils.dataclasses import from_dict
8
+ from robotcode.core.utils.path import normalized_path
8
9
 
9
10
  if sys.version_info >= (3, 11):
10
11
  import tomllib
@@ -217,14 +218,13 @@ def find_project_root(
217
218
  root_folder: Optional[Path] = None,
218
219
  no_vcs: bool = False,
219
220
  ) -> Tuple[Optional[Path], DiscoverdBy]:
220
-
221
221
  if root_folder:
222
222
  return root_folder.absolute(), DiscoverdBy.COMMAND_LINE
223
223
 
224
224
  if not sources:
225
225
  sources = (str(Path.cwd().absolute()),)
226
226
 
227
- path_srcs = [Path(Path.cwd(), src).absolute() for src in sources]
227
+ path_srcs = [normalized_path(Path(Path.cwd(), src).absolute()) for src in sources]
228
228
 
229
229
  src_parents = [list(path.parents) + ([path] if path.is_dir() else []) for path in path_srcs]
230
230
 
@@ -47,7 +47,6 @@ ROBOTCODE_MARKER = "robotcode:"
47
47
 
48
48
 
49
49
  class ModifiersVisitor(Visitor):
50
-
51
50
  def __init__(self) -> None:
52
51
  super().__init__()
53
52
 
@@ -209,7 +208,7 @@ class DiagnosticsModifier:
209
208
 
210
209
  lines = self.rules_and_codes.codes.get(code)
211
210
 
212
- if lines is None or lines is not None and diagnostic.range.start.line not in lines:
211
+ if lines is None or (lines is not None and diagnostic.range.start.line not in lines):
213
212
  code = "*"
214
213
  lines = self.rules_and_codes.codes.get(code)
215
214
 
@@ -6,7 +6,9 @@ DIAGNOSTICS_SOURCE_NAME = "robotcode"
6
6
  @final
7
7
  class Error:
8
8
  VARIABLE_NOT_FOUND = "VariableNotFound"
9
+ VARIABLE_NOT_REPLACED = "VariableNotReplaced"
9
10
  ENVIRONMENT_VARIABLE_NOT_FOUND = "EnvironmentVariableNotFound"
11
+ ENVIRONMENT_VARIABLE_NOT_REPLACED = "EnvironmentVariableNotReplaced"
10
12
  KEYWORD_NOT_FOUND = "KeywordNotFound"
11
13
  LIBRARY_CONTAINS_NO_KEYWORDS = "LibraryContainsNoKeywords"
12
14
  POSSIBLE_CIRCULAR_IMPORT = "PossibleCircularImport"
@@ -322,8 +322,7 @@ class _ResourcesEntry(_ImportEntry):
322
322
  if (
323
323
  self._document is not None
324
324
  and (normalized_path(path) == normalized_path(self._document.uri.to_path()))
325
- or self._document is None
326
- ):
325
+ ) or self._document is None:
327
326
  self._invalidate()
328
327
 
329
328
  return change.type
@@ -1090,7 +1089,6 @@ class ImportsManager:
1090
1089
  name: str,
1091
1090
  base_dir: str,
1092
1091
  ) -> str:
1093
-
1094
1092
  if name in STDLIBS:
1095
1093
  result = ROBOT_LIBRARY_PACKAGE + "." + name
1096
1094
  else:
@@ -1178,7 +1176,6 @@ class ImportsManager:
1178
1176
  name: str,
1179
1177
  base_dir: str,
1180
1178
  ) -> str:
1181
-
1182
1179
  if get_robot_version() >= (5, 0):
1183
1180
  if is_variables_by_path(name):
1184
1181
  return find_file_ex(name, base_dir, "Variables")
@@ -1220,7 +1217,6 @@ class ImportsManager:
1220
1217
  meta, _source, ignore_arguments = self.get_library_meta(name, base_dir, variables)
1221
1218
 
1222
1219
  if meta is not None and not meta.has_errors:
1223
-
1224
1220
  meta_file = meta.filepath_base + ".meta"
1225
1221
  if self.data_cache.cache_data_exists(CacheSection.LIBRARY, meta_file):
1226
1222
  try:
@@ -199,7 +199,6 @@ def convert_from_rest(text: str) -> str:
199
199
 
200
200
 
201
201
  if get_robot_version() >= (6, 0):
202
-
203
202
  # monkey patch robot framework
204
203
  _old_from_name = EmbeddedArguments.from_name
205
204
 
@@ -1515,7 +1514,6 @@ __default_variables: Any = None
1515
1514
 
1516
1515
 
1517
1516
  def _get_default_variables() -> Any:
1518
-
1519
1517
  global __default_variables
1520
1518
  if __default_variables is None:
1521
1519
  __default_variables = Variables()
@@ -1622,7 +1620,6 @@ def replace_variables_scalar(
1622
1620
  variables: Optional[Dict[str, Optional[Any]]] = None,
1623
1621
  ignore_errors: bool = False,
1624
1622
  ) -> Any:
1625
-
1626
1623
  _update_env(working_dir)
1627
1624
 
1628
1625
  if contains_variable(scalar, "$@&%"):
@@ -1668,7 +1665,6 @@ def _find_library_internal(
1668
1665
  command_line_variables: Optional[Dict[str, Optional[Any]]] = None,
1669
1666
  variables: Optional[Dict[str, Optional[Any]]] = None,
1670
1667
  ) -> Tuple[str, Any]:
1671
-
1672
1668
  _update_env(working_dir)
1673
1669
 
1674
1670
  robot_variables = None
@@ -1781,7 +1777,6 @@ def get_library_doc(
1781
1777
  command_line_variables: Optional[Dict[str, Optional[Any]]] = None,
1782
1778
  variables: Optional[Dict[str, Optional[Any]]] = None,
1783
1779
  ) -> LibraryDoc:
1784
-
1785
1780
  with _std_capture() as std_capturer:
1786
1781
  import_name, robot_variables = _find_library_internal(
1787
1782
  name,
@@ -1824,7 +1819,11 @@ def get_library_doc(
1824
1819
  if module_spec is not None and module_spec.origin
1825
1820
  else import_name if is_library_by_path(import_name) else None
1826
1821
  ),
1827
- 1 if source is not None or module_spec is not None and module_spec.origin is not None else None,
1822
+ (
1823
+ 1
1824
+ if source is not None or (module_spec is not None and module_spec.origin is not None)
1825
+ else None
1826
+ ),
1828
1827
  )
1829
1828
  ],
1830
1829
  python_path=sys.path,
@@ -1868,7 +1867,7 @@ def get_library_doc(
1868
1867
  error_from_exception(
1869
1868
  e,
1870
1869
  source or module_spec.origin if module_spec is not None else None,
1871
- 1 if source is not None or module_spec is not None and module_spec.origin is not None else None,
1870
+ 1 if source is not None or (module_spec is not None and module_spec.origin is not None) else None,
1872
1871
  )
1873
1872
  )
1874
1873
 
@@ -1919,7 +1918,8 @@ def get_library_doc(
1919
1918
  source or module_spec.origin if module_spec is not None else None,
1920
1919
  (
1921
1920
  1
1922
- if source is not None or module_spec is not None and module_spec.origin is not None
1921
+ if source is not None
1922
+ or (module_spec is not None and module_spec.origin is not None)
1923
1923
  else None
1924
1924
  ),
1925
1925
  )
@@ -2119,7 +2119,11 @@ def get_library_doc(
2119
2119
  error_from_exception(
2120
2120
  e,
2121
2121
  source or module_spec.origin if module_spec is not None else None,
2122
- 1 if source is not None or module_spec is not None and module_spec.origin is not None else None,
2122
+ (
2123
+ 1
2124
+ if source is not None or (module_spec is not None and module_spec.origin is not None)
2125
+ else None
2126
+ ),
2123
2127
  )
2124
2128
  )
2125
2129
 
@@ -2138,7 +2142,6 @@ def _find_variables_internal(
2138
2142
  command_line_variables: Optional[Dict[str, Optional[Any]]] = None,
2139
2143
  variables: Optional[Dict[str, Optional[Any]]] = None,
2140
2144
  ) -> str:
2141
-
2142
2145
  _update_env(working_dir)
2143
2146
 
2144
2147
  if contains_variable(name, "$@&%"):
@@ -2209,7 +2212,6 @@ def get_variables_doc(
2209
2212
  command_line_variables: Optional[Dict[str, Optional[Any]]] = None,
2210
2213
  variables: Optional[Dict[str, Optional[Any]]] = None,
2211
2214
  ) -> VariablesDoc:
2212
-
2213
2215
  import_name: str = name
2214
2216
  stem = Path(name).stem
2215
2217
  module_spec: Optional[ModuleSpec] = None
@@ -2412,7 +2414,11 @@ def get_variables_doc(
2412
2414
  if module_spec is not None and module_spec.origin
2413
2415
  else import_name if is_variables_by_path(import_name) else None
2414
2416
  ),
2415
- 1 if source is not None or module_spec is not None and module_spec.origin is not None else None,
2417
+ (
2418
+ 1
2419
+ if source is not None or (module_spec is not None and module_spec.origin is not None)
2420
+ else None
2421
+ ),
2416
2422
  )
2417
2423
  ]
2418
2424
 
@@ -2432,7 +2438,7 @@ def get_variables_doc(
2432
2438
  if module_spec is not None and module_spec.origin
2433
2439
  else import_name if is_variables_by_path(import_name) else None
2434
2440
  ),
2435
- 1 if source is not None or module_spec is not None and module_spec.origin is not None else None,
2441
+ 1 if source is not None or (module_spec is not None and module_spec.origin is not None) else None,
2436
2442
  )
2437
2443
  ],
2438
2444
  python_path=sys.path,
@@ -2480,7 +2486,7 @@ def is_file_like(name: Optional[str]) -> bool:
2480
2486
  return False
2481
2487
 
2482
2488
  base, filename = os.path.split(name)
2483
- return name.startswith(".") or bool(base) and filename != name
2489
+ return name.startswith(".") or (bool(base) and filename != name)
2484
2490
 
2485
2491
 
2486
2492
  def iter_module_names(name: Optional[str] = None) -> Iterator[str]:
@@ -2522,10 +2528,8 @@ def iter_modules_from_python_path(
2522
2528
  if e.is_dir():
2523
2529
  for f in e.iterdir():
2524
2530
  if not f.name.startswith(("_", ".")) and (
2525
- f.is_file()
2526
- and f.suffix in ALLOWED_LIBRARY_FILE_EXTENSIONS
2527
- or f.is_dir()
2528
- and f.suffix not in NOT_WANTED_DIR_EXTENSIONS
2531
+ (f.is_file() and f.suffix in ALLOWED_LIBRARY_FILE_EXTENSIONS)
2532
+ or (f.is_dir() and f.suffix not in NOT_WANTED_DIR_EXTENSIONS)
2529
2533
  ):
2530
2534
  if f.is_dir():
2531
2535
  yield CompleteResult(f.name, CompleteResultKind.MODULE)
@@ -2586,8 +2590,7 @@ def complete_library_import(
2586
2590
  if not f.name.startswith(("_", "."))
2587
2591
  and (
2588
2592
  (f.is_file() and f.suffix in ALLOWED_LIBRARY_FILE_EXTENSIONS)
2589
- or f.is_dir()
2590
- and f.suffix not in NOT_WANTED_DIR_EXTENSIONS
2593
+ or (f.is_dir() and f.suffix not in NOT_WANTED_DIR_EXTENSIONS)
2591
2594
  )
2592
2595
  ]
2593
2596
 
@@ -2606,10 +2609,8 @@ def iter_resources_from_python_path(
2606
2609
  if e.is_dir():
2607
2610
  for f in e.iterdir():
2608
2611
  if not f.name.startswith(("_", ".")) and (
2609
- f.is_file()
2610
- and f.suffix in ALLOWED_RESOURCE_FILE_EXTENSIONS
2611
- or f.is_dir()
2612
- and f.suffix not in NOT_WANTED_DIR_EXTENSIONS
2612
+ (f.is_file() and f.suffix in ALLOWED_RESOURCE_FILE_EXTENSIONS)
2613
+ or (f.is_dir() and f.suffix not in NOT_WANTED_DIR_EXTENSIONS)
2613
2614
  ):
2614
2615
  yield CompleteResult(
2615
2616
  f.name,
@@ -2633,7 +2634,7 @@ def complete_resource_import(
2633
2634
 
2634
2635
  name = robot_variables.replace_string(name, ignore_errors=True)
2635
2636
 
2636
- if name is None or not name.startswith(".") and not name.startswith("/") and not name.startswith(os.sep):
2637
+ if name is None or (not name.startswith(".") and not name.startswith("/") and not name.startswith(os.sep)):
2637
2638
  result += list(iter_resources_from_python_path(name))
2638
2639
 
2639
2640
  if name is None or name.startswith((".", "/", os.sep)):
@@ -2702,8 +2703,7 @@ def complete_variables_import(
2702
2703
  if not f.name.startswith(("_", "."))
2703
2704
  and (
2704
2705
  (f.is_file() and f.suffix in ALLOWED_VARIABLES_FILE_EXTENSIONS)
2705
- or f.is_dir()
2706
- and f.suffix not in NOT_WANTED_DIR_EXTENSIONS
2706
+ or (f.is_dir() and f.suffix not in NOT_WANTED_DIR_EXTENSIONS)
2707
2707
  )
2708
2708
  ]
2709
2709
 
@@ -749,9 +749,8 @@ class ModelHelper:
749
749
  if argument_token_index < len(tokens) and tokens[argument_token_index].type == Token.ARGUMENT:
750
750
  argument_token = tokens[argument_token_index]
751
751
 
752
- if (
753
- argument_index < 0
754
- or argument_token is not None
752
+ if argument_index < 0 or (
753
+ argument_token is not None
755
754
  and argument_token.type == Token.ARGUMENT
756
755
  and argument_token.value.startswith(("@{", "&{"))
757
756
  and argument_token.value.endswith("}")
@@ -169,7 +169,6 @@ class VariablesVisitor(Visitor):
169
169
 
170
170
 
171
171
  class VariableVisitorBase(Visitor):
172
-
173
172
  def __init__(
174
173
  self,
175
174
  namespace: "Namespace",
@@ -320,7 +319,6 @@ class OnlyArgumentsVisitor(VariableVisitorBase):
320
319
 
321
320
 
322
321
  class BlockVariableVisitor(OnlyArgumentsVisitor):
323
-
324
322
  def visit_ExceptHeader(self, node: Statement) -> None: # noqa: N802
325
323
  variables = node.get_tokens(Token.VARIABLE)[:1]
326
324
  if variables and is_scalar_assign(variables[0].value):
@@ -1468,7 +1466,6 @@ class Namespace:
1468
1466
  parent_import: Optional[Import] = None,
1469
1467
  parent_source: Optional[str] = None,
1470
1468
  ) -> Optional[Dict[str, Any]]:
1471
-
1472
1469
  with self._logger.measure_time(
1473
1470
  lambda: f"loading imports for {self.source if top_level else source}",
1474
1471
  context_name="import",
@@ -1693,7 +1690,6 @@ class Namespace:
1693
1690
  return None
1694
1691
 
1695
1692
  def _import_default_libraries(self, variables: Optional[Dict[str, Any]] = None) -> None:
1696
-
1697
1693
  with self._logger.measure_time(lambda: f"importing default libraries for {self.source}", context_name="import"):
1698
1694
  if variables is None:
1699
1695
  variables = self.get_suite_variables()
@@ -1853,7 +1849,6 @@ class Namespace:
1853
1849
  def get_keywords(self) -> List[KeywordDoc]:
1854
1850
  with self._keywords_lock:
1855
1851
  if self._keywords is None:
1856
-
1857
1852
  i = 0
1858
1853
 
1859
1854
  self.ensure_initialized()
@@ -1880,7 +1875,6 @@ class Namespace:
1880
1875
  related_information: Optional[List[DiagnosticRelatedInformation]] = None,
1881
1876
  data: Optional[Any] = None,
1882
1877
  ) -> None:
1883
-
1884
1878
  self._diagnostics.append(
1885
1879
  Diagnostic(
1886
1880
  range,
@@ -97,7 +97,6 @@ class AnalyzerResult:
97
97
 
98
98
 
99
99
  class NamespaceAnalyzer(Visitor):
100
-
101
100
  _logger = LoggingDescriptor()
102
101
 
103
102
  def __init__(
@@ -222,7 +221,6 @@ class NamespaceAnalyzer(Visitor):
222
221
  add_to_references = True
223
222
  first_overidden_reference: Optional[VariableDefinition] = None
224
223
  if existing_var is not None:
225
-
226
224
  self._variable_references[existing_var].add(Location(self._namespace.document_uri, r))
227
225
  if existing_var not in self._overridden_variables:
228
226
  self._overridden_variables[existing_var] = var_def
@@ -375,7 +373,6 @@ class NamespaceAnalyzer(Visitor):
375
373
  def _analyze_statement_expression_variables(
376
374
  self, node: Statement, severity: DiagnosticSeverity = DiagnosticSeverity.ERROR
377
375
  ) -> None:
378
-
379
376
  for token in node.get_tokens(Token.ARGUMENT):
380
377
  self._analyze_token_variables(token, severity)
381
378
  self._analyze_token_expression_variables(token, severity)
@@ -480,9 +477,13 @@ class NamespaceAnalyzer(Visitor):
480
477
  if var.type == VariableDefinitionType.VARIABLE_NOT_FOUND:
481
478
  self._append_diagnostics(
482
479
  range=range_from_token(var_token),
483
- message=f"Variable '{var.name}' not found.",
480
+ message=(
481
+ f"Variable '{var.name}' not replaced."
482
+ if severity == DiagnosticSeverity.HINT
483
+ else f"Variable '{var.name}' not found."
484
+ ),
484
485
  severity=severity,
485
- code=Error.VARIABLE_NOT_FOUND,
486
+ code=Error.VARIABLE_NOT_REPLACED if severity == DiagnosticSeverity.HINT else Error.VARIABLE_NOT_FOUND,
486
487
  )
487
488
  else:
488
489
  if (
@@ -493,9 +494,17 @@ class NamespaceAnalyzer(Visitor):
493
494
  if os.environ.get(env_name, None) is None:
494
495
  self._append_diagnostics(
495
496
  range=range_from_token(var_token),
496
- message=f"Environment variable '{var.name}' not found.",
497
+ message=(
498
+ f"Environment variable '{var.name}' not replaced."
499
+ if severity == DiagnosticSeverity.HINT
500
+ else f"Environment variable '{var.name}' not found."
501
+ ),
497
502
  severity=severity,
498
- code=Error.ENVIRONMENT_VARIABLE_NOT_FOUND,
503
+ code=(
504
+ Error.ENVIRONMENT_VARIABLE_NOT_REPLACED
505
+ if severity == DiagnosticSeverity.HINT
506
+ else Error.ENVIRONMENT_VARIABLE_NOT_FOUND
507
+ ),
499
508
  )
500
509
 
501
510
  if var.type == VariableDefinitionType.ENVIRONMENT_VARIABLE:
@@ -535,7 +544,6 @@ class NamespaceAnalyzer(Visitor):
535
544
  related_information: Optional[List[DiagnosticRelatedInformation]] = None,
536
545
  data: Optional[Any] = None,
537
546
  ) -> None:
538
-
539
547
  self._diagnostics.append(
540
548
  Diagnostic(
541
549
  range,
@@ -572,10 +580,11 @@ class NamespaceAnalyzer(Visitor):
572
580
  analyze_run_keywords: bool = True,
573
581
  allow_variables: bool = False,
574
582
  ignore_errors_if_contains_variables: bool = False,
583
+ unescape_keyword: bool = True,
575
584
  ) -> Optional[KeywordDoc]:
576
585
  result: Optional[KeywordDoc] = None
577
586
 
578
- keyword = unescape(keyword_token.value)
587
+ keyword = unescape(keyword_token.value) if unescape_keyword else keyword_token.value
579
588
 
580
589
  try:
581
590
  lib_entry = None
@@ -639,7 +648,6 @@ class NamespaceAnalyzer(Visitor):
639
648
  for d in self._finder.multiple_keywords_result:
640
649
  self._keyword_references[d].add(Location(self._namespace.document_uri, kw_range))
641
650
  else:
642
-
643
651
  self._keyword_references[result].add(Location(self._namespace.document_uri, kw_range))
644
652
 
645
653
  if result.errors:
@@ -996,9 +1004,7 @@ class NamespaceAnalyzer(Visitor):
996
1004
  self._analyze_statement_variables(node)
997
1005
 
998
1006
  self._analyze_keyword_call(
999
- node,
1000
- keyword_token,
1001
- [e for e in node.get_tokens(Token.ARGUMENT)],
1007
+ node, keyword_token, [e for e in node.get_tokens(Token.ARGUMENT)], unescape_keyword=False
1002
1008
  )
1003
1009
 
1004
1010
  if not self._current_testcase_or_keyword_name:
@@ -1101,7 +1107,6 @@ class NamespaceAnalyzer(Visitor):
1101
1107
  name_token = node.get_token(Token.KEYWORD_NAME)
1102
1108
 
1103
1109
  if name_token is not None and name_token.value:
1104
-
1105
1110
  for variable_token in filter(
1106
1111
  lambda e: e.type == Token.VARIABLE,
1107
1112
  tokenize_variables(name_token, identifiers="$", ignore_errors=True),
@@ -1459,7 +1464,6 @@ class NamespaceAnalyzer(Visitor):
1459
1464
  if get_robot_version() >= (7, 0):
1460
1465
 
1461
1466
  def visit_ReturnSetting(self, node: Statement) -> None: # noqa: N802
1462
-
1463
1467
  def _handler() -> None:
1464
1468
  self._analyze_statement_variables(node)
1465
1469
 
@@ -1524,7 +1528,6 @@ class NamespaceAnalyzer(Visitor):
1524
1528
  break
1525
1529
 
1526
1530
  def visit_ResourceImport(self, node: ResourceImport) -> None: # noqa: N802
1527
-
1528
1531
  if get_robot_version() >= (6, 1):
1529
1532
  self._check_import_name(node.name, node, "Resource")
1530
1533
 
@@ -1636,7 +1639,6 @@ class NamespaceAnalyzer(Visitor):
1636
1639
  self,
1637
1640
  to: Token,
1638
1641
  ) -> Iterator[Tuple[Token, Optional[VariableDefinition]]]:
1639
-
1640
1642
  def exception_handler(e: BaseException, t: Token) -> None:
1641
1643
  self._append_diagnostics(
1642
1644
  range_from_token(t),
@@ -1687,7 +1689,6 @@ class NamespaceAnalyzer(Visitor):
1687
1689
  yield sub_token_or_var, var_def
1688
1690
 
1689
1691
  def _iter_variables_from_token(self, token: Token) -> Iterator[Tuple[Token, VariableDefinition]]:
1690
-
1691
1692
  if token.type == Token.VARIABLE and token.value.endswith("="):
1692
1693
  match = search_variable(token.value, ignore_errors=True)
1693
1694
  if not match.is_assign(allow_assign_mark=True):
@@ -205,7 +205,7 @@ def get_tokens_at_position(node: Statement, position: Position, include_end: boo
205
205
  return [
206
206
  t
207
207
  for t in node.tokens
208
- if position.is_in_range(range := range_from_token(t), include_end) or include_end and range.end == position
208
+ if position.is_in_range(range := range_from_token(t), include_end) or (include_end and range.end == position)
209
209
  ]
210
210
 
211
211
 
@@ -214,7 +214,7 @@ def iter_nodes_at_position(node: ast.AST, position: Position, include_end: bool
214
214
  yield node
215
215
 
216
216
  for n in iter_nodes(node):
217
- if position.is_in_range(range := range_from_node(n), include_end) or include_end and range.end == position:
217
+ if position.is_in_range(range := range_from_node(n), include_end) or (include_end and range.end == position):
218
218
  yield n
219
219
 
220
220
 
@@ -276,7 +276,7 @@ class ListFormatter(Formatter):
276
276
  _strip_lines = False
277
277
 
278
278
  def _handles(self, line: str) -> bool:
279
- return bool(line.strip().startswith("- ") or line.startswith(" ") and self._lines)
279
+ return bool(line.strip().startswith("- ") or (line.startswith(" ") and self._lines))
280
280
 
281
281
  def format(self, lines: List[str]) -> str:
282
282
  items = ["- %s" % _line_formatter.format(line) for line in self._combine_lines(lines)]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: robotcode-robot
3
- Version: 0.99.0
3
+ Version: 0.100.0
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
@@ -25,7 +25,7 @@ Classifier: Topic :: Utilities
25
25
  Classifier: Typing :: Typed
26
26
  Requires-Python: >=3.8
27
27
  Requires-Dist: platformdirs<4.4.0,>=3.2.0
28
- Requires-Dist: robotcode-core==0.99.0
28
+ Requires-Dist: robotcode-core==0.100.0
29
29
  Requires-Dist: robotframework>=4.1.0
30
30
  Requires-Dist: tomli>=1.1.0; python_version < '3.11'
31
31
  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=edGCadaA59-v6zz7c0FTQVXhF-FODX9Og9G1bbQCm40,23
2
+ robotcode/robot/__version__.py,sha256=hBw9-oaz7x5BBjFEByYUTbik88urWGwnI3lE91SfgJ8,24
3
3
  robotcode/robot/py.typed,sha256=bWew9mHgMy8LqMu7RuqQXFXLBxh2CRx0dUbSx-3wE48,27
4
4
  robotcode/robot/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- robotcode/robot/config/loader.py,sha256=tLPzeyHl4ELBIVSj2JtU2wVqlurouKTdfxHy0T5HxRE,8584
5
+ robotcode/robot/config/loader.py,sha256=qrP810HNMDpqhXopWa0dOa0Wq_zQfVctsNYKY6sLKGI,8654
6
6
  robotcode/robot/config/model.py,sha256=sgr6-4_E06g-yIXW41Z-NtIXZ_7JMmR5WvUD7kTUqu4,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=Wge9HuxSUiBVMmrmlsYSMmG2ad7f3Texwox0Dm8lN7U,2969
10
- robotcode/robot/diagnostics/diagnostics_modifier.py,sha256=3dDsu8-ET6weIvv7Sk3IQaPYFNxnXUs8Y7gpGTjfOBs,9796
10
+ robotcode/robot/diagnostics/diagnostics_modifier.py,sha256=6zJdXBd6g1QM12XJbsHd8gNNysECMnWlne3q8XNgBDo,9797
11
11
  robotcode/robot/diagnostics/document_cache_helper.py,sha256=n903UxVXM4Uq4fPxN5s-dugQAKcWUwf4Nw4q0CJV7aw,23902
12
12
  robotcode/robot/diagnostics/entities.py,sha256=b4u2yQN8MDg90RoTMaW7iLogiDNwOAtK180KCB94RfE,10970
13
- robotcode/robot/diagnostics/errors.py,sha256=vp7MAB0_t9tAnnPfXcXMpUqjV6ifzPPEsfMUEseEzr8,1852
14
- robotcode/robot/diagnostics/imports_manager.py,sha256=jaEE7iUzEA4Rp-KXP3nfn0JyUGyp-0BMfNi8_DsQ6KE,61169
13
+ robotcode/robot/diagnostics/errors.py,sha256=RGnE4KCgNxQ58hNMBuAD3Q-qWqZVWZSZsCnhBGtQScw,1975
14
+ robotcode/robot/diagnostics/imports_manager.py,sha256=nrvK6W1KHYbfmHRyerHbY2s-9p9uVjRoJwa7PHc8rmg,61146
15
15
  robotcode/robot/diagnostics/keyword_finder.py,sha256=dm4BA0ccp5V4C65CkSYUJUNXegSmvG24uu09T3eL6a4,17319
16
- robotcode/robot/diagnostics/library_doc.py,sha256=VPCX7xp-0LJiYSFLO68y8MuNAMIYcnhJTIHRmWPpl30,100507
17
- robotcode/robot/diagnostics/model_helper.py,sha256=ltuUNWwZJFBmMFXIomMmW1IP5v7tMpQSoC1YbncgoNI,30985
18
- robotcode/robot/diagnostics/namespace.py,sha256=uRr2TINn7xNyF9tbw_0ojnTnZj_Kr6Rid_hEz68hFP8,78197
19
- robotcode/robot/diagnostics/namespace_analyzer.py,sha256=MgEoEGH7FvwVYoR3wA0JEGQxMWJTUUHq10NrorJV5LY,74183
16
+ robotcode/robot/diagnostics/library_doc.py,sha256=i9IsxqIwY7D3M7gaVbBd7stLAwgiH_s3EHG16rrfazM,100772
17
+ robotcode/robot/diagnostics/model_helper.py,sha256=nq78e6TQ9Anvz_VSLW560lRTKrRjBsh7NoWttEvJ2hw,30973
18
+ robotcode/robot/diagnostics/namespace.py,sha256=OofIoNOxw653NcMH_EBDbP6cQ6s_LH0fVD3NVOLniOM,78191
19
+ robotcode/robot/diagnostics/namespace_analyzer.py,sha256=ETNiDIAurot6uxSCs8LZd-KQyvDY1tFOXDWY3rZp_ic,74894
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=eqAVVquoRbMw3WvGmK6FnkUjZzAxHAitVjqK-vx-HSY,10764
23
- robotcode/robot/utils/markdownformatter.py,sha256=SdHFfK9OdBnljWMP5r5Jy2behtHy-_Myd7GV4hiH-kI,11688
22
+ robotcode/robot/utils/ast.py,sha256=lIQ_L1WG6Q2-yDOUEL1OjoGjrHzw62Md90BySzmXlPU,10768
23
+ robotcode/robot/utils/markdownformatter.py,sha256=lLJ-sFIavlzBbd3un329Xh1HmwqcX86AiSZA_m30xgQ,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
27
  robotcode/robot/utils/variables.py,sha256=-ldL8mRRSYYW2pwlm8IpoDeQcG6LYBqaYyV_7U3xsIc,2174
28
28
  robotcode/robot/utils/visitor.py,sha256=nP3O0qh3YYuxR6S8wYJRBFfNwIVgsgohURBlrnFkRYQ,2299
29
- robotcode_robot-0.99.0.dist-info/METADATA,sha256=EoIldqp50xLr4Xk7anxZqU9o7R0OiMy4yaIMJ79I0UI,2214
30
- robotcode_robot-0.99.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
31
- robotcode_robot-0.99.0.dist-info/licenses/LICENSE.txt,sha256=B05uMshqTA74s-0ltyHKI6yoPfJ3zYgQbvcXfDVGFf8,10280
32
- robotcode_robot-0.99.0.dist-info/RECORD,,
29
+ robotcode_robot-0.100.0.dist-info/METADATA,sha256=U97hEtGNHLSq0KO_6huMfdl2Pdo54iiBxCurpnGZ2EA,2216
30
+ robotcode_robot-0.100.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
31
+ robotcode_robot-0.100.0.dist-info/licenses/LICENSE.txt,sha256=B05uMshqTA74s-0ltyHKI6yoPfJ3zYgQbvcXfDVGFf8,10280
32
+ robotcode_robot-0.100.0.dist-info/RECORD,,