Skip to content

Commit 412e1ad

Browse files
authored
Merge pull request #238 from bioimage-io/parent
Add tests for build_model with parent field
2 parents ba1543b + 1dbe211 commit 412e1ad

File tree

4 files changed

+23
-16
lines changed

4 files changed

+23
-16
lines changed

bioimageio/core/build_spec/build_model.py

-1
Original file line numberDiff line numberDiff line change
@@ -891,7 +891,6 @@ def build_model(
891891
kwargs["maintainers"] = [model_spec.raw_nodes.Maintainer(**m) for m in maintainers]
892892

893893
if parent is not None:
894-
assert len(parent) == 2
895894
kwargs["parent"] = parent
896895

897896
if training_data is not None:

bioimageio/core/resource_io/nodes.py

+5
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ class CollectionEntry(Node, collection_raw_nodes.CollectionEntry):
7373
source: URI = missing
7474

7575

76+
@dataclass
77+
class LinkedDataset(Node, model_raw_nodes.LinkedDataset):
78+
pass
79+
80+
7681
@dataclass
7782
class ModelParent(Node, model_raw_nodes.ModelParent):
7883
pass

bioimageio/core/resource_io/utils.py

+5-15
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,6 @@ def transform_LocalImportableModule(self, node: raw_nodes.LocalImportableModule)
6767

6868
return nodes.ImportedSource(factory=getattr(module, node.callable_name))
6969

70-
@staticmethod
71-
def transform_ImportableModule(node):
72-
raise RuntimeError(
73-
"Encountered raw_nodes.ImportableModule in _SourceNodeTransformer. Apply _UriNodeTransformer first!"
74-
)
75-
7670
@staticmethod
7771
def transform_ResolvedImportableSourceFile(node: raw_nodes.ResolvedImportableSourceFile) -> nodes.ImportedSource:
7872
module_path = resolve_source(node.source_file)
@@ -83,12 +77,6 @@ def transform_ResolvedImportableSourceFile(node: raw_nodes.ResolvedImportableSou
8377
importlib_spec.loader.exec_module(dep) # type: ignore # todo: possible to use "loader.load_module"?
8478
return nodes.ImportedSource(factory=getattr(dep, node.callable_name))
8579

86-
@staticmethod
87-
def transform_ImportablePath(node):
88-
raise RuntimeError(
89-
"Encountered raw_nodes.ImportableSourceFile in _SourceNodeTransformer. Apply _UriNodeTransformer first!"
90-
)
91-
9280

9381
class RawNodeTypeTransformer(NodeTransformer):
9482
def __init__(self, nodes_module: ModuleType):
@@ -117,9 +105,11 @@ def all_sources_available(
117105
return True
118106

119107

120-
def resolve_raw_resource_description(raw_rd: GenericRawRD, nodes_module: typing.Any) -> GenericResolvedNode:
121-
"""resolve all uris and sources"""
122-
rd = UriNodeTransformer(root_path=raw_rd.root_path).transform(raw_rd)
108+
def resolve_raw_resource_description(
109+
raw_rd: GenericRawRD, nodes_module: typing.Any, uri_only_if_in_package: bool = True
110+
) -> GenericResolvedNode:
111+
"""resolve all uris and paths (that are included when packaging)"""
112+
rd = UriNodeTransformer(root_path=raw_rd.root_path, uri_only_if_in_package=uri_only_if_in_package).transform(raw_rd)
123113
rd = SourceNodeTransformer().transform(rd)
124114
rd = RawNodeTypeTransformer(nodes_module).transform(rd)
125115
return rd

tests/build_spec/test_build_spec.py

+13
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ def _test_build_spec(
1818
use_original_covers=False,
1919
use_absoloute_arch_path=False,
2020
training_data=None,
21+
parent=None,
2122
):
2223
from bioimageio.core.build_spec import build_model
2324

@@ -118,6 +119,8 @@ def _test_build_spec(
118119
kwargs["covers"] = resolve_source(model_spec.covers, root)
119120
if training_data is not None:
120121
kwargs["training_data"] = training_data
122+
if parent is not None:
123+
kwargs["parent"] = parent
121124

122125
build_model(**kwargs)
123126
assert out_path.exists()
@@ -211,6 +214,16 @@ def test_build_spec_training_data2(unet2d_nuclei_broad_model, tmp_path):
211214
_test_build_spec(unet2d_nuclei_broad_model, tmp_path / "model.zip", "torchscript", training_data=training_data)
212215

213216

217+
def test_build_spec_parent1(unet2d_nuclei_broad_model, tmp_path):
218+
parent = {"uri": "https:/my-parent-model.org"}
219+
_test_build_spec(unet2d_nuclei_broad_model, tmp_path / "model.zip", "torchscript", parent=parent)
220+
221+
222+
def test_build_spec_parent2(unet2d_nuclei_broad_model, tmp_path):
223+
parent = {"id": "10.5281/zenodo.5764892"}
224+
_test_build_spec(unet2d_nuclei_broad_model, tmp_path / "model.zip", "torchscript", parent=parent)
225+
226+
214227
def test_build_spec_deepimagej_keras(unet2d_keras, tmp_path):
215228
_test_build_spec(
216229
unet2d_keras, tmp_path / "model.zip", "keras_hdf5", add_deepimagej_config=True, tensorflow_version="1.12"

0 commit comments

Comments
 (0)