From: Jérôme Benoit Date: Tue, 6 Jan 2026 18:12:36 +0000 (+0100) Subject: refactor(quickadapter): return cached sets directly in optuna_samplers_by_namespace X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=e14599c6208f98673b0b37bea4f9a84f3f33c749;p=freqai-strategies.git refactor(quickadapter): return cached sets directly in optuna_samplers_by_namespace - Add _optuna_hpo_samplers_set() and _optuna_label_samplers_set() cached methods - Change return type from tuple[tuple[OptunaSampler, ...], OptunaSampler] to tuple[set[OptunaSampler], OptunaSampler] - Remove redundant set() conversion in sampler validation - Align with existing pattern used by other constant set methods (_scaler_types_set, _threshold_methods_set, etc.) --- diff --git a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py index 164100c..b87c3b5 100644 --- a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py +++ b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py @@ -265,6 +265,16 @@ class QuickAdapterRegressorV3(BaseRegressionModel): def _optuna_namespaces_set() -> set[OptunaNamespace]: return set(QuickAdapterRegressorV3._OPTUNA_NAMESPACES) + @staticmethod + @lru_cache(maxsize=None) + def _optuna_hpo_samplers_set() -> set[OptunaSampler]: + return set(QuickAdapterRegressorV3._OPTUNA_HPO_SAMPLERS) + + @staticmethod + @lru_cache(maxsize=None) + def _optuna_label_samplers_set() -> set[OptunaSampler]: + return set(QuickAdapterRegressorV3._OPTUNA_LABEL_SAMPLERS) + @staticmethod @lru_cache(maxsize=None) def _scaler_types_set() -> set[ScalerType]: @@ -3058,20 +3068,16 @@ class QuickAdapterRegressorV3(BaseRegressionModel): @lru_cache(maxsize=8) def optuna_samplers_by_namespace( self, namespace: OptunaNamespace - ) -> tuple[tuple[OptunaSampler, ...], OptunaSampler]: + ) -> tuple[set[OptunaSampler], OptunaSampler]: if namespace == QuickAdapterRegressorV3._OPTUNA_NAMESPACES[0]: # "hp" return ( - QuickAdapterRegressorV3._OPTUNA_HPO_SAMPLERS, - self._optuna_config.get( - "sampler", - ), + QuickAdapterRegressorV3._optuna_hpo_samplers_set(), + self._optuna_config.get("sampler"), ) elif namespace == QuickAdapterRegressorV3._OPTUNA_NAMESPACES[1]: # "label" return ( - QuickAdapterRegressorV3._OPTUNA_LABEL_SAMPLERS, - self._optuna_config.get( - "label_sampler", - ), + QuickAdapterRegressorV3._optuna_label_samplers_set(), + self._optuna_config.get("label_sampler"), ) else: raise ValueError( @@ -3117,7 +3123,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel): ) samplers, sampler = self.optuna_samplers_by_namespace(namespace) - if sampler not in set(samplers): + if sampler not in samplers: raise ValueError( f"Invalid optuna {namespace} sampler value {sampler!r}: " f"supported values are {', '.join(samplers)}"