11import traceback
2- from typing import Optional
2+ from typing import Optional , Union
33
44from loguru import logger
55from pydantic import DirectoryPath
@@ -22,7 +22,7 @@ def add_weights(
2222 target_format : Optional [WeightsFormat ] = None ,
2323 verbose : bool = False ,
2424 allow_tracing : bool = True ,
25- ) -> Optional [ModelDescr ]:
25+ ) -> Union [ModelDescr , InvalidDescr ]:
2626 """Convert model weights to other formats and add them to the model description
2727
2828 Args:
@@ -35,8 +35,8 @@ def add_weights(
3535 verbose: log more (error) output
3636
3737 Returns:
38- - An updated model description if any converted weights were added .
39- - `None` if no conversion was possible.
38+ A (potentially invalid) model copy stored at `output_path` with added weights if any conversion was possible .
39+
4040 """
4141 if not isinstance (model_descr , ModelDescr ):
4242 if model_descr .type == "model" and not isinstance (model_descr , InvalidDescr ):
@@ -52,10 +52,9 @@ def add_weights(
5252 model_descr , output_path = output_path
5353 )
5454 # reload from local folder to make sure we do not edit the given model
55- _model_descr = load_model_description (output_path , perform_io_checks = False )
56- assert isinstance (_model_descr , ModelDescr )
57- model_descr = _model_descr
58- del _model_descr
55+ model_descr = load_model_description (
56+ output_path , perform_io_checks = False , format_version = "latest"
57+ )
5958
6059 if source_format is None :
6160 available = set (model_descr .weights .available_formats )
@@ -164,14 +163,16 @@ def add_weights(
164163
165164 if originally_missing == missing :
166165 logger .warning ("failed to add any converted weights" )
167- return None
166+ return model_descr
168167 else :
169168 logger .info ("added weights formats {}" , originally_missing - missing )
170169 # resave model with updated rdf.yaml
171170 _ = save_bioimageio_package_as_folder (model_descr , output_path = output_path )
172- tested_model_descr = load_description_and_test (model_descr )
171+ tested_model_descr = load_description_and_test (
172+ model_descr , format_version = "latest" , expected_type = "model"
173+ )
173174 if not isinstance (tested_model_descr , ModelDescr ):
174- raise RuntimeError (
175+ logger . error (
175176 f"The updated model description at { output_path } did not pass testing."
176177 )
177178
0 commit comments