






'''simple docstring'''







import gc
import unittest

import numpy as np
import torch

from diffusers import StableDiffusionKDiffusionPipeline
from diffusers.utils import slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu


enable_full_determinism()




@slow
@require_torch_gpu
class 		UpperCamelCase__     (unittest.TestCase      ):




		'''simple docstring'''





		def       UpperCamelCase_       (   self							):
								# clean up the VRAM after each test
								super().tearDown()
								gc.collect()
								torch.cuda.empty_cache()






		def       UpperCamelCase_       (   self							):
								lowerCamelCase__								=	StableDiffusionKDiffusionPipeline.from_pretrained("""CompVis/stable-diffusion-v1-4"""							)
								lowerCamelCase__								=	sd_pipe.to(_lowerCAmelCase							)
								sd_pipe.set_progress_bar_config(disable=_lowerCAmelCase							)

								sd_pipe.set_scheduler("""sample_euler"""							)

								lowerCamelCase__								=	"""A painting of a squirrel eating a burger"""
								lowerCamelCase__								=	torch.manual_seed(0							)
								lowerCamelCase__								=	sd_pipe([prompt] ,generator=_lowerCAmelCase ,guidance_scale=9.0 ,num_inference_steps=20 ,output_type="""np"""							)

								lowerCamelCase__								=	output.images

								lowerCamelCase__								=	image[0, -3:, -3:, -1]

								assert image.shape == (1, 5_12, 5_12, 3)
								lowerCamelCase__								=	np.array([0.0447, 0.0492, 0.0468, 0.0408, 0.0383, 0.0408, 0.0354, 0.0380, 0.0339]							)

								assert np.abs(image_slice.flatten() - expected_slice							).max() < 1E-2






		def       UpperCamelCase_       (   self							):
								lowerCamelCase__								=	StableDiffusionKDiffusionPipeline.from_pretrained("""stabilityai/stable-diffusion-2-1-base"""							)
								lowerCamelCase__								=	sd_pipe.to(_lowerCAmelCase							)
								sd_pipe.set_progress_bar_config(disable=_lowerCAmelCase							)

								sd_pipe.set_scheduler("""sample_euler"""							)

								lowerCamelCase__								=	"""A painting of a squirrel eating a burger"""
								lowerCamelCase__								=	torch.manual_seed(0							)
								lowerCamelCase__								=	sd_pipe([prompt] ,generator=_lowerCAmelCase ,guidance_scale=9.0 ,num_inference_steps=20 ,output_type="""np"""							)

								lowerCamelCase__								=	output.images

								lowerCamelCase__								=	image[0, -3:, -3:, -1]

								assert image.shape == (1, 5_12, 5_12, 3)
								lowerCamelCase__								=	np.array([0.1237, 0.1320, 0.1438, 0.1359, 0.1390, 0.1132, 0.1277, 0.1175, 0.1112]							)

								assert np.abs(image_slice.flatten() - expected_slice							).max() < 5E-1






		def       UpperCamelCase_       (   self							):
								lowerCamelCase__								=	StableDiffusionKDiffusionPipeline.from_pretrained("""stabilityai/stable-diffusion-2-1-base"""							)
								lowerCamelCase__								=	sd_pipe.to(_lowerCAmelCase							)
								sd_pipe.set_progress_bar_config(disable=_lowerCAmelCase							)

								sd_pipe.set_scheduler("""sample_dpmpp_2m"""							)

								lowerCamelCase__								=	"""A painting of a squirrel eating a burger"""
								lowerCamelCase__								=	torch.manual_seed(0							)
								lowerCamelCase__								=	sd_pipe(
								    [prompt] ,generator=_lowerCAmelCase ,guidance_scale=7.5 ,num_inference_steps=15 ,output_type="""np""" ,use_karras_sigmas=_lowerCAmelCase ,)

								lowerCamelCase__								=	output.images

								lowerCamelCase__								=	image[0, -3:, -3:, -1]

								assert image.shape == (1, 5_12, 5_12, 3)
								lowerCamelCase__								=	np.array(
								    [0.1138_1689, 0.1211_2921, 0.138_9457, 0.1254_9606, 0.124_4964, 0.1083_1517, 0.1156_2866, 0.1086_7816, 0.1049_9048]							)

								assert np.abs(image_slice.flatten() - expected_slice							).max() < 1E-2







'''simple docstring'''







from dataclasses import dataclass
from typing import List, Optional, Union

import numpy as np
import PIL

from ...utils import BaseOutput, OptionalDependencyNotAvailable, is_torch_available, is_transformers_available
from .timesteps import (
    fastaa_timesteps,
    smartaa_timesteps,
    smartaa_timesteps,
    smartaaa_timesteps,
    smartaaa_timesteps,
    superaa_timesteps,
    superaa_timesteps,
    superaaa_timesteps,
)

@dataclass
class 	_snake_case(			UpperCAmelCase      ):
 __snake_case:							Union[List[PIL.Image.Image], np.ndarray]
 __snake_case:							Optional[List[bool]]
 __snake_case:							Optional[List[bool]]


try:
    if not (is_transformers_available() and is_torch_available()):
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    from ...utils.dummy_torch_and_transformers_objects import *  # noqa F403
else:
    from .pipeline_if import IFPipeline
    from .pipeline_if_imgaimg import IFImgaImgPipeline
    from .pipeline_if_imgaimg_superresolution import IFImgaImgSuperResolutionPipeline
    from .pipeline_if_inpainting import IFInpaintingPipeline
    from .pipeline_if_inpainting_superresolution import IFInpaintingSuperResolutionPipeline
    from .pipeline_if_superresolution import IFSuperResolutionPipeline
    from .safety_checker import IFSafetyChecker
    from .watermark import IFWatermarker


