This is an automated email from the ASF dual-hosted git repository. yongzao pushed a commit to branch fix-circular-import in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit d2ea712012505864b21007af1d4a4ae5a55e774f Author: Yongzao <[email protected]> AuthorDate: Mon Aug 11 09:26:56 2025 +0800 finish --- iotdb-core/ainode/ainode/core/constant.py | 2 +- .../ainode/ainode/core/manager/model_manager.py | 3 +- .../ainode/core/model/built_in_model_factory.py | 3 +- iotdb-core/ainode/ainode/core/model/model_enums.py | 70 ++++++++++++++++++++++ .../ainode/ainode/core/model/model_factory.py | 2 +- iotdb-core/ainode/ainode/core/model/model_info.py | 59 ++---------------- .../ainode/ainode/core/model/model_storage.py | 10 ++-- iotdb-core/ainode/ainode/core/model/uri_utils.py | 3 +- 8 files changed, 90 insertions(+), 62 deletions(-) diff --git a/iotdb-core/ainode/ainode/core/constant.py b/iotdb-core/ainode/ainode/core/constant.py index 009f66caaf5..5a55b4d283b 100644 --- a/iotdb-core/ainode/ainode/core/constant.py +++ b/iotdb-core/ainode/ainode/core/constant.py @@ -21,7 +21,7 @@ import os from enum import Enum from typing import List -from ainode.core.model.model_info import BuiltInModelType +from ainode.core.model.model_enums import BuiltInModelType from ainode.thrift.common.ttypes import TEndPoint AINODE_VERSION_INFO = "UNKNOWN" diff --git a/iotdb-core/ainode/ainode/core/manager/model_manager.py b/iotdb-core/ainode/ainode/core/manager/model_manager.py index d149c816568..69b163afd97 100644 --- a/iotdb-core/ainode/ainode/core/manager/model_manager.py +++ b/iotdb-core/ainode/ainode/core/manager/model_manager.py @@ -26,7 +26,8 @@ from ainode.core.exception import ( InvalidUriError, ) from ainode.core.log import Logger -from ainode.core.model.model_info import BuiltInModelType, ModelInfo, ModelStates +from ainode.core.model.model_enums import BuiltInModelType, ModelStates +from ainode.core.model.model_info import ModelInfo from ainode.core.model.model_storage import ModelStorage from ainode.core.rpc.status import get_status from ainode.core.util.decorator import singleton diff --git a/iotdb-core/ainode/ainode/core/model/built_in_model_factory.py b/iotdb-core/ainode/ainode/core/model/built_in_model_factory.py index 6ac708ebebf..f1bf4952fe2 100644 --- a/iotdb-core/ainode/ainode/core/model/built_in_model_factory.py +++ b/iotdb-core/ainode/ainode/core/model/built_in_model_factory.py @@ -44,7 +44,8 @@ from ainode.core.exception import ( WrongAttributeTypeError, ) from ainode.core.log import Logger -from ainode.core.model.model_info import TIMER_REPO_ID, BuiltInModelType +from ainode.core.model.model_enums import BuiltInModelType +from ainode.core.model.model_info import TIMER_REPO_ID from ainode.core.model.sundial import modeling_sundial from ainode.core.model.timerxl import modeling_timer diff --git a/iotdb-core/ainode/ainode/core/model/model_enums.py b/iotdb-core/ainode/ainode/core/model/model_enums.py new file mode 100644 index 00000000000..348f9924316 --- /dev/null +++ b/iotdb-core/ainode/ainode/core/model/model_enums.py @@ -0,0 +1,70 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +from enum import Enum +from typing import List + + +class BuiltInModelType(Enum): + # forecast models + ARIMA = "Arima" + HOLTWINTERS = "HoltWinters" + EXPONENTIAL_SMOOTHING = "ExponentialSmoothing" + NAIVE_FORECASTER = "NaiveForecaster" + STL_FORECASTER = "StlForecaster" + + # anomaly detection models + GAUSSIAN_HMM = "GaussianHmm" + GMM_HMM = "GmmHmm" + STRAY = "Stray" + + # large time series models (LTSM) + TIMER_XL = "Timer-XL" + # sundial + SUNDIAL = "Timer-Sundial" + + @classmethod + def values(cls) -> List[str]: + return [item.value for item in cls] + + @staticmethod + def is_built_in_model(model_type: str) -> bool: + """ + Check if the given model type corresponds to a built-in model. + """ + return model_type in BuiltInModelType.values() + + +class ModelFileType(Enum): + SAFETENSORS = "safetensors" + PYTORCH = "pytorch" + UNKNOWN = "unknown" + + +class ModelCategory(Enum): + BUILT_IN = "BUILT-IN" + FINE_TUNED = "FINE-TUNED" + USER_DEFINED = "USER-DEFINED" + + +class ModelStates(Enum): + ACTIVE = "ACTIVE" + INACTIVE = "INACTIVE" + LOADING = "LOADING" + DROPPING = "DROPPING" + TRAINING = "TRAINING" + FAILED = "FAILED" diff --git a/iotdb-core/ainode/ainode/core/model/model_factory.py b/iotdb-core/ainode/ainode/core/model/model_factory.py index 0b21b56593f..5bbcf321644 100644 --- a/iotdb-core/ainode/ainode/core/model/model_factory.py +++ b/iotdb-core/ainode/ainode/core/model/model_factory.py @@ -28,7 +28,7 @@ from ainode.core.constant import ( ) from ainode.core.exception import BadConfigValueError, InvalidUriError from ainode.core.log import Logger -from ainode.core.model.model_info import ModelFileType +from ainode.core.model.model_enums import ModelFileType from ainode.core.model.uri_utils import ( UriType, download_file, diff --git a/iotdb-core/ainode/ainode/core/model/model_info.py b/iotdb-core/ainode/ainode/core/model/model_info.py index 7d8a5418bbf..6226179dbcb 100644 --- a/iotdb-core/ainode/ainode/core/model/model_info.py +++ b/iotdb-core/ainode/ainode/core/model/model_info.py @@ -17,8 +17,6 @@ # import glob import os -from enum import Enum -from typing import List from ainode.core.constant import ( MODEL_CONFIG_FILE_IN_JSON, @@ -26,42 +24,12 @@ from ainode.core.constant import ( MODEL_WEIGHTS_FILE_IN_PT, MODEL_WEIGHTS_FILE_IN_SAFETENSORS, ) - - -class BuiltInModelType(Enum): - # forecast models - ARIMA = "Arima" - HOLTWINTERS = "HoltWinters" - EXPONENTIAL_SMOOTHING = "ExponentialSmoothing" - NAIVE_FORECASTER = "NaiveForecaster" - STL_FORECASTER = "StlForecaster" - - # anomaly detection models - GAUSSIAN_HMM = "GaussianHmm" - GMM_HMM = "GmmHmm" - STRAY = "Stray" - - # large time series models (LTSM) - TIMER_XL = "Timer-XL" - # sundial - SUNDIAL = "Timer-Sundial" - - @classmethod - def values(cls) -> List[str]: - return [item.value for item in cls] - - @staticmethod - def is_built_in_model(model_type: str) -> bool: - """ - Check if the given model type corresponds to a built-in model. - """ - return model_type in BuiltInModelType.values() - - -class ModelFileType(Enum): - SAFETENSORS = "safetensors" - PYTORCH = "pytorch" - UNKNOWN = "unknown" +from ainode.core.model.model_enums import ( + BuiltInModelType, + ModelCategory, + ModelFileType, + ModelStates, +) def get_model_file_type(model_path: str) -> ModelFileType: @@ -96,21 +64,6 @@ def get_built_in_model_type(model_type: str) -> BuiltInModelType: return BuiltInModelType(model_type) -class ModelCategory(Enum): - BUILT_IN = "BUILT-IN" - FINE_TUNED = "FINE-TUNED" - USER_DEFINED = "USER-DEFINED" - - -class ModelStates(Enum): - ACTIVE = "ACTIVE" - INACTIVE = "INACTIVE" - LOADING = "LOADING" - DROPPING = "DROPPING" - TRAINING = "TRAINING" - FAILED = "FAILED" - - class ModelInfo: def __init__( self, diff --git a/iotdb-core/ainode/ainode/core/model/model_storage.py b/iotdb-core/ainode/ainode/core/model/model_storage.py index a87834a1a18..ebfa9211811 100644 --- a/iotdb-core/ainode/ainode/core/model/model_storage.py +++ b/iotdb-core/ainode/ainode/core/model/model_storage.py @@ -42,15 +42,17 @@ from ainode.core.model.built_in_model_factory import ( download_built_in_ltsm_from_hf_if_necessary, fetch_built_in_model, ) +from ainode.core.model.model_enums import ( + BuiltInModelType, + ModelCategory, + ModelFileType, + ModelStates, +) from ainode.core.model.model_factory import fetch_model_by_uri from ainode.core.model.model_info import ( BUILT_IN_LTSM_MAP, BUILT_IN_MACHINE_LEARNING_MODEL_MAP, - BuiltInModelType, - ModelCategory, - ModelFileType, ModelInfo, - ModelStates, get_built_in_model_type, get_model_file_type, ) diff --git a/iotdb-core/ainode/ainode/core/model/uri_utils.py b/iotdb-core/ainode/ainode/core/model/uri_utils.py index 1f162212ead..de2fb2a1848 100644 --- a/iotdb-core/ainode/ainode/core/model/uri_utils.py +++ b/iotdb-core/ainode/ainode/core/model/uri_utils.py @@ -30,7 +30,8 @@ from ainode.core.constant import ( ) from ainode.core.exception import UnsupportedError from ainode.core.log import Logger -from ainode.core.model.model_info import ModelFileType, get_model_file_type +from ainode.core.model.model_enums import ModelFileType +from ainode.core.model.model_info import get_model_file_type HTTP_PREFIX = "http://" HTTPS_PREFIX = "https://"
