@@ -52,7 +52,7 @@ def __init__(self, identifier: str, metadata_file: Path,
5252 self .metadata_file = metadata_file
5353
5454 with open (metadata_file ) as f :
55- self .metadata = json .load (f )
55+ self .metadata : dict [ str , Any ] = json .load (f )
5656
5757 try :
5858 jsonschema .validate (self .metadata , get_schema ('bblock' ))
@@ -352,11 +352,20 @@ def load(self, metadata_url: str) -> tuple[list[str], str]:
352352 tested_locations : dict [str | Path , Any ] = {}
353353
354354 if self .local_mappings and metadata_url in self .local_mappings :
355+ metadata_url = self .local_mappings [metadata_url ]
356+ if metadata_url .startswith ('file://' ):
357+ metadata_url = metadata_url [len ('file://' ):]
358+ elif metadata_url .startswith ('https://' ) or metadata_url .startswith ('http://' ):
359+ raise ValueError (
360+ f"Local import mapping for { metadata_url } points to a remote URL, "
361+ f"which is not supported. Please use a local path instead."
362+ )
355363 metadata_path = Path (self .local_mappings [metadata_url ])
356364 for path in (metadata_path , metadata_path / 'build/register.json' , metadata_path / 'register.json' ):
357365 try :
358366 tested_locations [path ] = True
359367 if path .is_file ():
368+ print ('Using local import mapping for' , metadata_url , '(from file' , path , ')' , file = sys .stderr )
360369 imported = load_yaml (filename = path )
361370 if (isinstance (imported , dict ) and 'bblocks' in imported ) or isinstance (imported , list ):
362371 break
0 commit comments