diff --git a/invokeai/backend/model_manager/configs/factory.py b/invokeai/backend/model_manager/configs/factory.py index 03ab40ca5a..7be18014aa 100644 --- a/invokeai/backend/model_manager/configs/factory.py +++ b/invokeai/backend/model_manager/configs/factory.py @@ -457,15 +457,7 @@ class ModelConfigFactory: # Now do any post-processing needed for specific model types/bases/etc. match instance.type: case ModelType.Main: - match instance.base: - case BaseModelType.StableDiffusion1: - instance.default_settings = MainModelDefaultSettings(width=512, height=512) - case BaseModelType.StableDiffusion2: - instance.default_settings = MainModelDefaultSettings(width=768, height=768) - case BaseModelType.StableDiffusionXL: - instance.default_settings = MainModelDefaultSettings(width=1024, height=1024) - case _: - pass + instance.default_settings = MainModelDefaultSettings.from_base(instance.base) case ModelType.ControlNet | ModelType.T2IAdapter | ModelType.ControlLoRa: instance.default_settings = ControlAdapterDefaultSettings.from_model_name(instance.name) case ModelType.LoRA: diff --git a/invokeai/backend/model_manager/configs/main.py b/invokeai/backend/model_manager/configs/main.py index cb09a0c884..dcb948d99b 100644 --- a/invokeai/backend/model_manager/configs/main.py +++ b/invokeai/backend/model_manager/configs/main.py @@ -51,6 +51,19 @@ class MainModelDefaultSettings(BaseModel): model_config = ConfigDict(extra="forbid") + @classmethod + def from_base(cls, base: BaseModelType) -> Self | None: + match base: + case BaseModelType.StableDiffusion1: + return cls(width=512, height=512) + case BaseModelType.StableDiffusion2: + return cls(width=768, height=768) + case BaseModelType.StableDiffusionXL: + return cls(width=1024, height=1024) + case _: + # TODO(psyche): Do we want defaults for other base types? + return None + class Main_Config_Base(ABC, BaseModel): type: Literal[ModelType.Main] = Field(default=ModelType.Main)