robotcode-robot 2.6.2__tar.gz → 2.8.0__tar.gz

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.
Files changed (51) hide show
  1. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/.gitignore +4 -1
  2. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/PKG-INFO +4 -3
  3. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/pyproject.toml +2 -1
  4. robotcode_robot-2.8.0/src/robotcode/robot/__version__.py +1 -0
  5. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/config/loader.py +18 -5
  6. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/config/model.py +389 -112
  7. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/analyzer_result.py +6 -1
  8. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/data_cache.py +12 -1
  9. robotcode_robot-2.8.0/src/robotcode/robot/diagnostics/diagnostic_rules.py +87 -0
  10. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/diagnostics_modifier.py +83 -43
  11. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/document_cache_helper.py +168 -17
  12. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/entities.py +20 -4
  13. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/errors.py +7 -0
  14. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/import_resolver.py +179 -26
  15. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/imports_manager.py +584 -233
  16. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/library_doc.py +877 -162
  17. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/namespace.py +89 -32
  18. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/namespace_analyzer.py +101 -29
  19. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/project_index.py +88 -13
  20. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/scope_tree.py +2 -2
  21. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/semantic_analyzer/analyzer.py +866 -214
  22. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/semantic_analyzer/enums.py +40 -2
  23. robotcode_robot-2.8.0/src/robotcode/robot/diagnostics/semantic_analyzer/json_dump.py +364 -0
  24. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/semantic_analyzer/model.py +113 -12
  25. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/semantic_analyzer/nodes.py +55 -1
  26. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/semantic_analyzer/serialization.py +25 -11
  27. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/semantic_analyzer/variable_tokenizer.py +218 -112
  28. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/workspace_config.py +3 -0
  29. robotcode_robot-2.8.0/src/robotcode/robot/utils/markdown_docs.py +733 -0
  30. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/utils/markdownformatter.py +57 -12
  31. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/utils/match.py +13 -0
  32. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/utils/robot_patching.py +4 -0
  33. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/utils/variables.py +12 -0
  34. robotcode_robot-2.6.2/src/robotcode/robot/__version__.py +0 -1
  35. robotcode_robot-2.6.2/src/robotcode/robot/diagnostics/diagnostic_rules.py +0 -12
  36. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/README.md +0 -0
  37. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/__init__.py +0 -0
  38. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/config/__init__.py +0 -0
  39. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/config/utils.py +0 -0
  40. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/__init__.py +0 -0
  41. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/keyword_finder.py +0 -0
  42. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/model_helper.py +0 -0
  43. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/semantic_analyzer/__init__.py +0 -0
  44. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/semantic_analyzer/run_keyword.py +0 -0
  45. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/diagnostics/variable_scope.py +0 -0
  46. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/py.typed +0 -0
  47. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/utils/__init__.py +0 -0
  48. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/utils/ast.py +0 -0
  49. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/utils/robot_path.py +0 -0
  50. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/utils/stubs.py +0 -0
  51. {robotcode_robot-2.6.2 → robotcode_robot-2.8.0}/src/robotcode/robot/utils/visitor.py +0 -0
@@ -279,6 +279,9 @@ dist
279
279
  # vuepress build output
280
280
  .vuepress/dist
281
281
 
282
+ # Astro (documentation site)
283
+ docs/.astro/
284
+
282
285
  # Serverless directories
283
286
  .serverless/
284
287
 
@@ -339,7 +342,7 @@ bundled/libs
339
342
  # .agents
340
343
  .agents/
341
344
  skills-lock.json
342
- .claude
345
+ #.claude
343
346
 
344
347
  # sarif files
345
348
  /**/*.sarif.json
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: robotcode-robot
3
- Version: 2.6.2
3
+ Version: 2.8.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
@@ -20,13 +20,14 @@ Classifier: Programming Language :: Python :: 3.11
20
20
  Classifier: Programming Language :: Python :: 3.12
21
21
  Classifier: Programming Language :: Python :: 3.13
22
22
  Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Programming Language :: Python :: 3.15
23
24
  Classifier: Programming Language :: Python :: Implementation :: CPython
24
25
  Classifier: Programming Language :: Python :: Implementation :: PyPy
25
26
  Classifier: Topic :: Utilities
26
27
  Classifier: Typing :: Typed
27
28
  Requires-Python: >=3.10
28
29
  Requires-Dist: platformdirs>=4.3
29
- Requires-Dist: robotcode-core==2.6.2
30
+ Requires-Dist: robotcode-core==2.8.0
30
31
  Requires-Dist: robotframework>=5.0.0
31
32
  Requires-Dist: tomli>=1.1.0; python_version < '3.11'
32
33
  Description-Content-Type: text/markdown
@@ -19,6 +19,7 @@ classifiers = [
19
19
  "Programming Language :: Python :: 3.12",
20
20
  "Programming Language :: Python :: 3.13",
21
21
  "Programming Language :: Python :: 3.14",
22
+ "Programming Language :: Python :: 3.15",
22
23
  "Programming Language :: Python :: Implementation :: CPython",
23
24
  "Programming Language :: Python :: Implementation :: PyPy",
24
25
  "Operating System :: OS Independent",
@@ -31,7 +32,7 @@ dependencies = [
31
32
  "robotframework>=5.0.0",
32
33
  "tomli>=1.1.0; python_version < '3.11'",
33
34
  "platformdirs>=4.3",
34
- "robotcode-core==2.6.2",
35
+ "robotcode-core==2.8.0",
35
36
  ]
36
37
  dynamic = ["version"]
37
38
 
@@ -0,0 +1 @@
1
+ __version__ = "2.8.0"
@@ -1,7 +1,7 @@
1
1
  import sys
2
2
  from dataclasses import fields, is_dataclass
3
3
  from enum import Enum
4
- from pathlib import Path
4
+ from pathlib import Path, PurePath
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
@@ -213,6 +213,20 @@ def load_robot_config_from_path(
213
213
  )
214
214
 
215
215
 
216
+ _TPath = TypeVar("_TPath", bound=PurePath)
217
+
218
+
219
+ def _find_common_base(src_parents: Sequence[Sequence[_TPath]]) -> Optional[_TPath]:
220
+ """The deepest folder all sources have in common.
221
+
222
+ Sources on different drives (Windows) have nothing in common.
223
+ """
224
+ common = set.intersection(*(set(parents) for parents in src_parents))
225
+ if not common:
226
+ return None
227
+ return max(common, key=lambda path: path.parts)
228
+
229
+
216
230
  def find_project_root(
217
231
  *sources: Union[str, Path],
218
232
  root_folder: Optional[Path] = None,
@@ -228,10 +242,9 @@ def find_project_root(
228
242
 
229
243
  src_parents = [list(path.parents) + ([path] if path.is_dir() else []) for path in path_srcs]
230
244
 
231
- common_base = max(
232
- set.intersection(*(set(parents) for parents in src_parents)),
233
- key=lambda path: path.parts,
234
- )
245
+ common_base = _find_common_base(src_parents)
246
+ if common_base is None:
247
+ return None, DiscoverdBy.NOT_FOUND
235
248
 
236
249
  for directory in (common_base, *common_base.parents):
237
250
  if (directory / LOCAL_ROBOT_TOML).is_file():