Skip to content

Commit 74025c5

Browse files
authored
[PyOV] Throw error if model is created without arguments (#29436)
### Details: - Previously it showed some default error. - Since 2025.0 `Model` implementation changed inside, it doesn't show any error - So added it ### Tickets: - *ticket-id*
1 parent 459e8f0 commit 74025c5

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

src/bindings/python/src/openvino/_ov_api.py

+27
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,33 @@ def __dir__(cls) -> list:
3131

3232
class Model(object, metaclass=ModelMeta):
3333
def __init__(self, *args: Any, **kwargs: Any) -> None:
34+
if not args and not kwargs:
35+
36+
constructors = [
37+
"1. openvino.Model(other: openvino.Model)"
38+
"2. openvino.Model(results: list[openvino.op.Result], sinks: list[openvino.Node], parameters: list[openvino.op.Parameter], name: str = '')",
39+
"3. openvino.Model(results: list[openvino.Node], parameters: list[openvino.op.Parameter], name: str = '')",
40+
"4. openvino.Model(result: openvino.Node, parameters: list[openvino.op.Parameter], name: str = '')",
41+
"5. openvino.Model(results: list[openvino.Output], parameters: list[openvino.op.Parameter], name: str = '')",
42+
"6. openvino.Model(results: list[openvino.Output], sinks: list[openvino.Node], parameters: list[openvino.op.Parameter], name: str = '')",
43+
"7. openvino.Model(results: list[openvino.Output], sinks: list[openvino.Output], parameters: list[openvino.op.Parameter], name: str = '')",
44+
"8. openvino.Model(results: list[openvino.Output], sinks: list[openvino.Output], parameters: list[openvino.op.Parameter], \
45+
variables: list[openvino.op.util.Variable], name: str = '')",
46+
"9. openvino.Model(results: list[openvino.op.Result], sinks: list[openvino.Output], parameters: list[openvino.op.Parameter], name: str = '')",
47+
"10. openvino.Model(results: list[openvino.op.Result], sinks: list[openvino.Output], parameters: list[openvino.op.Parameter], \
48+
variables: list[openvino.op.util.Variable], name: str = '')",
49+
"11. openvino.Model(results: list[openvino.op.Result], sinks: list[openvino.Node], parameters: list[openvino.op.Parameter], \
50+
variables: list[openvino.op.util.Variable], name: str = '')",
51+
"12. openvino.Model(results: list[openvino.Output], sinks: list[openvino.Node], parameters: list[openvino.op.Parameter], \
52+
variables: list[openvino.op.util.Variable], name: str = '')",
53+
"13. openvino.Model(results: list[openvino.op.Result], parameters: list[openvino.op.Parameter], \
54+
variables: list[openvino.op.util.Variable], name: str = '')",
55+
"14. openvino.Model(results: list[openvino.Output], parameters: list[openvino.op.Parameter], \
56+
variables: list[openvino.op.util.Variable], name: str = '')",
57+
]
58+
59+
constructor_info = "\n".join(f" - {ctor}" for ctor in constructors)
60+
raise ValueError(f"Model cannot be instantiated without arguments.\n\nAvailable constructors:\n{constructor_info}")
3461
if args and not kwargs:
3562
if isinstance(args[0], ModelBase):
3663
self.__model = ModelBase(args[0])

src/bindings/python/tests/test_runtime/test_model.py

+5
Original file line numberDiff line numberDiff line change
@@ -857,3 +857,8 @@ def test_model_dir():
857857

858858
assert type(dir(model)) == list
859859
assert len(dir(model)) >= num_of_attrs
860+
861+
862+
def test_model_without_arguments():
863+
with pytest.raises(ValueError, match="Model cannot be instantiated without arguments."):
864+
Model()

0 commit comments

Comments
 (0)