Skip to content

Commit e40168e

Browse files
committed
Improve error message when selecting an unsupported modeler
1 parent 3511dda commit e40168e

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

extrap/modelers/model_generator.py

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,33 @@ def modeler(self):
5858

5959
def _choose_modeler(self, modeler: Union[AbstractModeler, str], use_measure) -> AbstractModeler:
6060
if isinstance(modeler, str):
61-
try:
62-
if len(self.experiment.parameters) == 1:
63-
# single-parameter model generator init here...
61+
62+
if len(self.experiment.parameters) == 1:
63+
# single-parameter model generator init here...
64+
try:
6465
result_modeler = single_parameter.all_modelers[modeler]()
65-
else:
66-
# multi-parameter model generator init here...
66+
except KeyError:
67+
raise ValueError(
68+
f'A modeler with name "{modeler}" does not exist. For single-parameter experiments only the '
69+
f'following modelers are available "{", ".join(single_parameter.all_modelers.keys())}".') from None
70+
else:
71+
# multi-parameter model generator init here...
72+
try:
6773
result_modeler = multi_parameter.all_modelers[modeler]()
74+
except KeyError as e:
75+
if modeler in single_parameter.all_modelers:
76+
raise ValueError(
77+
f'A multi-parameter modeler with name "{modeler}" does not exist. '
78+
f'You selected a modeler only available for single-parameter experiments. '
79+
f'For multi-parameter experiments only the '
80+
f'following modelers are available "{", ".join(multi_parameter.all_modelers.keys())}". '
81+
f'You can change the underlying single-parameter modeler by setting the '
82+
f'single-parameter-modeler option of the multi-parameter modeler.') from e
83+
raise ValueError(
84+
f'A modeler with name "{modeler}" does not exist. For multi-parameter experiments only the '
85+
f'following modelers are available "{", ".join(multi_parameter.all_modelers.keys())}".') from e
6886
result_modeler.use_measure = use_measure
69-
except KeyError:
70-
raise ValueError(
71-
f'Modeler with name "{modeler}" does not exist.')
87+
7288
elif modeler is NotImplemented:
7389
result_modeler = NotImplemented
7490
else:

0 commit comments

Comments
 (0)