



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


						'''simple docstring'''



						def 							__snake_case       (   self )      ->      Tuple:
							super().tearDown()
							gc.collect()
							torch.cuda.empty_cache()


						def 							__snake_case       (   self )      ->      int:
							lowerCAmelCase       =      StableDiffusionKDiffusionPipeline.from_pretrained("""CompVis/stable-diffusion-v1-4""" )
							lowerCAmelCase       =      sd_pipe.to(A_ )
							sd_pipe.set_progress_bar_config(disable=A_ )

							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=A_      ,			guidance_scale=9.0      ,			num_inference_steps=20      ,			output_type="""np""" )

							lowerCAmelCase       =      output.images

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

							assert image.shape == (1, 512, 512, 3)
							lowerCAmelCase       =      np.array([0.0_4_4_7, 0.0_4_9_2, 0.0_4_6_8, 0.0_4_0_8, 0.0_3_8_3, 0.0_4_0_8, 0.0_3_5_4, 0.0_3_8_0, 0.0_3_3_9] )

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


						def 							__snake_case       (   self )      ->      Optional[int]:
							lowerCAmelCase       =      StableDiffusionKDiffusionPipeline.from_pretrained("""stabilityai/stable-diffusion-2-1-base""" )
							lowerCAmelCase       =      sd_pipe.to(A_ )
							sd_pipe.set_progress_bar_config(disable=A_ )

							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=A_      ,			guidance_scale=9.0      ,			num_inference_steps=20      ,			output_type="""np""" )

							lowerCAmelCase       =      output.images

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

							assert image.shape == (1, 512, 512, 3)
							lowerCAmelCase       =      np.array([0.1_2_3_7, 0.1_3_2_0, 0.1_4_3_8, 0.1_3_5_9, 0.1_3_9_0, 0.1_1_3_2, 0.1_2_7_7, 0.1_1_7_5, 0.1_1_1_2] )

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




						def 							__snake_case       (   self )      ->      List[Any]:
							lowerCAmelCase       =      StableDiffusionKDiffusionPipeline.from_pretrained("""stabilityai/stable-diffusion-2-1-base""" )
							lowerCAmelCase       =      sd_pipe.to(A_ )
							sd_pipe.set_progress_bar_config(disable=A_ )

							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=A_      ,			guidance_scale=7.5      ,			num_inference_steps=15      ,			output_type="""np"""      ,			use_karras_sigmas=A_      ,			)

							lowerCAmelCase       =      output.images

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

							assert image.shape == (1, 512, 512, 3)
							lowerCAmelCase       =      np.array(
							    [0.1_1_3_8_1_6_8_9, 0.1_2_1_1_2_9_2_1, 0.1_3_8_9_4_5_7, 0.1_2_5_4_9_6_0_6, 0.1_2_4_4_9_6_4, 0.1_0_8_3_1_5_1_7, 0.1_1_5_6_2_8_6_6, 0.1_0_8_6_7_8_1_6, 0.1_0_4_9_9_0_4_8] )

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


a_      =     frozenset(
    [
        'prompt',
        'height',
        'width',
        'guidance_scale',
        'negative_prompt',
        'prompt_embeds',
        'negative_prompt_embeds',
        'cross_attention_kwargs',
    ]
)

a_      =     frozenset(['prompt', 'negative_prompt'])

a_      =     frozenset([])

a_      =     frozenset(['image'])

a_      =     frozenset(
    [
        'image',
        'height',
        'width',
        'guidance_scale',
    ]
)

a_      =     frozenset(['image'])

a_      =     frozenset(
    [
        'prompt',
        'image',
        'height',
        'width',
        'guidance_scale',
        'negative_prompt',
        'prompt_embeds',
        'negative_prompt_embeds',
    ]
)

a_      =     frozenset(['prompt', 'image', 'negative_prompt'])

a_      =     frozenset(
    [
        # Text guided image variation with an image mask
        'prompt',
        'image',
        'mask_image',
        'height',
        'width',
        'guidance_scale',
        'negative_prompt',
        'prompt_embeds',
        'negative_prompt_embeds',
    ]
)

a_      =     frozenset(['prompt', 'image', 'mask_image', 'negative_prompt'])

a_      =     frozenset(
    [
        # image variation with an image mask
        'image',
        'mask_image',
        'height',
        'width',
        'guidance_scale',
    ]
)

a_      =     frozenset(['image', 'mask_image'])

a_      =     frozenset(
    [
        'example_image',
        'image',
        'mask_image',
        'height',
        'width',
        'guidance_scale',
    ]
)

a_      =     frozenset(['example_image', 'image', 'mask_image'])

a_      =     frozenset(['class_labels'])

a_      =     frozenset(['class_labels'])

a_      =     frozenset(['batch_size'])

a_      =     frozenset([])

a_      =     frozenset(['batch_size'])

a_      =     frozenset([])

a_      =     frozenset(
    [
        'prompt',
        'audio_length_in_s',
        'guidance_scale',
        'negative_prompt',
        'prompt_embeds',
        'negative_prompt_embeds',
        'cross_attention_kwargs',
    ]
)

a_      =     frozenset(['prompt', 'negative_prompt'])
a_      =     frozenset(['input_tokens'])

a_      =     frozenset(['input_tokens'])