From f2512d1ff11267cb1c4a014b65608cefa9dd280d Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Sat, 25 Jan 2025 08:43:40 -0800 Subject: [PATCH] refactor: ensure 'name' field appears first in YAML output --- aider/models.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/aider/models.py b/aider/models.py index 915d0a632..877127377 100644 --- a/aider/models.py +++ b/aider/models.py @@ -1409,22 +1409,23 @@ def print_matching_models(io, search): def get_model_settings_as_yaml(): import yaml + from dataclasses import fields model_settings_list = [] for ms in MODEL_SETTINGS: - # Create ordered dict with name first - model_settings_dict = {"name": ms.name} - # Add remaining fields in order + # Create dict with explicit field order + model_settings_dict = {} for field in fields(ModelSettings): - if field.name != "name": - model_settings_dict[field.name] = getattr(ms, field.name) + model_settings_dict[field.name] = getattr(ms, field.name) model_settings_list.append(model_settings_dict) # Add blank line between entries model_settings_list.append(None) # Filter out None values before dumping yaml_str = yaml.dump( - [ms for ms in model_settings_list if ms is not None], default_flow_style=False + [ms for ms in model_settings_list if ms is not None], + default_flow_style=False, + sort_keys=False # Preserve field order from dataclass ) # Add actual blank lines between entries return yaml_str.replace("\n- ", "\n\n- ")