


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







       def 						snake_case_     (       self:      List[Any] ):






            '''simple docstring'''




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







       def 						snake_case_     (       self:      Optional[Any] ):






            '''simple docstring'''




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

            sd_pipe.set_scheduler('sample_euler' )

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

            __UpperCamelCase      =       output.images

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

            assert image.shape == (1, 512, 512, 3)
            __UpperCamelCase      =       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:      int ):






            '''simple docstring'''




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

            sd_pipe.set_scheduler('sample_euler' )

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

            __UpperCamelCase      =       output.images

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

            assert image.shape == (1, 512, 512, 3)
            __UpperCamelCase      =       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:      Dict ):






            '''simple docstring'''




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

            sd_pipe.set_scheduler('sample_dpmpp_2m' )

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

            __UpperCamelCase      =       output.images

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

            assert image.shape == (1, 512, 512, 3)
            __UpperCamelCase      =       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




'''simple docstring'''







from ...utils import is_torch_available, is_transformers_available


if is_transformers_available() and is_torch_available():
					from .pipeline_vq_diffusion import LearnedClassifierFreeSamplingEmbeddings, VQDiffusionPipeline

