Skip to content

Commit 45d8f9f

Browse files
committed
fix(robot): resolve relative library paths in namespace cache validation
Namespace cache validation failed for files importing libraries via relative paths (e.g. ../../resources/libraries/common.py), causing unnecessary full rebuilds on every warm start. Two issues fixed: - validate_namespace_meta now passes the source file's directory as base_dir when falling back to get_library_meta/get_variables_meta, so relative paths resolve correctly - get_library_meta and get_variables_meta initialize import_name before the try block to avoid UnboundLocalError when find_library or find_variables fails
1 parent 1d4ba6b commit 45d8f9f

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

packages/robot/src/robotcode/robot/diagnostics/imports_manager.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -821,13 +821,14 @@ def validate_namespace_meta(self, meta: NamespaceMetaData) -> bool:
821821
return False
822822

823823
# Level 2: dependency checks — direct comparison, no hashing
824+
base_dir = os.path.dirname(meta.source)
824825
for key, saved_value in meta.dependency_fingerprints.items():
825826
if key.startswith("lib:"):
826827
lib_name = key[4:]
827828
try:
828829
lib_meta = self.get_cached_library_meta(lib_name)
829830
if lib_meta is None:
830-
lib_meta, _, _ = self.get_library_meta(lib_name)
831+
lib_meta, _, _ = self.get_library_meta(lib_name, base_dir=base_dir)
831832
if lib_meta is None or lib_meta != saved_value:
832833
return False
833834
except (SystemExit, KeyboardInterrupt):
@@ -851,7 +852,7 @@ def validate_namespace_meta(self, meta: NamespaceMetaData) -> bool:
851852
try:
852853
var_meta = self.get_cached_variables_meta(var_name)
853854
if var_meta is None:
854-
var_meta, _ = self.get_variables_meta(var_name)
855+
var_meta, _ = self.get_variables_meta(var_name, base_dir=base_dir)
855856
if var_meta is None or var_meta != saved_value:
856857
return False
857858
except (SystemExit, KeyboardInterrupt):
@@ -1204,6 +1205,7 @@ def get_library_meta(
12041205
base_dir: str = ".",
12051206
variables: Optional[Dict[str, Optional[Any]]] = None,
12061207
) -> Tuple[Optional[LibraryMetaData], str, bool]:
1208+
import_name = name
12071209
ignore_arguments = False
12081210
try:
12091211
import_name = self.find_library(name, base_dir=base_dir, variables=variables)
@@ -1278,6 +1280,7 @@ def get_variables_meta(
12781280
resolve_variables: bool = True,
12791281
resolve_command_line_vars: bool = True,
12801282
) -> Tuple[Optional[LibraryMetaData], str]:
1283+
import_name = name
12811284
try:
12821285
import_name = self.find_variables(
12831286
name,

0 commit comments

Comments
 (0)