From d89472d3b1577153f68ecd9554f82e1d20de68ad Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Wed, 24 Sep 2025 18:34:14 +1000 Subject: [PATCH] feat(mm): port SigLIPDiffusersConfig to new api --- invokeai/backend/model_manager/config.py | 33 +++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/invokeai/backend/model_manager/config.py b/invokeai/backend/model_manager/config.py index f9b74b067b..29624eef95 100644 --- a/invokeai/backend/model_manager/config.py +++ b/invokeai/backend/model_manager/config.py @@ -1149,12 +1149,43 @@ class SpandrelImageToImageConfig(ModelConfigBase): raise NotAMatch(cls, "model does not match SpandrelImageToImage heuristics") from e -class SigLIPConfig(DiffusersConfigBase, LegacyProbeMixin, ModelConfigBase): +class SigLIPConfig(DiffusersConfigBase, ModelConfigBase): """Model config for SigLIP.""" type: Literal[ModelType.SigLIP] = ModelType.SigLIP format: Literal[ModelFormat.Diffusers] = ModelFormat.Diffusers + VALID_OVERRIDES: ClassVar = { + "type": ModelType.SigLIP, + "format": ModelFormat.Diffusers, + } + + VALID_CLASS_NAMES: ClassVar = { + "SiglipModel", + } + + @classmethod + def from_model_on_disk(cls, mod: ModelOnDisk, fields: dict[str, Any]) -> Self: + if _validate_overrides( + config_class=cls, + provided_overrides=fields, + valid_overrides=cls.VALID_OVERRIDES, + ): + return cls(**fields) + + if mod.path.is_file(): + raise NotAMatch(cls, "model path is a file, not a directory") + + config_path = mod.path / "config.json" + + _validate_class_names( + config_class=cls, + config_path=config_path, + valid_class_names=cls.VALID_CLASS_NAMES, + ) + + return cls(**fields) + class FluxReduxConfig(LegacyProbeMixin, ModelConfigBase): """Model config for FLUX Tools Redux model."""