Skip to content

Commit c559a57

Browse files
committed
rich error msg for check_consistency
1 parent 008888f commit c559a57

File tree

1 file changed

+37
-9
lines changed

1 file changed

+37
-9
lines changed

pina/utils.py

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,43 @@ class or, if ``subclass=True``, whether it is a subclass of the specified
4747
object_ = [object_]
4848

4949
for obj in object_:
50-
try:
51-
if not subclass:
52-
assert isinstance(obj, object_instance)
53-
else:
54-
assert issubclass(obj, object_instance)
55-
except AssertionError as e:
56-
raise ValueError(
57-
f"{type(obj).__name__} must be {object_instance}."
58-
) from e
50+
is_class = isinstance(obj, type)
51+
expected_type_name = (
52+
object_instance.__name__
53+
if isinstance(object_instance, type)
54+
else str(object_instance)
55+
)
56+
57+
if subclass:
58+
if not is_class:
59+
raise ValueError(
60+
f"You passed {repr(obj)} "
61+
f"(an instance of {type(obj).__name__}), "
62+
f"but a {expected_type_name} class was expected. "
63+
f"Please pass a {expected_type_name} class or a "
64+
"derived one."
65+
)
66+
elif not issubclass(obj, object_instance):
67+
raise ValueError(
68+
f"You passed {obj.__name__} class, but a "
69+
f"{expected_type_name} class was expected. "
70+
f"Please pass a {expected_type_name} class or a "
71+
"derived one."
72+
)
73+
else:
74+
if is_class:
75+
raise ValueError(
76+
f"You passed {obj.__name__} class, but a "
77+
f"{expected_type_name} instance was expected. "
78+
f"Please pass a {expected_type_name} instance."
79+
)
80+
elif not isinstance(obj, object_instance):
81+
raise ValueError(
82+
f"You passed {repr(obj)} "
83+
f"(an instance of {type(obj).__name__}), "
84+
f"but a {expected_type_name} instance was expected. "
85+
f"Please pass a {expected_type_name} instance."
86+
)
5987

6088

6189
def labelize_forward(forward, input_variables, output_variables):

0 commit comments

Comments
 (0)