|
| 1 | +import tempfile |
| 2 | + |
1 | 3 | from .metrics import ComputedMetrics |
2 | 4 | from .ml import DSSMLTask |
3 | 5 | from .ml import DSSTrainedClusteringModelDetails |
@@ -131,18 +133,19 @@ def import_mlflow_version_from_path(self, version_id, path, code_env_name = "INH |
131 | 133 | :return a :class:MLFlowVersionHandler in order to interact with the new MLFlow model version |
132 | 134 | """ |
133 | 135 | # TODO: Add a check that it's indeed a MLFlow model folder |
134 | | - # TODO: Put it in a proper temp folder |
135 | 136 | # TODO: cleanup the archive |
136 | 137 | import shutil |
137 | 138 | import os |
138 | | - shutil.make_archive("tmpmodel", "zip", path) #[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]]) |
139 | | - |
140 | | - with open("tmpmodel.zip", "rb") as fp: |
141 | | - self.client._perform_empty("POST", "/projects/%s/savedmodels/%s/versions/%s?codeEnvName=%s" % (self.project_key, self.sm_id, version_id, code_env_name), |
142 | | - files={"file":("tmpmodel.zip", fp)}) |
143 | | - os.remove("tmpmodel.zip") |
144 | | - |
145 | | - return self.get_mlflow_version_handler(version_id) |
| 139 | + archive_temp_dir = tempfile.mkdtemp() |
| 140 | + try: |
| 141 | + archive_filename = shutil.make_archive(os.path.join(archive_temp_dir, "tmpmodel"), "zip", path) #[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]]) |
| 142 | + |
| 143 | + with open("tmpmodel.zip", "rb") as fp: |
| 144 | + self.client._perform_empty("POST", "/projects/%s/savedmodels/%s/versions/%s?codeEnvName=%s" % (self.project_key, self.sm_id, version_id, code_env_name), |
| 145 | + files={"file":(archive_filename, fp)}) |
| 146 | + return self.get_mlflow_version_handler(version_id) |
| 147 | + finally: |
| 148 | + shutil.rmtree(archive_temp_dir) |
146 | 149 |
|
147 | 150 | def get_mlflow_version_handler(self, version_id): |
148 | 151 | """ |
|
0 commit comments