I don't want to install all the dependencies i.e. Darts, Sktime, TensorFlow , Tsai, Statsmodel

from typing import Type

from hdml.Models.Darts.Es import DartsES, DartsESConfig
from hdml.Models.Darts.Lightgbm import DartsLightGBM, DartsLightGBMConfig
from hdml.Models.Darts.Linearregression import DartsLinearRegression, DartsLinearRegressionConfig
from hdml.Models.Darts.Lstm import DartsLSTM, DartsLstmConfig
from hdml.Models.Darts.Nbeats import DartsNbeats, DartsNbeatsConfig
from hdml.Models.Darts.Nhits import DartsNhits, DartsNhitsConfig
from hdml.Models.Darts.Randomforest import DartsRandomForest, DartsRandomforestConfig
from hdml.Models.Darts.Rnn import DartsRNN, DartsRnnConfig
from hdml.Models.Darts.Tcn import DartsTCN, DartsTcnConfig
from hdml.Models.Darts.Tft import DartsTFT, DartsTFTConfig
from hdml.Models.Darts.Theta import DartsTheta, DartsThetaConfig
from hdml.Models.Darts.Transformer import DartsTransformer, DartsTransformerConfig
from hdml.Models.Forecaster import Forecaster
from hdml.Models.ForecasterConfig import ForecasterConfig
from hdml.Models.Sktime.Arsenal import SktimeArsenal, SktimeArsenalConfig
from hdml.Models.Sktime.AutoArima import SktimeAutoARIMA, SktimeAutoARIMAConfig
from hdml.Models.Sktime.AutoEts import SktimeAutoETS, SktimeAutoETSConfig
from hdml.Models.Sktime.Muse import SktimeMuse, SktimeMuseConfig
from hdml.Models.Sktime.Prophet import SktimeProphet, SktimeProphetConfig
from hdml.Models.Sktime.Rocket import SktimeRocket, SktimeRocketConfig
from hdml.Models.Statsmodel.ExponentialSmoothing import StatsmodelEs, StatsmodelEsConfig
from hdml.Models.TensorFlow.Classification import TfClassification, TfClassificationConfig
from hdml.Models.TensorFlow.Regression import TfRegression, TfRegressionConfig
from hdml.Models.TensorFlow.RegressionOneshot import TfRegressionOneShot, TfRegressionOneShotConfig
from hdml.Models.Tsai.Minirocket import TsaiMiniRocket, TsaiMiniRocketConfig
class ModelFactory:

 @staticmethod
 def model(model\_config: ForecasterConfig) -> Forecaster:
 """
 return forecaster model given model\_config
 :param model\_config: model config
 :return:
 """
 # darts
 if model\_config.model\_name == "darts\_nbeats":
 return DartsNbeats(model\_config=model\_config)
 elif model\_config.model\_name == "darts\_nhits":
 return DartsNhits(model\_config=model\_config)
 elif model\_config.model\_name == "darts\_rnn":
 return DartsRNN(model\_config=model\_config)
 elif model\_config.model\_name == "darts\_lstm":
 return DartsLSTM(model\_config=model\_config)
 elif model\_config.model\_name == "darts\_tcn":
 return DartsTCN(model\_config=model\_config)
 elif model\_config.model\_name == "darts\_lightgbm":
 return DartsLightGBM(model\_config=model\_config)
 elif model\_config.model\_name == "darts\_tft":
 return DartsTFT(model\_config=model\_config)
 elif model\_config.model\_name == "darts\_transformer":
 return DartsTransformer(model\_config=model\_config)
 elif model\_config.model\_name == "darts\_theta":
 return DartsTheta(model\_config=model\_config)
 elif model\_config.model\_name == "darts\_linearregression":
 return DartsLinearRegression(model\_config=model\_config)
 elif model\_config.model\_name == "darts\_randomforest":
 return DartsRandomForest(model\_config=model\_config)
 elif model\_config.model\_name == "darts\_es":
 return DartsES(model\_config=model\_config)
 # tensorflow
 elif model\_config.model\_name == "tf\_classification":
 return TfClassification(model\_config=model\_config)
 elif model\_config.model\_name == "tf\_regression":
 return TfRegression(model\_config=model\_config)
 elif model\_config.model\_name == "tf\_regression\_one\_shot":
 return TfRegressionOneShot(model\_config=model\_config)
 # statsmodel
 elif model\_config.model\_name == "statsmodel\_es":
 return StatsmodelEs(model\_config=model\_config)
 # Sktime
 elif model\_config.model\_name == "sktime\_rocket":
 return SktimeRocket(model\_config=model\_config)
 elif model\_config.model\_name == "sktime\_arsenal":
 return SktimeArsenal(model\_config=model\_config)
 elif model\_config.model\_name == "sktime\_muse":
 return SktimeMuse(model\_config=model\_config)
 elif model\_config.model\_name == "sktime\_autoets":
 return SktimeAutoETS(model\_config=model\_config)
 elif model\_config.model\_name == "sktime\_prophet":
 return SktimeProphet(model\_config=model\_config)
 elif model\_config.model\_name == "sktime\_autoarima":
 return SktimeAutoARIMA(model\_config=model\_config)
 # tsai
 elif model\_config.model\_name == "tsai\_minirocket":
 return TsaiMiniRocket(model\_config=model\_config)
 else:
 raise ValueError(model\_config.model\_name)
