robotcode-robot 0.93.1__py3-none-any.whl → 0.94.0__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/document_cache_helper.py +11 -6
- robotcode/robot/diagnostics/entities.py +2 -2
- robotcode/robot/diagnostics/errors.py +6 -1
- robotcode/robot/diagnostics/imports_manager.py +77 -37
- robotcode/robot/diagnostics/keyword_finder.py +458 -0
- robotcode/robot/diagnostics/library_doc.py +20 -14
- robotcode/robot/diagnostics/model_helper.py +42 -27
- robotcode/robot/diagnostics/namespace.py +142 -552
- robotcode/robot/diagnostics/namespace_analyzer.py +952 -462
- robotcode/robot/utils/markdownformatter.py +8 -11
- robotcode/robot/utils/visitor.py +7 -13
- {robotcode_robot-0.93.1.dist-info → robotcode_robot-0.94.0.dist-info}/METADATA +2 -2
- robotcode_robot-0.94.0.dist-info/RECORD +31 -0
- robotcode_robot-0.93.1.dist-info/RECORD +0 -30
- {robotcode_robot-0.93.1.dist-info → robotcode_robot-0.94.0.dist-info}/WHEEL +0 -0
- {robotcode_robot-0.93.1.dist-info → robotcode_robot-0.94.0.dist-info}/licenses/LICENSE.txt +0 -0
@@ -1,6 +1,5 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
-
import functools
|
4
3
|
import itertools
|
5
4
|
import re
|
6
5
|
from abc import ABC, abstractmethod
|
@@ -224,7 +223,7 @@ _ # end of italic
|
|
224
223
|
("*", self._format_bold),
|
225
224
|
("_", self._format_italic),
|
226
225
|
("``", self._format_code),
|
227
|
-
("",
|
226
|
+
("", LinkFormatter().format_link),
|
228
227
|
]
|
229
228
|
|
230
229
|
def format(self, line: str) -> str:
|
@@ -249,9 +248,10 @@ _ # end of italic
|
|
249
248
|
return self._code.sub("\\1`\\3`", line)
|
250
249
|
|
251
250
|
|
252
|
-
|
253
|
-
|
251
|
+
_line_formatter = LineFormatter()
|
252
|
+
|
254
253
|
|
254
|
+
class PreformattedFormatter(Formatter):
|
255
255
|
def _handles(self, line: str) -> bool:
|
256
256
|
return line.startswith("| ") or line == "|"
|
257
257
|
|
@@ -261,8 +261,6 @@ class PreformattedFormatter(Formatter):
|
|
261
261
|
|
262
262
|
|
263
263
|
class ParagraphFormatter(Formatter):
|
264
|
-
_format_line = functools.partial(LineFormatter().format)
|
265
|
-
|
266
264
|
def __init__(self, other_formatters: List[Formatter]) -> None:
|
267
265
|
super().__init__()
|
268
266
|
self._other_formatters = other_formatters
|
@@ -271,18 +269,17 @@ class ParagraphFormatter(Formatter):
|
|
271
269
|
return not any(other.handles(line) for other in self._other_formatters)
|
272
270
|
|
273
271
|
def format(self, lines: List[str]) -> str:
|
274
|
-
return
|
272
|
+
return _line_formatter.format(" ".join(lines)) + "\n\n"
|
275
273
|
|
276
274
|
|
277
275
|
class ListFormatter(Formatter):
|
278
276
|
_strip_lines = False
|
279
|
-
_format_item = functools.partial(LineFormatter().format)
|
280
277
|
|
281
278
|
def _handles(self, line: str) -> bool:
|
282
279
|
return bool(line.strip().startswith("- ") or line.startswith(" ") and self._lines)
|
283
280
|
|
284
281
|
def format(self, lines: List[str]) -> str:
|
285
|
-
items = ["- %s" %
|
282
|
+
items = ["- %s" % _line_formatter.format(line) for line in self._combine_lines(lines)]
|
286
283
|
return "\n".join(items) + "\n\n"
|
287
284
|
|
288
285
|
def _combine_lines(self, lines: List[str]) -> Iterator[str]:
|
@@ -311,7 +308,7 @@ class RulerFormatter(SingleLineFormatter):
|
|
311
308
|
class TableFormatter(Formatter):
|
312
309
|
_table_line = re.compile(r"^\| (.* |)\|$")
|
313
310
|
_line_splitter = re.compile(r" \|(?= )")
|
314
|
-
_format_cell_content =
|
311
|
+
_format_cell_content = _line_formatter.format
|
315
312
|
|
316
313
|
def _handles(self, line: str) -> bool:
|
317
314
|
return self._table_line.match(line) is not None
|
@@ -351,4 +348,4 @@ class TableFormatter(Formatter):
|
|
351
348
|
if content.startswith("=") and content.endswith("="):
|
352
349
|
content = content[1:-1]
|
353
350
|
|
354
|
-
return f" {
|
351
|
+
return f" {_line_formatter.format(content).strip()} "
|
robotcode/robot/utils/visitor.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
import ast
|
2
2
|
from abc import ABC
|
3
|
-
from collections import defaultdict
|
4
3
|
from typing import (
|
5
4
|
Any,
|
6
5
|
AsyncIterator,
|
@@ -9,7 +8,6 @@ from typing import (
|
|
9
8
|
Iterator,
|
10
9
|
Optional,
|
11
10
|
Type,
|
12
|
-
Union,
|
13
11
|
)
|
14
12
|
|
15
13
|
from robot.parsing.model.statements import Statement
|
@@ -65,17 +63,12 @@ async def iter_nodes(node: ast.AST) -> AsyncIterator[ast.AST]:
|
|
65
63
|
yield n
|
66
64
|
|
67
65
|
|
68
|
-
class _NotSet:
|
69
|
-
pass
|
70
|
-
|
71
|
-
|
72
66
|
class VisitorFinder(ABC):
|
73
|
-
|
74
|
-
__cls_finder_cache__: Dict[Type[Any], Union[Callable[..., Any], None, _NotSet]]
|
67
|
+
__cls_finder_cache__: Dict[Type[Any], Optional[Callable[..., Any]]]
|
75
68
|
|
76
69
|
def __init_subclass__(cls, **kwargs: Any) -> None:
|
77
70
|
super().__init_subclass__(**kwargs)
|
78
|
-
cls.__cls_finder_cache__ =
|
71
|
+
cls.__cls_finder_cache__ = {}
|
79
72
|
|
80
73
|
@classmethod
|
81
74
|
def __find_visitor(cls, node_cls: Type[Any]) -> Optional[Callable[..., Any]]:
|
@@ -93,10 +86,11 @@ class VisitorFinder(ABC):
|
|
93
86
|
|
94
87
|
@classmethod
|
95
88
|
def _find_visitor(cls, node_cls: Type[Any]) -> Optional[Callable[..., Any]]:
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
89
|
+
if node_cls in cls.__cls_finder_cache__:
|
90
|
+
return cls.__cls_finder_cache__[node_cls]
|
91
|
+
|
92
|
+
result = cls.__cls_finder_cache__[node_cls] = cls.__find_visitor(node_cls)
|
93
|
+
return result
|
100
94
|
|
101
95
|
|
102
96
|
class Visitor(VisitorFinder):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: robotcode-robot
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.94.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
|
@@ -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.
|
29
|
+
Requires-Dist: robotcode-core==0.94.0
|
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,31 @@
|
|
1
|
+
robotcode/robot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
+
robotcode/robot/__version__.py,sha256=BbCpQB0IaKmq_fOtysTb_iVtvqbH-vHS1DoS1eLd4w8,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/diagnostics_modifier.py,sha256=3dDsu8-ET6weIvv7Sk3IQaPYFNxnXUs8Y7gpGTjfOBs,9796
|
10
|
+
robotcode/robot/diagnostics/document_cache_helper.py,sha256=n903UxVXM4Uq4fPxN5s-dugQAKcWUwf4Nw4q0CJV7aw,23902
|
11
|
+
robotcode/robot/diagnostics/entities.py,sha256=sNXKBdJEy7elkzc0P2qszHQQosbmcyWrCw3Za4-LSCE,11013
|
12
|
+
robotcode/robot/diagnostics/errors.py,sha256=QpvimvU_-c13i6mNrOiIavr2BeClHThRk8Rh7zIbA1s,1813
|
13
|
+
robotcode/robot/diagnostics/imports_manager.py,sha256=somlZbrkXasgU6KZmnf9Zfm4_3nqXEbi8Er5kSO-48Y,58999
|
14
|
+
robotcode/robot/diagnostics/keyword_finder.py,sha256=KQKZN0lf4D8qRERRx1JUeEdSHFgRfs0wEcu0XH2xJ-A,16809
|
15
|
+
robotcode/robot/diagnostics/library_doc.py,sha256=2qPU1MeD4uiUAipV0U3JUxQAKhr9TH_WwDM_rDdMZuw,98862
|
16
|
+
robotcode/robot/diagnostics/model_helper.py,sha256=9JGZN_dBXMPP06WsAIDz5Q_Fg3F3Rq1n-7Rc72etivo,30864
|
17
|
+
robotcode/robot/diagnostics/namespace.py,sha256=_KNsoQS5UJB6Laa8Ic0FrQZjxngxmaKO36KJ260qyug,76054
|
18
|
+
robotcode/robot/diagnostics/namespace_analyzer.py,sha256=z1AyGQXMoq1up3LrPSLWJHHNUI_j_iwIj9ucLJcg7gU,71399
|
19
|
+
robotcode/robot/diagnostics/workspace_config.py,sha256=3SoewUj_LZB1Ki5hXM8oxQpJr6vyiog66SUw-ibODSA,2478
|
20
|
+
robotcode/robot/utils/__init__.py,sha256=OjNPMn_XSnfaMCyKd8Kmq6vlRt6mIGlzW4qiiD3ykUg,447
|
21
|
+
robotcode/robot/utils/ast.py,sha256=_ob36KHFY776n9dhljn0xAWVoUDb7pV86fPW40vIirY,11266
|
22
|
+
robotcode/robot/utils/markdownformatter.py,sha256=Cj4NjComTcNZf8uuezvtBbZqPMLjS237RknMopZYETk,11418
|
23
|
+
robotcode/robot/utils/match.py,sha256=ofyfXgrvVddl7a064Dk5Kiqp3a-n_6gTIgqDbL3E80Q,632
|
24
|
+
robotcode/robot/utils/robot_path.py,sha256=qKBh1cEnReBBLKkWu4gB9EzM-scAwE4xJc1m6v2LRN0,1786
|
25
|
+
robotcode/robot/utils/stubs.py,sha256=6-DMI_CQVJHDgG13t-zINKGCRb_Q7MQPm0_AkfhAEvE,748
|
26
|
+
robotcode/robot/utils/variables.py,sha256=fEl8S37lb_mD4hn2MZRAlkiuLGBjAOeZVK0r2o2CfPw,742
|
27
|
+
robotcode/robot/utils/visitor.py,sha256=V3ZtpzrCilKpLQfDXUcjapd2uGq12XxbHppNPOl_Jns,3080
|
28
|
+
robotcode_robot-0.94.0.dist-info/METADATA,sha256=ZC2K7aAay0qTvzWb38ymbXwS1Ufd8OvfKZdICK2A1uw,2240
|
29
|
+
robotcode_robot-0.94.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
30
|
+
robotcode_robot-0.94.0.dist-info/licenses/LICENSE.txt,sha256=B05uMshqTA74s-0ltyHKI6yoPfJ3zYgQbvcXfDVGFf8,10280
|
31
|
+
robotcode_robot-0.94.0.dist-info/RECORD,,
|
@@ -1,30 +0,0 @@
|
|
1
|
-
robotcode/robot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
robotcode/robot/__version__.py,sha256=mOkfvVAX57vJFL_uDFmwMpNYuSUZPjaG1EtokdevKqg,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/diagnostics_modifier.py,sha256=3dDsu8-ET6weIvv7Sk3IQaPYFNxnXUs8Y7gpGTjfOBs,9796
|
10
|
-
robotcode/robot/diagnostics/document_cache_helper.py,sha256=MlOPXC3mUVjNB2rHn5UJK7NnUPa8S4mE3qojILOi_Mk,23756
|
11
|
-
robotcode/robot/diagnostics/entities.py,sha256=dWZFSrAuW9wzW9AEDSr-stseexLbJIYfdScfAbBj4FY,11002
|
12
|
-
robotcode/robot/diagnostics/errors.py,sha256=HCE0h0_ui1tx-6pJHs0r4s09ZHmArYwKUo-_lBl9K-4,1600
|
13
|
-
robotcode/robot/diagnostics/imports_manager.py,sha256=3j_HwOxkdT_ulUPBWcaGjSr0mwiORyBCBoRwBKFIw3g,57265
|
14
|
-
robotcode/robot/diagnostics/library_doc.py,sha256=MSZ3Mx1knIKRCEzBFDioBogmlSqtit_PRlg7muHjrVY,98560
|
15
|
-
robotcode/robot/diagnostics/model_helper.py,sha256=_5ixKKMrb-nY-uvV8_WjJ1rlNlz7gT7kHM5NYi_hjVg,30232
|
16
|
-
robotcode/robot/diagnostics/namespace.py,sha256=lH5RReu-fW0g8CZBh9LKWHItCZh14D-XFvFdYUvBoDg,90151
|
17
|
-
robotcode/robot/diagnostics/namespace_analyzer.py,sha256=3eC1xEBm_foCnqoHk8Cj6O11UXOHcHxWnfuKP8M5KIQ,51369
|
18
|
-
robotcode/robot/diagnostics/workspace_config.py,sha256=3SoewUj_LZB1Ki5hXM8oxQpJr6vyiog66SUw-ibODSA,2478
|
19
|
-
robotcode/robot/utils/__init__.py,sha256=OjNPMn_XSnfaMCyKd8Kmq6vlRt6mIGlzW4qiiD3ykUg,447
|
20
|
-
robotcode/robot/utils/ast.py,sha256=_ob36KHFY776n9dhljn0xAWVoUDb7pV86fPW40vIirY,11266
|
21
|
-
robotcode/robot/utils/markdownformatter.py,sha256=0XZZ5wDU2yfzIuShjG7h79PgzMaQJ501WH4YRFcG1VM,11615
|
22
|
-
robotcode/robot/utils/match.py,sha256=ofyfXgrvVddl7a064Dk5Kiqp3a-n_6gTIgqDbL3E80Q,632
|
23
|
-
robotcode/robot/utils/robot_path.py,sha256=qKBh1cEnReBBLKkWu4gB9EzM-scAwE4xJc1m6v2LRN0,1786
|
24
|
-
robotcode/robot/utils/stubs.py,sha256=6-DMI_CQVJHDgG13t-zINKGCRb_Q7MQPm0_AkfhAEvE,748
|
25
|
-
robotcode/robot/utils/variables.py,sha256=fEl8S37lb_mD4hn2MZRAlkiuLGBjAOeZVK0r2o2CfPw,742
|
26
|
-
robotcode/robot/utils/visitor.py,sha256=uYLqEhGPmzWKWI3SSrmCaYMwtKvNShvbiPZ4b3FavX8,3241
|
27
|
-
robotcode_robot-0.93.1.dist-info/METADATA,sha256=20VDpGZB3N7wVZTMGnHL0ouck8jWgBVeXsd3WCr56sc,2240
|
28
|
-
robotcode_robot-0.93.1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
29
|
-
robotcode_robot-0.93.1.dist-info/licenses/LICENSE.txt,sha256=B05uMshqTA74s-0ltyHKI6yoPfJ3zYgQbvcXfDVGFf8,10280
|
30
|
-
robotcode_robot-0.93.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|