robotcode-robot 0.97.0__py3-none-any.whl → 0.99.0__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- robotcode/robot/__version__.py +1 -1
- robotcode/robot/diagnostics/errors.py +1 -0
- robotcode/robot/diagnostics/namespace.py +60 -6
- {robotcode_robot-0.97.0.dist-info → robotcode_robot-0.99.0.dist-info}/METADATA +2 -2
- {robotcode_robot-0.97.0.dist-info → robotcode_robot-0.99.0.dist-info}/RECORD +7 -7
- {robotcode_robot-0.97.0.dist-info → robotcode_robot-0.99.0.dist-info}/WHEEL +0 -0
- {robotcode_robot-0.97.0.dist-info → robotcode_robot-0.99.0.dist-info}/licenses/LICENSE.txt +0 -0
robotcode/robot/__version__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.
|
1
|
+
__version__ = "0.99.0"
|
@@ -10,6 +10,7 @@ class Error:
|
|
10
10
|
KEYWORD_NOT_FOUND = "KeywordNotFound"
|
11
11
|
LIBRARY_CONTAINS_NO_KEYWORDS = "LibraryContainsNoKeywords"
|
12
12
|
POSSIBLE_CIRCULAR_IMPORT = "PossibleCircularImport"
|
13
|
+
CIRCULAR_IMPORT = "CircularImport"
|
13
14
|
RESOURCE_EMPTY = "ResourceEmpty"
|
14
15
|
IMPORT_CONTAINS_ERRORS = "ImportContainsErrors"
|
15
16
|
RECURSIVE_IMPORT = "RecursiveImport"
|
@@ -44,6 +44,7 @@ from robotcode.core.lsp.types import (
|
|
44
44
|
from robotcode.core.text_document import TextDocument
|
45
45
|
from robotcode.core.uri import Uri
|
46
46
|
from robotcode.core.utils.logging import LoggingDescriptor
|
47
|
+
from robotcode.core.utils.path import same_file
|
47
48
|
|
48
49
|
from ..utils.ast import (
|
49
50
|
range_from_node,
|
@@ -1242,15 +1243,45 @@ class Namespace:
|
|
1242
1243
|
|
1243
1244
|
source = self.imports_manager.find_resource(value.name, base_dir, variables=variables)
|
1244
1245
|
|
1245
|
-
|
1246
|
+
allread_imported_resource = next(
|
1247
|
+
(
|
1248
|
+
v
|
1249
|
+
for k, v in self._resources.items()
|
1250
|
+
if v.library_doc.source is not None and same_file(v.library_doc.source, source)
|
1251
|
+
),
|
1252
|
+
None,
|
1253
|
+
)
|
1254
|
+
if allread_imported_resource is not None:
|
1246
1255
|
self._logger.debug(lambda: f"Resource '{value.name}' already imported.", context_name="import")
|
1256
|
+
if top_level:
|
1257
|
+
self.append_diagnostics(
|
1258
|
+
range=value.range,
|
1259
|
+
message=f"Resource '{value.name}' already imported.",
|
1260
|
+
severity=DiagnosticSeverity.INFORMATION,
|
1261
|
+
source=DIAGNOSTICS_SOURCE_NAME,
|
1262
|
+
related_information=(
|
1263
|
+
[
|
1264
|
+
DiagnosticRelatedInformation(
|
1265
|
+
location=Location(
|
1266
|
+
uri=str(Uri.from_path(allread_imported_resource.import_source)),
|
1267
|
+
range=allread_imported_resource.import_range,
|
1268
|
+
),
|
1269
|
+
message="",
|
1270
|
+
)
|
1271
|
+
]
|
1272
|
+
if allread_imported_resource.import_source
|
1273
|
+
else None
|
1274
|
+
),
|
1275
|
+
code=Error.RESOURCE_ALREADY_IMPORTED,
|
1276
|
+
)
|
1247
1277
|
return None
|
1248
1278
|
|
1249
|
-
if self.source
|
1279
|
+
if same_file(self.source, source):
|
1250
1280
|
if parent_import:
|
1251
1281
|
self.append_diagnostics(
|
1252
1282
|
range=parent_import.range,
|
1253
|
-
message="Possible circular import."
|
1283
|
+
message=f"Possible circular import detected, Resource file'{Path(self.source).name}' "
|
1284
|
+
"might reference itself directly or through other resource files",
|
1254
1285
|
severity=DiagnosticSeverity.INFORMATION,
|
1255
1286
|
source=DIAGNOSTICS_SOURCE_NAME,
|
1256
1287
|
related_information=(
|
@@ -1268,6 +1299,15 @@ class Namespace:
|
|
1268
1299
|
),
|
1269
1300
|
code=Error.POSSIBLE_CIRCULAR_IMPORT,
|
1270
1301
|
)
|
1302
|
+
else:
|
1303
|
+
self.append_diagnostics(
|
1304
|
+
range=value.range,
|
1305
|
+
message=f"Circular import detected, Resource file '{Path(source).name}' "
|
1306
|
+
"is importing itself",
|
1307
|
+
severity=DiagnosticSeverity.INFORMATION,
|
1308
|
+
source=DIAGNOSTICS_SOURCE_NAME,
|
1309
|
+
code=Error.CIRCULAR_IMPORT,
|
1310
|
+
)
|
1271
1311
|
else:
|
1272
1312
|
result = self._get_resource_entry(
|
1273
1313
|
value.name,
|
@@ -1453,7 +1493,7 @@ class Namespace:
|
|
1453
1493
|
allread_imported_resource = self._resources_files.get(entry.library_doc.source, None)
|
1454
1494
|
|
1455
1495
|
if allread_imported_resource is None and entry.library_doc.source != self.source:
|
1456
|
-
self._resources[entry.
|
1496
|
+
self._resources[entry.library_doc.source] = entry
|
1457
1497
|
self._resources_files[entry.library_doc.source] = entry
|
1458
1498
|
if entry.variables:
|
1459
1499
|
variables = self.get_suite_variables()
|
@@ -1515,7 +1555,14 @@ class Namespace:
|
|
1515
1555
|
(
|
1516
1556
|
e
|
1517
1557
|
for e in self._variables_imports.values()
|
1518
|
-
if
|
1558
|
+
if (
|
1559
|
+
(
|
1560
|
+
e.library_doc.source is not None
|
1561
|
+
and entry.library_doc.source is not None
|
1562
|
+
and same_file(e.library_doc.source, entry.library_doc.source)
|
1563
|
+
)
|
1564
|
+
or (e.library_doc.source is None and entry.library_doc.source is None)
|
1565
|
+
)
|
1519
1566
|
and e.alias == entry.alias
|
1520
1567
|
and e.args == entry.args
|
1521
1568
|
),
|
@@ -1580,7 +1627,14 @@ class Namespace:
|
|
1580
1627
|
(
|
1581
1628
|
e
|
1582
1629
|
for e in self._libraries.values()
|
1583
|
-
if
|
1630
|
+
if (
|
1631
|
+
(
|
1632
|
+
e.library_doc.source is not None
|
1633
|
+
and entry.library_doc.source is not None
|
1634
|
+
and same_file(e.library_doc.source, entry.library_doc.source)
|
1635
|
+
)
|
1636
|
+
or (e.library_doc.source is None and entry.library_doc.source is None)
|
1637
|
+
)
|
1584
1638
|
and e.library_doc.member_name == entry.library_doc.member_name
|
1585
1639
|
and e.alias == entry.alias
|
1586
1640
|
and e.args == entry.args
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: robotcode-robot
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.99.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.
|
28
|
+
Requires-Dist: robotcode-core==0.99.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,5 +1,5 @@
|
|
1
1
|
robotcode/robot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
robotcode/robot/__version__.py,sha256=
|
2
|
+
robotcode/robot/__version__.py,sha256=edGCadaA59-v6zz7c0FTQVXhF-FODX9Og9G1bbQCm40,23
|
3
3
|
robotcode/robot/py.typed,sha256=bWew9mHgMy8LqMu7RuqQXFXLBxh2CRx0dUbSx-3wE48,27
|
4
4
|
robotcode/robot/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
robotcode/robot/config/loader.py,sha256=tLPzeyHl4ELBIVSj2JtU2wVqlurouKTdfxHy0T5HxRE,8584
|
@@ -10,12 +10,12 @@ robotcode/robot/diagnostics/data_cache.py,sha256=Wge9HuxSUiBVMmrmlsYSMmG2ad7f3Te
|
|
10
10
|
robotcode/robot/diagnostics/diagnostics_modifier.py,sha256=3dDsu8-ET6weIvv7Sk3IQaPYFNxnXUs8Y7gpGTjfOBs,9796
|
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=
|
13
|
+
robotcode/robot/diagnostics/errors.py,sha256=vp7MAB0_t9tAnnPfXcXMpUqjV6ifzPPEsfMUEseEzr8,1852
|
14
14
|
robotcode/robot/diagnostics/imports_manager.py,sha256=jaEE7iUzEA4Rp-KXP3nfn0JyUGyp-0BMfNi8_DsQ6KE,61169
|
15
15
|
robotcode/robot/diagnostics/keyword_finder.py,sha256=dm4BA0ccp5V4C65CkSYUJUNXegSmvG24uu09T3eL6a4,17319
|
16
16
|
robotcode/robot/diagnostics/library_doc.py,sha256=VPCX7xp-0LJiYSFLO68y8MuNAMIYcnhJTIHRmWPpl30,100507
|
17
17
|
robotcode/robot/diagnostics/model_helper.py,sha256=ltuUNWwZJFBmMFXIomMmW1IP5v7tMpQSoC1YbncgoNI,30985
|
18
|
-
robotcode/robot/diagnostics/namespace.py,sha256=
|
18
|
+
robotcode/robot/diagnostics/namespace.py,sha256=uRr2TINn7xNyF9tbw_0ojnTnZj_Kr6Rid_hEz68hFP8,78197
|
19
19
|
robotcode/robot/diagnostics/namespace_analyzer.py,sha256=MgEoEGH7FvwVYoR3wA0JEGQxMWJTUUHq10NrorJV5LY,74183
|
20
20
|
robotcode/robot/diagnostics/workspace_config.py,sha256=gyKR5z-HpnjxPAui3YujgeZqXX7RYBO_ErGVlk7vnGc,2689
|
21
21
|
robotcode/robot/utils/__init__.py,sha256=OjNPMn_XSnfaMCyKd8Kmq6vlRt6mIGlzW4qiiD3ykUg,447
|
@@ -26,7 +26,7 @@ robotcode/robot/utils/robot_path.py,sha256=Z-GVBOPA_xeD20bCJi4_AWaU0eQWvCym-YFty
|
|
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.
|
30
|
-
robotcode_robot-0.
|
31
|
-
robotcode_robot-0.
|
32
|
-
robotcode_robot-0.
|
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,,
|
File without changes
|
File without changes
|