class ModelConfigFactory:

 @staticmethod
 def config(model\_name: str) -> Type[ForecasterConfig]:
 """
 return model config given model\_name
 :param model\_name: model name, e.g. darts\_nbeats
 :return:
 """
 # darts
 if model\_name == "darts\_nbeats":
 return DartsNbeatsConfig
 elif model\_name == "darts\_nhits":
 return DartsNhitsConfig
 elif model\_name == "darts\_rnn":
 return DartsRnnConfig
 elif model\_name == "darts\_lstm":
 return DartsLstmConfig
 elif model\_name == "darts\_tcn":
 return DartsTcnConfig
 elif model\_name == "darts\_lightgbm":
 return DartsLightGBMConfig
 elif model\_name == "darts\_tft":
 return DartsTFTConfig
 elif model\_name == "darts\_transformer":
 return DartsTransformerConfig
 elif model\_name == "darts\_theta":
 return DartsThetaConfig
 elif model\_name == "darts\_linearregression":
 return DartsLinearRegressionConfig
 elif model\_name == "darts\_randomforest":
 return DartsRandomforestConfig
 elif model\_name == "darts\_es":
 return DartsESConfig
 # tensorflow
 elif model\_name == "tf\_classification":
 return TfClassificationConfig
 elif model\_name == "tf\_regression":
 return TfRegressionConfig
 elif model\_name == "tf\_regression\_one\_shot":
 return TfRegressionOneShotConfig
 # statsmodel
 elif model\_name == "statsmodel\_es":
 return StatsmodelEsConfig
 # Sktime
 elif model\_name == "sktime\_rocket":
 return SktimeRocketConfig
 elif model\_name == "sktime\_arsenal":
 return SktimeArsenalConfig
 elif model\_name == "sktime\_muse":
 return SktimeMuseConfig
 elif model\_name == "sktime\_autoets":
 return SktimeAutoETSConfig
 elif model\_name == "sktime\_prophet":
 return SktimeProphetConfig
 elif model\_name == "sktime\_autoarima":
 return SktimeAutoARIMAConfig
 # tsai
 elif model\_name == "tsai\_minirocket":
 return TsaiMiniRocketConfig
 else:
 raise ValueError(model\_name)
