From 86fa3230b99a9601798cfe12839fc0523177cef7 Mon Sep 17 00:00:00 2001 From: Alicja Miloszewska Date: Wed, 8 Jan 2025 12:58:56 +0100 Subject: [PATCH 1/2] Fix dir() method Signed-off-by: Alicja Miloszewska --- src/bindings/python/src/openvino/_ov_api.py | 11 ++++++++++- src/bindings/python/tests/test_runtime/test_model.py | 8 ++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/bindings/python/src/openvino/_ov_api.py b/src/bindings/python/src/openvino/_ov_api.py index 53d0fa5316498b..5194d55ce64a2f 100644 --- a/src/bindings/python/src/openvino/_ov_api.py +++ b/src/bindings/python/src/openvino/_ov_api.py @@ -24,7 +24,12 @@ ) -class Model: +class ModelMeta(type): + def __dir__(cls) -> list: + return list(set(cls.__dict__.keys()) | set(dir(ModelBase))) + + +class Model(object, metaclass=ModelMeta): def __init__(self, *args: Any, **kwargs: Any) -> None: if args and not kwargs: if isinstance(args[0], ModelBase): @@ -67,6 +72,10 @@ def __exit__(self, exc_type: Type[BaseException], exc_value: BaseException, trac def __repr__(self) -> str: return self.__model.__repr__() + def __dir__(self) -> list: + wrapper_methods = ["__copy__", "__deepcopy__", "__dict__", "__enter__", "__exit__", "__getattr__", "__weakref__"] + return dir(self.__model) + wrapper_methods + class InferRequest(_InferRequestWrapper): """InferRequest class represents infer request which can be run in asynchronous or synchronous manners.""" diff --git a/src/bindings/python/tests/test_runtime/test_model.py b/src/bindings/python/tests/test_runtime/test_model.py index 425cdb97129c69..f6715a45523c58 100644 --- a/src/bindings/python/tests/test_runtime/test_model.py +++ b/src/bindings/python/tests/test_runtime/test_model.py @@ -849,3 +849,11 @@ def test_tempdir_save_load_error(): with tempfile.TemporaryDirectory() as model_save_dir: save_model(mem_model, f"{model_save_dir}/model.xml") _ = Core().read_model(f"{model_save_dir}/model.xml") + + +def test_model_dir(): + model = generate_add_model() + num_of_attrs = 83 + + assert type(dir(model)) == list + assert len(dir(model)) == num_of_attrs From 9ee8db121646e3d0c8b423a418e5a5ede22b90a2 Mon Sep 17 00:00:00 2001 From: Alicja Miloszewska Date: Wed, 8 Jan 2025 17:02:00 +0100 Subject: [PATCH 2/2] Extend test to include newer versions of Python Signed-off-by: Alicja Miloszewska --- src/bindings/python/tests/test_runtime/test_model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bindings/python/tests/test_runtime/test_model.py b/src/bindings/python/tests/test_runtime/test_model.py index f6715a45523c58..cf4cad0d025247 100644 --- a/src/bindings/python/tests/test_runtime/test_model.py +++ b/src/bindings/python/tests/test_runtime/test_model.py @@ -856,4 +856,4 @@ def test_model_dir(): num_of_attrs = 83 assert type(dir(model)) == list - assert len(dir(model)) == num_of_attrs + assert len(dir(model)) >= num_of_attrs