]> Piment Noir Git Repositories - freqai-strategies.git/commitdiff
refactor(quickadapter): return cached sets directly in optuna_samplers_by_namespace
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 6 Jan 2026 18:12:36 +0000 (19:12 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 6 Jan 2026 18:13:24 +0000 (19:13 +0100)
- 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.)

quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py

index 164100ca47d5b9158d0f951f249b2f7da817cba5..b87c3b5fa43b3d6559c827562bfc91eca7f4d0f9 100644 (file)
@@ -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)}"