From f53a578891dbfd249afc0f24772f7875fb980562 Mon Sep 17 00:00:00 2001 From: Heather Renze Date: Mon, 16 Mar 2026 10:22:17 -0700 Subject: [PATCH] fix: resolve argparse conflict for --credentials-secret in nested configs When multiple config TypedDicts (e.g. azure_blob_storage_config, gcs_config) share the same nested field name (e.g. credentials_secret), add_args_from_callable_signature was adding the short alias --credentials-secret for each, causing argparse to fail: ArgumentError: argument --azure-blob-storage-config-credentials-secret/--credentials-secret: conflicting option string: --credentials-secret Fix: Omit the short alias for nested fields. Callers can still use the full prefixed flag (e.g. --azure-blob-storage-config-credentials-secret). Made-with: Cursor --- eval_protocol/cli_commands/utils.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/eval_protocol/cli_commands/utils.py b/eval_protocol/cli_commands/utils.py index 1338ae31..0ebdc6c2 100644 --- a/eval_protocol/cli_commands/utils.py +++ b/eval_protocol/cli_commands/utils.py @@ -738,7 +738,10 @@ def add_args_from_callable_signature( prefix = name.replace("_", "-") field_kebab = field_name.replace("_", "-") flag_name = f"--{prefix}-{field_kebab}" - flags = [flag_name] + aliases.get(f"{name}.{field_name}", []) + [f"--{field_kebab}"] + # Omit short alias --{field_kebab} to avoid argparse conflict when multiple + # configs (e.g. azure_blob_storage_config, gcs_config) share the same + # nested field name (e.g. credentials_secret). + flags = [flag_name] + aliases.get(f"{name}.{field_name}", []) help_text = help_overrides.get(f"{name}.{field_name}", field_help.get(field_name)) _add_flag(parser, flags, field_hints.get(field_name, field_type), help_text)