Skip to content

Commit 61c614a

Browse files
authored
Merge pull request #271 from linkml/schemaview-importmap
Ensure SchemaView uses importmap argument
2 parents b97830d + d9448d1 commit 61c614a

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

linkml_runtime/utils/schemaview.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,14 +131,14 @@ class SchemaView(object):
131131
uuid: str = None
132132

133133
def __init__(self, schema: Union[str, Path, SchemaDefinition],
134-
importmap: Optional[Mapping[str, str]] = None, merge_imports: bool = False):
134+
importmap: Optional[Dict[str, str]] = None, merge_imports: bool = False, base_dir: str = None):
135135
if isinstance(schema, Path):
136136
schema = str(schema)
137137
if isinstance(schema, str):
138138
schema = load_schema_wrap(schema)
139139
self.schema = schema
140140
self.schema_map = {schema.name: schema}
141-
self.importmap = parse_import_map(importmap, self.base_dir) if self.importmap is not None else dict()
141+
self.importmap = parse_import_map(importmap, base_dir) if importmap is not None else dict()
142142
if merge_imports:
143143
self.merge_imports()
144144
self.uuid = str(uuid.uuid4())

tests/test_utils/test_schemaview.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,21 @@ def test_caching(self):
353353
view.add_class(ClassDefinition('W'))
354354
self.assertCountEqual(['Y', 'Z', 'W'], view.all_classes())
355355

356+
def test_import_map(self):
357+
"""
358+
Path to import file should be configurable
359+
"""
360+
for im in [{"core": "/no/such/file"}, {"linkml:": "/no/such/file"}]:
361+
with self.assertRaises(FileNotFoundError):
362+
view = SchemaView(SCHEMA_WITH_IMPORTS, importmap=im)
363+
view.all_classes()
364+
for im in [None, {}, {"core": "core"}]:
365+
view = SchemaView(SCHEMA_WITH_IMPORTS, importmap=im)
366+
view.all_classes()
367+
self.assertCountEqual(['kitchen_sink', 'core', 'linkml:types'], view.imports_closure())
368+
self.assertIn(ACTIVITY, view.all_classes())
369+
self.assertNotIn(ACTIVITY, view.all_classes(imports=False))
370+
356371
def test_imports(self):
357372
"""
358373
view should by default dynamically include imports chain

0 commit comments

Comments
 (0)