






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 						lowercase_   (      unittest.TestCase  ):






      '''simple docstring'''




      def  __lowerCAmelCase   ( self :		Optional[int]    )       ->int:




       """simple docstring"""


       super().tearDown()
       gc.collect()
       torch.cuda.empty_cache()







      def  __lowerCAmelCase   ( self :		Union[str, Any]    )       ->Tuple:




       """simple docstring"""


       a						    = StableDiffusionKDiffusionPipeline.from_pretrained('''CompVis/stable-diffusion-v1-4'''    )
       a						    = sd_pipe.to(__lowercase    )
       sd_pipe.set_progress_bar_config(disable=__lowercase    )

       sd_pipe.set_scheduler('''sample_euler'''    )

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

       a						    = output.images

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

       assert image.shape == (1, 512, 512, 3)
       a						    = 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  __lowerCAmelCase   ( self :		Union[str, Any]    )       ->Union[str, Any]:




       """simple docstring"""


       a						    = StableDiffusionKDiffusionPipeline.from_pretrained('''stabilityai/stable-diffusion-2-1-base'''    )
       a						    = sd_pipe.to(__lowercase    )
       sd_pipe.set_progress_bar_config(disable=__lowercase    )

       sd_pipe.set_scheduler('''sample_euler'''    )

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

       a						    = output.images

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

       assert image.shape == (1, 512, 512, 3)
       a						    = 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  __lowerCAmelCase   ( self :		int    )       ->List[Any]:




       """simple docstring"""


       a						    = StableDiffusionKDiffusionPipeline.from_pretrained('''stabilityai/stable-diffusion-2-1-base'''    )
       a						    = sd_pipe.to(__lowercase    )
       sd_pipe.set_progress_bar_config(disable=__lowercase    )

       sd_pipe.set_scheduler('''sample_dpmpp_2m'''    )

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

       a						    = output.images

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

       assert image.shape == (1, 512, 512, 3)
       a						    = np.array(
           [0.11381689, 0.12112921, 0.1389457, 0.12549606, 0.1244964, 0.10831517, 0.11562866, 0.10867816, 0.10499048]    )

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








from abc import ABC, abstractmethod
from argparse import ArgumentParser
class 						UpperCAmelCase  (							UpperCAmelCase__     ):







						'''simple docstring'''





						@staticmethod
						@abstractmethod
						def 			snake_case__		(		__lowercase				:	ArgumentParser		):






							"""simple docstring"""






							raise NotImplementedError()






						@abstractmethod
						def 			snake_case__		(		self				:	Optional[Any]		):






							"""simple docstring"""






							raise NotImplementedError()
