From d17044f32de959fd98f29d8aebadff2a52df7df0 Mon Sep 17 00:00:00 2001 From: Alexandros Evangelou Date: Mon, 11 May 2026 15:18:05 +0300 Subject: [PATCH] fix: subtract session params from experiment params in task template (#2) Session-wide keys (max_reward, min_reward, hydrate_delay, ...) live in both SessionParameters and the experiment default_key by design, but the ethopy-create-task template was emitting them in both session_params and experiment_conditions. Filter exp_params against SessionParameters annotations so each key appears in exactly one place. Co-Authored-By: Claude Opus 4.7 --- src/ethopy/utils/create_ethopy_task.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/ethopy/utils/create_ethopy_task.py b/src/ethopy/utils/create_ethopy_task.py index 026c673..7df1186 100644 --- a/src/ethopy/utils/create_ethopy_task.py +++ b/src/ethopy/utils/create_ethopy_task.py @@ -9,8 +9,11 @@ import datetime import textwrap +from ethopy.core.experiment import SessionParameters from ethopy.utils.task_helper_funcs import format_params_print, get_parameters +SESSION_PARAM_KEYS = set(SessionParameters.__annotations__.keys()) + def generate_ethopy_template(): print("--- Ethopy Task Template Generator ---") @@ -36,7 +39,11 @@ def generate_ethopy_template(): print(f"❌ Error importing {exp_class_name} from {exp_module_path}: {e}") return - exp_params = format_params_print(get_parameters(eval(f"{exp_class_name}()"))) + exp_params_dict = get_parameters(eval(f"{exp_class_name}()")) + exp_params_dict = { + k: v for k, v in exp_params_dict.items() if k not in SESSION_PARAM_KEYS + } + exp_params = format_params_print(exp_params_dict) # Get Behavior details beh_module_path = input( "2. Enter the behavior module path relative to ethopy "