feat: Add track_init_fields decorator to track explicitly set fields in ModelSettings

This commit is contained in:
Paul Gauthier (aider) 2024-11-19 11:45:32 -08:00
parent 847454a4f7
commit ea4ad2ea4d

View file

@ -6,6 +6,7 @@ import platform
import sys import sys
import time import time
from dataclasses import dataclass, fields from dataclasses import dataclass, fields
from functools import wraps
from pathlib import Path from pathlib import Path
from typing import Optional from typing import Optional
@ -62,6 +63,18 @@ claude-3-5-sonnet-20241022
ANTHROPIC_MODELS = [ln.strip() for ln in ANTHROPIC_MODELS.splitlines() if ln.strip()] ANTHROPIC_MODELS = [ln.strip() for ln in ANTHROPIC_MODELS.splitlines() if ln.strip()]
def track_init_fields(cls):
original_init = cls.__init__
@wraps(original_init)
def __init__(self, **kwargs):
self._set_fields = set(kwargs.keys())
original_init(self, **kwargs)
cls.__init__ = __init__
return cls
@track_init_fields
@dataclass @dataclass
class ModelSettings: class ModelSettings:
# Model class needs to have each of these as well # Model class needs to have each of these as well
@ -82,13 +95,6 @@ class ModelSettings:
editor_model_name: Optional[str] = None editor_model_name: Optional[str] = None
editor_edit_format: Optional[str] = None editor_edit_format: Optional[str] = None
def __post_init__(self):
# Track which fields were explicitly set during initialization
dump(self.__dict__)
self._set_fields = set()
for field in fields(self.__class__):
if field.name in self.__dict__:
self._set_fields.add(field.name)
# https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo # https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo