From 95baa6ba163f873f5a4931d4e77c615d06e9c7a7 Mon Sep 17 00:00:00 2001 From: clearml <> Date: Fri, 25 Apr 2025 16:14:47 +0300 Subject: [PATCH] Fix slow clearml package import --- clearml/backend_interface/metrics/events.py | 14 +++++++------- clearml/backend_interface/model.py | 2 +- clearml/backend_interface/task/hyperparams.py | 6 +++--- clearml/backend_interface/task/log.py | 4 ++-- clearml/backend_interface/task/task.py | 4 ++-- clearml/binding/artifacts.py | 4 ++-- clearml/task.py | 2 +- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/clearml/backend_interface/metrics/events.py b/clearml/backend_interface/metrics/events.py index b4605183..bd7f6665 100644 --- a/clearml/backend_interface/metrics/events.py +++ b/clearml/backend_interface/metrics/events.py @@ -167,7 +167,7 @@ class ScalarEvent(MetricsEventAdapter): self._value = self._convert_np_nan_inf(value) super(ScalarEvent, self).__init__(metric=metric, variant=variant, iter=iter, **kwargs) - def get_api_event(self) -> events.MetricsScalarEvent: + def get_api_event(self) -> "events.MetricsScalarEvent": return events.MetricsScalarEvent(value=self._value, **self._get_base_dict()) @@ -180,7 +180,7 @@ class ConsoleEvent(MetricsEventAdapter): self._worker = worker super(ConsoleEvent, self).__init__(metric=None, variant=None, iter=0, **kwargs) - def get_api_event(self) -> events.TaskLogEvent: + def get_api_event(self) -> "events.TaskLogEvent": return events.TaskLogEvent( task=self._task, timestamp=self._timestamp, @@ -197,7 +197,7 @@ class VectorEvent(MetricsEventAdapter): self._values = [self._convert_np_nan_inf(v) for v in values] super(VectorEvent, self).__init__(metric=metric, variant=variant, iter=iter, **kwargs) - def get_api_event(self) -> events.MetricsVectorEvent: + def get_api_event(self) -> "events.MetricsVectorEvent": return events.MetricsVectorEvent(values=self._values, **self._get_base_dict()) @@ -208,7 +208,7 @@ class PlotEvent(MetricsEventAdapter): self._plot_str = plot_str super(PlotEvent, self).__init__(metric=metric, variant=variant, iter=iter, **kwargs) - def get_api_event(self) -> events.MetricsPlotEvent: + def get_api_event(self) -> "events.MetricsPlotEvent": return events.MetricsPlotEvent(plot_str=self._plot_str, **self._get_base_dict()) @@ -219,7 +219,7 @@ class ImageEventNoUpload(MetricsEventAdapter): self._key = urlunparse(("", "", parts.path, parts.params, parts.query, parts.fragment)) super(ImageEventNoUpload, self).__init__(metric, variant, iter=iter, **kwargs) - def get_api_event(self) -> events.MetricsImageEvent: + def get_api_event(self) -> "events.MetricsImageEvent": return events.MetricsImageEvent(url=self._url, key=self._key, **self._get_base_dict()) @@ -481,7 +481,7 @@ class ImageEvent(UploadEvent): **kwargs ) - def get_api_event(self) -> events.MetricsImageEvent: + def get_api_event(self) -> "events.MetricsImageEvent": return events.MetricsImageEvent(url=self._url, key=self._key, **self._get_base_dict()) @@ -510,5 +510,5 @@ class MediaEvent(UploadEvent): **kwargs ) - def get_api_event(self) -> events.MetricsImageEvent: + def get_api_event(self) -> "events.MetricsImageEvent": return events.MetricsImageEvent(url=self._url, key=self._key, **self._get_base_dict()) diff --git a/clearml/backend_interface/model.py b/clearml/backend_interface/model.py index 7f85ceee..60ef1073 100644 --- a/clearml/backend_interface/model.py +++ b/clearml/backend_interface/model.py @@ -109,7 +109,7 @@ class Model(IdObjectBase, AsyncManagerMixin, _StorageUriMixin): ) ) - def _reload(self) -> Optional[models.Model]: + def _reload(self) -> Optional["models.Model"]: """Reload the model object""" if self._offline_mode: return models.Model() diff --git a/clearml/backend_interface/task/hyperparams.py b/clearml/backend_interface/task/hyperparams.py index 9f3f291d..34a10431 100644 --- a/clearml/backend_interface/task/hyperparams.py +++ b/clearml/backend_interface/task/hyperparams.py @@ -63,7 +63,7 @@ class HyperParams(object): self, iterables: Union[ Mapping[str, Union[str, Dict, None]], - Iterable[Union[Dict, tasks.ParamsItem]], + Iterable[Union[Dict, "tasks.ParamsItem"]], ], replace: Optional[str] = None, default_section: Optional[str] = None, @@ -93,7 +93,7 @@ class HyperParams(object): if not tasks.ReplaceHyperparamsEnum.has_value(replace): replace = None - def make_item(value: Union[tasks.ParamsItem, dict, tuple], name: Optional[str] = None) -> tasks.ParamsItem: + def make_item(value: Union["tasks.ParamsItem", dict, tuple], name: Optional[str] = None) -> "tasks.ParamsItem": if isinstance(value, tasks.ParamsItem): a_item = value elif isinstance(value, dict): @@ -150,7 +150,7 @@ class HyperParams(object): return False def delete_hyper_params( - self, *iterables: Iterable[Union[dict, Iterable[str], tasks.ParamKey, tasks.ParamsItem]] + self, *iterables: Iterable[Union[dict, Iterable[str], "tasks.ParamKey", "tasks.ParamsItem"]] ) -> bool: """ Delete hyper-parameters for this task. diff --git a/clearml/backend_interface/task/log.py b/clearml/backend_interface/task/log.py index 2844cc6b..0637adc2 100644 --- a/clearml/backend_interface/task/log.py +++ b/clearml/backend_interface/task/log.py @@ -63,7 +63,7 @@ class BackgroundLogService(BackgroundMonitor): # flush all leftover events self.send_all_records() - def _send_events(self, a_request: events.AddBatchRequest) -> None: + def _send_events(self, a_request: "events.AddBatchRequest") -> None: if not a_request or not a_request.requests: return @@ -143,7 +143,7 @@ class BackgroundLogService(BackgroundMonitor): if buffer: self._send_records(buffer) - def _record_to_event(self, record: LogRecord) -> events.TaskLogEvent: + def _record_to_event(self, record: LogRecord) -> "events.TaskLogEvent": timestamp = int(record.created * 1000) if timestamp == self._last_timestamp: timestamp += self.counter diff --git a/clearml/backend_interface/task/task.py b/clearml/backend_interface/task/task.py index 3a564ac2..3d19c860 100644 --- a/clearml/backend_interface/task/task.py +++ b/clearml/backend_interface/task/task.py @@ -1654,7 +1654,7 @@ class Task(IdObjectBase, AccessMixin, SetupUploadMixin): else: return self._get_task_property("execution.docker_cmd", raise_on_error=False, log_on_error=False) - def set_artifacts(self, artifacts_list: Sequence[tasks.Artifact] = None) -> Optional[List[tasks.Artifact]]: + def set_artifacts(self, artifacts_list: Sequence["tasks.Artifact"] = None) -> Optional[List["tasks.Artifact"]]: """ List of artifacts (tasks.Artifact) to update the task @@ -1675,7 +1675,7 @@ class Task(IdObjectBase, AccessMixin, SetupUploadMixin): self._edit(execution=execution) return execution.artifacts or [] - def _add_artifacts(self, artifacts_list: Sequence[tasks.Artifact]) -> Optional[List[tasks.Artifact]]: + def _add_artifacts(self, artifacts_list: Sequence["tasks.Artifact"]) -> Optional[List["tasks.Artifact"]]: """ List of artifacts (tasks.Artifact) to add to the task If an artifact by the same name already exists it will overwrite the existing artifact. diff --git a/clearml/binding/artifacts.py b/clearml/binding/artifacts.py index d43af168..4d89f51d 100644 --- a/clearml/binding/artifacts.py +++ b/clearml/binding/artifacts.py @@ -120,7 +120,7 @@ class Artifact(object): """ return self._preview - def __init__(self, artifact_api_object: tasks.Artifact) -> None: + def __init__(self, artifact_api_object: "tasks.Artifact") -> None: """ construct read-only object from api artifact object @@ -929,7 +929,7 @@ class Artifacts(object): # create summary self._summary = self._get_statistics() - def _add_artifact(self, artifact: tasks.Artifact) -> None: + def _add_artifact(self, artifact: "tasks.Artifact") -> None: if not self._task: raise ValueError("Task object not set") with self._task_edit_lock: diff --git a/clearml/task.py b/clearml/task.py index 1bb760d4..39840913 100644 --- a/clearml/task.py +++ b/clearml/task.py @@ -5343,7 +5343,7 @@ class Task(_Task): ) @classmethod - def __get_task_api_obj(cls, task_id: str, only_fields: Optional[List[str]] = None) -> Optional[tasks.Task]: + def __get_task_api_obj(cls, task_id: str, only_fields: Optional[List[str]] = None) -> Optional["tasks.Task"]: if not task_id or cls._offline_mode: return None