import os from iopaint.schema import InpaintRequest os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1" import torch from iopaint.model_manager import ModelManager def test_model_switch(): model = ModelManager( name="runwayml/stable-diffusion-inpainting", enable_controlnet=True, controlnet_method="lllyasviel/control_v11p_sd15_canny", device=torch.device("mps"), disable_nsfw=True, sd_cpu_textencoder=True, cpu_offload=False, ) model.switch("lama") def test_controlnet_switch_onoff(caplog): name = "runwayml/stable-diffusion-inpainting" model = ModelManager( name=name, enable_controlnet=True, controlnet_method="lllyasviel/control_v11p_sd15_canny", device=torch.device("mps"), disable_nsfw=True, sd_cpu_textencoder=True, cpu_offload=False, ) model.switch_controlnet_method( InpaintRequest( name=name, enable_controlnet=False, ) ) assert "Disable controlnet" in caplog.text def test_switch_controlnet_method(caplog): name = "runwayml/stable-diffusion-inpainting" old_method = "lllyasviel/control_v11p_sd15_canny" new_method = "lllyasviel/control_v11p_sd15_openpose" model = ModelManager( name=name, enable_controlnet=True, controlnet_method=old_method, device=torch.device("mps"), disable_nsfw=True, sd_cpu_textencoder=True, cpu_offload=False, ) model.switch_controlnet_method( InpaintRequest( name=name, enable_controlnet=True, controlnet_method=new_method, ) ) assert f"Switch Controlnet method from {old_method} to {new_method}" in caplog.text