모든 종속성을 설치하고 싶지 않습니다 (예 : Darts, Sktime, TensorFlow , Tsai, Statsmodel).유형 가져 오기에서 유형hdml.Models.Darts.Es에서 DartsES, DartsESConfig를 가져옵니다.hdml.Models.Darts.Lightgbm에서 DartsLightGBM, DartsLightGBMConfig를 임포트합니다.hdml.Models.Darts.Linearregression에서 DartsLinearRegression, DartsLinearRegressionConfig를 임포트합니다.hdml.Models.Darts.Lstm에서 DartsLSTM, DartsLstmConfig를 임포트합니다.hdml.Models.Darts.Nbeats에서 DartsNbeats, DartsNbeatsConfig를 임포트합니다.hdml.Models.Darts.Nhits에서 DartsNhits, DartsNhitsConfig를 임포트합니다.hdml.Models.Darts.Randomforest에서 DartsRandomForest, DartsRandomforestConfig를 임포트합니다.hdml.Models.Darts.Rnn에서 DartsRNN, DartsRnnConfig를 임포트합니다.hdml.Models.Darts.Tcn에서 DartsTCN, DartsTcnConfig를 임포트합니다.hdml.Models.Darts.Tft 에서 DartsTFT, DartsTFTConfig 임포트hdml.Models.Darts.Theta에서 DartsTheta, DartsThetaConfig를 임포트합니다.hdml.Models.Darts.Transformer에서 DartsTransformer, DartsTransformerConfig를 임포트합니다.hdml.Models.Forecaster에서 Forecaster 임포트hdml.Models.ForecasterConfig에서 ForecasterConfig를 임포트합니다.hdml.Models.Sktime.Arsenal에서 SktimeArsenal, SktimeArsenalConfig 임포트hdml.Models.Sktime.AutoArima에서 SktimeAutoARIMA, SktimeAutoARIMAConfig를 임포트합니다.hdml.Models.Sktime.AutoEts에서 SktimeAutoETS, SktimeAutoETSConfig를 임포트합니다.hdml.Models.Sktime.Muse에서 SktimeMuse, SktimeMuseConfig를 임포트합니다.hdml.Models.Sktime.Prophet에서 SktimeProphet, SktimeProphetConfig를 임포트합니다.hdml.Models.Sktime.Rocket에서 SktimeRocket, SktimeRocketConfig를 임포트합니다.hdml.Models.Statsmodel.ExponentialSmoothing에서 StatsmodelEs, StatsmodelEsConfig를 임포트합니다.hdml.Models.TensorFlow.Classification에서 TfClassification, TfClassificationConfig를 임포트합니다.hdml.Models.TensorFlow.Regression에서 TfRegression, TfRegressionConfig를 임포트합니다.hdml.Models.TensorFlow.RegressionOneshot에서 TfRegressionOneShot, TfRegressionOneShotConfig를 임포트합니다.hdml.Models.Tsai.Minirocket에서 TsaiMiniRocket, TsaiMiniRocketConfig를 임포트합니다.ModelFactory 클래스: @staticmethod def model(model\_config: ForecasterConfig) -> Forecaster: """ 반환 포캐스터 모델 주어진 모델\_config :param model\_config: 모델 구성 :return: """ # 다트 if model\_config.model\_name == "darts\_nbeats": 반환 다트엔비츠(모델\_config=모델\_config) elif model\_config.model\_name == "darts\_nhits": 반환 DartsNhits(모델\_config=모델\_config) elif model\_config.model\_name == "darts\_rnn": 반환 DartsRNN(모델\_config=모델\_config) elif model\_config.model\_name == "darts\_lstm": 반환 DartsLSTM(모델\_config=모델\_config) elif model\_config.model\_name == "darts\_tcn": 반환 DartsTCN(모델\_config=모델\_config) elif model\_config.model\_name == "darts\_lightgbm": 반환 DartsLightGBM(모델\_config=모델\_config) elif model\_config.model\_name == "darts\_tft": 반환 DartsTFT(모델\_config=모델\_config) elif model\_config.model\_name == "darts\_transformer": 반환 DartsTransformer(모델\_config=모델\_config) elif model\_config.model\_name == "darts\_theta": 반환 DartsTheta(모델\_config=모델\_config) elif model\_config.model\_name == "darts\_linearregression": 반환 DartsLinearRegression(모델\_config=모델\_config) elif model\_config.model\_name == "darts\_randomforest": 반환 다트 랜덤 포레스트(모델\_config=모델\_config) elif model\_config.model\_name == "darts\_es": return DartsES(model\_config=model\_config) # 텐서플로 elif model\_config.model\_name == "tf\_classification": 반환 TfClassification(model\_config=model\_config) elif model\_config.model\_name == "tf\_regression": 반환 TfRegression(model\_config=model\_config) elif model\_config.model\_name == "tf\_regression\_one\_shot": return TfRegressionOneShot(model\_config=model\_config) # 통계 모델 elif model\_config.model\_name == "statsmodel\_es": 반환 StatsmodelEs(모델\_config=모델\_config) # Sktime elif model\_config.model\_name == "sktime\_rocket": 반환 SktimeRocket(모델\_config=모델\_config) elif model\_config.model\_name == "sktime\_arsenal": 반환 SktimeArsenal(모델\_config=모델\_config) elif model\_config.model\_name == "sktime\_muse": 반환 SktimeMuse(모델\_config=모델\_config) elif model\_config.model\_name == "sktime\_autoets": 반환 SktimeAutoETS(모델\_config=모델\_config) elif model\_config.model\_name == "sktime\_prophet": 반환 SktimeProphet(모델\_config=모델\_config) elif model\_config.model\_name == "sktime\_autoarima": return SktimeAutoARIMA(model\_config=model\_config) # tsai elif model\_config.model\_name == "tsai\_minirocket": 반환 TsaiMiniRocket(모델\_config=모델\_config) else: ValueError(model\_config.model\_name) 발생모델컨피그팩토리 클래스: @staticmethod def config(model\_name: str) -> Type[ForecasterConfig]: """ 반환 모델 구성 주어진 모델\_이름 :매개변수 model\_name: 모델 이름, 예: darts\_nbeats :반환: """ # 다트 if model\_name == "darts\_nbeats": 반환 다트엔비츠컨피그 elif model\_name == "darts\_nhits": 반환 DartsNhitsConfig elif model\_name == "darts\