refactor: ensure 'name' field appears first in YAML output

This commit is contained in:
Paul Gauthier (aider) 2025-01-25 08:43:40 -08:00
parent d54b13e80a
commit f2512d1ff1

View file

@ -1409,22 +1409,23 @@ def print_matching_models(io, search):
def get_model_settings_as_yaml(): def get_model_settings_as_yaml():
import yaml import yaml
from dataclasses import fields
model_settings_list = [] model_settings_list = []
for ms in MODEL_SETTINGS: for ms in MODEL_SETTINGS:
# Create ordered dict with name first # Create dict with explicit field order
model_settings_dict = {"name": ms.name} model_settings_dict = {}
# Add remaining fields in order
for field in fields(ModelSettings): 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) model_settings_list.append(model_settings_dict)
# Add blank line between entries # Add blank line between entries
model_settings_list.append(None) model_settings_list.append(None)
# Filter out None values before dumping # Filter out None values before dumping
yaml_str = yaml.dump( 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 # Add actual blank lines between entries
return yaml_str.replace("\n- ", "\n\n- ") return yaml_str.replace("\n- ", "\n\n- ")