Skip to content

Commit ab1979c

Browse files
committed
make adapter import error messages more informative
1 parent 4d3983f commit ab1979c

6 files changed

+33
-16
lines changed

bioimageio/core/model_adapters/_keras_model_adapter.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,14 @@
2626
except Exception:
2727
try:
2828
import keras # pyright: ignore[reportMissingImports]
29-
except Exception:
29+
except Exception as e:
3030
keras = None
31-
31+
keras_error = str(e)
32+
else:
33+
keras_error = None
3234
tf_version = None
35+
else:
36+
keras_error = None
3337

3438

3539
class KerasModelAdapter(ModelAdapter):
@@ -40,7 +44,7 @@ def __init__(
4044
devices: Optional[Sequence[str]] = None,
4145
) -> None:
4246
if keras is None:
43-
raise ImportError("keras")
47+
raise ImportError(f"failed to import keras: {keras_error}")
4448

4549
super().__init__()
4650
if model_description.weights.keras_hdf5 is None:

bioimageio/core/model_adapters/_model_adapter.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ def create(
7777
devices=devices,
7878
)
7979
except Exception as e:
80-
errors.append(f"{wf}: {e}\n{traceback.format_stack()}")
80+
errors.append(f"{wf}: {e}")
8181
elif (
8282
wf == "tensorflow_saved_model_bundle"
8383
and weights.tensorflow_saved_model_bundle is not None
@@ -89,7 +89,7 @@ def create(
8989
model_description=model_description, devices=devices
9090
)
9191
except Exception as e:
92-
errors.append(f"{wf}: {e}\n{traceback.format_stack()}")
92+
errors.append(f"{wf}: {e}")
9393
elif wf == "onnx" and weights.onnx is not None:
9494
try:
9595
from ._onnx_model_adapter import ONNXModelAdapter
@@ -98,7 +98,7 @@ def create(
9898
model_description=model_description, devices=devices
9999
)
100100
except Exception as e:
101-
errors.append(f"{wf}: {e}\n{traceback.format_stack()}")
101+
errors.append(f"{wf}: {e}")
102102
elif wf == "torchscript" and weights.torchscript is not None:
103103
try:
104104
from ._torchscript_model_adapter import TorchscriptModelAdapter
@@ -107,7 +107,7 @@ def create(
107107
model_description=model_description, devices=devices
108108
)
109109
except Exception as e:
110-
errors.append(f"{wf}: {e}\n{traceback.format_stack()}")
110+
errors.append(f"{wf}: {e}")
111111
elif wf == "keras_hdf5" and weights.keras_hdf5 is not None:
112112
# keras can either be installed as a separate package or used as part of tensorflow
113113
# we try to first import the keras model adapter using the separate package and,
@@ -125,7 +125,7 @@ def create(
125125
model_description=model_description, devices=devices
126126
)
127127
except Exception as e:
128-
errors.append(f"{wf}: {e}\n{traceback.format_stack()}")
128+
errors.append(f"{wf}: {e}")
129129

130130
assert errors
131131
error_list = "\n - ".join(errors)

bioimageio/core/model_adapters/_onnx_model_adapter.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@
1212

1313
try:
1414
import onnxruntime as rt
15-
except Exception:
15+
except Exception as e:
1616
rt = None
17+
rt_error = str(e)
18+
else:
19+
rt_error = None
1720

1821

1922
class ONNXModelAdapter(ModelAdapter):
@@ -24,7 +27,7 @@ def __init__(
2427
devices: Optional[Sequence[str]] = None,
2528
):
2629
if rt is None:
27-
raise ImportError("onnxruntime")
30+
raise ImportError(f"failed to import onnxruntime: {rt_error}")
2831

2932
super().__init__()
3033
self._internal_output_axes = [

bioimageio/core/model_adapters/_pytorch_model_adapter.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@
1212

1313
try:
1414
import torch
15-
except Exception:
15+
except Exception as e:
1616
torch = None
17+
torch_error = str(e)
18+
else:
19+
torch_error = None
1720

1821

1922
class PytorchModelAdapter(ModelAdapter):
@@ -29,7 +32,8 @@ def __init__(
2932
devices: Optional[Sequence[str]] = None,
3033
):
3134
if torch is None:
32-
raise ImportError("failed to import torch")
35+
raise ImportError(f"failed to import torch: {torch_error}")
36+
3337
super().__init__()
3438
self.output_dims = [tuple(a.id for a in get_axes_infos(out)) for out in outputs]
3539
self._network = self.get_network(weights)

bioimageio/core/model_adapters/_tensorflow_model_adapter.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@
1414

1515
try:
1616
import tensorflow as tf # pyright: ignore[reportMissingImports]
17-
except Exception:
17+
except Exception as e:
1818
tf = None
19+
tf_error = str(e)
20+
else:
21+
tf_error = None
1922

2023

2124
class TensorflowModelAdapterBase(ModelAdapter):
@@ -34,7 +37,7 @@ def __init__(
3437
model_description: Union[v0_4.ModelDescr, v0_5.ModelDescr],
3538
):
3639
if tf is None:
37-
raise ImportError("tensorflow")
40+
raise ImportError(f"failed to import tensorflow: {tf_error}")
3841

3942
super().__init__()
4043
self.model_description = model_description

bioimageio/core/model_adapters/_torchscript_model_adapter.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@
1414

1515
try:
1616
import torch
17-
except Exception:
17+
except Exception as e:
1818
torch = None
19+
torch_error = str(e)
20+
else:
21+
torch_error = None
1922

2023

2124
class TorchscriptModelAdapter(ModelAdapter):
@@ -26,7 +29,7 @@ def __init__(
2629
devices: Optional[Sequence[str]] = None,
2730
):
2831
if torch is None:
29-
raise ImportError("torch")
32+
raise ImportError(f"failed to import torch: {torch_error}")
3033

3134
super().__init__()
3235
if model_description.weights.torchscript is None:

0 commit comments

Comments
 (0)