From 5c47a75f635d352cae5e3a44fb08f58aefdd8505 Mon Sep 17 00:00:00 2001 From: viotemp1 Date: Tue, 29 Apr 2025 08:16:44 +0300 Subject: [PATCH] move back delayed and wrap_non_picklable_objects from hyperopt_optimizer to hyperopt. There are tests failing when using delayed and wrap_non_picklable_objects as decorator. until I'll find a solution to run generate_optimizer standalone for analyze_per_epoch=True --- freqtrade/optimize/hyperopt/hyperopt.py | 6 ++++-- freqtrade/optimize/hyperopt/hyperopt_optimizer.py | 4 +--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/freqtrade/optimize/hyperopt/hyperopt.py b/freqtrade/optimize/hyperopt/hyperopt.py index ed404e923..70a85b30b 100644 --- a/freqtrade/optimize/hyperopt/hyperopt.py +++ b/freqtrade/optimize/hyperopt/hyperopt.py @@ -14,7 +14,7 @@ from pathlib import Path from typing import Any import rapidjson -from joblib import Parallel, cpu_count +from joblib import Parallel, cpu_count, delayed, wrap_non_picklable_objects from freqtrade.constants import FTHYPT_FILEVERSION, LAST_BT_RESULT_FN, Config from freqtrade.enums import HyperoptState @@ -160,7 +160,9 @@ class Hyperopt: return self.hyperopter.generate_optimizer(*args, **kwargs) - return parallel(optimizer_wrapper(v) for v in asked) + return parallel( + delayed(wrap_non_picklable_objects(optimizer_wrapper))(v) for v in asked + ) def _set_random_state(self, random_state: int | None) -> int: return random_state or random.randint(1, 2**16 - 1) # noqa: S311 diff --git a/freqtrade/optimize/hyperopt/hyperopt_optimizer.py b/freqtrade/optimize/hyperopt/hyperopt_optimizer.py index b04478841..53aa8f88d 100644 --- a/freqtrade/optimize/hyperopt/hyperopt_optimizer.py +++ b/freqtrade/optimize/hyperopt/hyperopt_optimizer.py @@ -11,7 +11,7 @@ from pathlib import Path from typing import Any import optuna -from joblib import dump, load, delayed, wrap_non_picklable_objects +from joblib import dump, load from joblib.externals import cloudpickle from optuna.exceptions import ExperimentalWarning from pandas import DataFrame @@ -260,8 +260,6 @@ class HyperOptimizer: # noinspection PyProtectedMember attr.value = params_dict[attr_name] - @delayed - @wrap_non_picklable_objects def generate_optimizer(self, raw_params: dict[str, Any]) -> dict[str, Any]: """ Used Optimize function.