From 5318c210ab872b5d8c270874244dce8ce7d214f5 Mon Sep 17 00:00:00 2001 From: allegroai <> Date: Wed, 27 Apr 2022 17:32:25 +0300 Subject: [PATCH] Add Model.project getter/setter --- clearml/model.py | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/clearml/model.py b/clearml/model.py index cd601a43..4b191e30 100644 --- a/clearml/model.py +++ b/clearml/model.py @@ -13,7 +13,9 @@ from pathlib2 import Path from .utilities.config import config_dict_to_text, text_to_config_dict -from .backend_interface.util import validate_dict, get_single_result, mutually_exclusive, exact_match_regex +from .backend_interface.util import ( + validate_dict, get_single_result, mutually_exclusive, exact_match_regex, + get_or_create_project, ) from .debugging.log import get_logger from .storage.cache import CacheManager from .storage.helper import StorageHelper @@ -162,6 +164,29 @@ class BaseModel(object): """ self._get_base_model().update(name=value) + @property + def project(self): + # type: () -> str + """ + project id of the model. + + :return: project id (str). + """ + data = self._get_model_data() + return data.project + + @project.setter + def project(self, value): + # type: (str) -> None + """ + Set the project ID of the model. + + :param value: project ID (str). + + :type value: str + """ + self._get_base_model().update(project_id=value) + @property def comment(self): # type: () -> str @@ -621,6 +646,7 @@ class InputModel(Model): config_dict=None, # type: Optional[dict] label_enumeration=None, # type: Optional[Mapping[str, int]] name=None, # type: Optional[str] + project=None, # type: Optional[str] tags=None, # type: Optional[List[str]] comment=None, # type: Optional[str] is_package=False, # type: bool @@ -674,6 +700,7 @@ class InputModel(Model): 'person': 1 } :param str name: The name of the newly imported model. (Optional) + :param str project: The project name to add the model into. (Optional) :param tags: The list of tags which describe the model. (Optional) :type tags: list(str) :param str comment: A comment / description for the model. (Optional) @@ -745,6 +772,12 @@ class InputModel(Model): project_id = None task_id = None + if project: + project_id = get_or_create_project( + session=task.session if task else Task._get_default_session(), + project_name=project + ) + if not framework: # noinspection PyProtectedMember framework, file_ext = Framework._get_file_ext(