"""simple docstring"""







import unittest

import numpy as np
import torch
from transformers import CLIPTextConfig, CLIPTextModel

from diffusers import DDIMScheduler, LDMPipeline, UNetaDModel, VQModel
from diffusers.utils.testing_utils import enable_full_determinism, require_torch, slow, torch_device


enable_full_determinism()







class  UpperCamelCase	(    unittest.TestCase						):
   @property
   def     _UpperCAmelCase     (    self    )			->   Dict:


        '''simple docstring'''


        torch.manual_seed(0    )
        lowercase_			:       Optional[int]									=			UNetaDModel(
            block_out_channels=(32, 64)  ,layers_per_block=2  ,sample_size=32  ,in_channels=3  ,out_channels=3  ,down_block_types=('DownBlock2D', 'AttnDownBlock2D')  ,up_block_types=('AttnUpBlock2D', 'UpBlock2D')  ,)
        return model
   @property
   def     _UpperCAmelCase     (    self    )			->   str:


        '''simple docstring'''


        torch.manual_seed(0    )
        lowercase_			:       Optional[int]									=			VQModel(
            block_out_channels=[32, 64]  ,in_channels=3  ,out_channels=3  ,down_block_types=['DownEncoderBlock2D', 'DownEncoderBlock2D']  ,up_block_types=['UpDecoderBlock2D', 'UpDecoderBlock2D']  ,latent_channels=3  ,)
        return model
   @property
   def     _UpperCAmelCase     (    self    )			->   Optional[Any]:


        '''simple docstring'''


        torch.manual_seed(0    )
        lowercase_			:       int									=			CLIPTextConfig(
            bos_token_id=0  ,eos_token_id=2  ,hidden_size=32  ,intermediate_size=37  ,layer_norm_eps=1e-05  ,num_attention_heads=4  ,num_hidden_layers=5  ,pad_token_id=1  ,vocab_size=1000  ,)
        return CLIPTextModel(__UpperCamelCase    )







   def     _UpperCAmelCase     (    self    )			->   Dict:


        '''simple docstring'''


        lowercase_			:       Dict									=			self.dummy_uncond_unet
        lowercase_			:       int									=			DDIMScheduler()
        lowercase_			:       List[Any]									=			self.dummy_vq_model

        lowercase_			:       int									=			LDMPipeline(unet=__UpperCamelCase  ,vqvae=__UpperCamelCase  ,scheduler=__UpperCamelCase    )
        ldm.to(__UpperCamelCase    )
        ldm.set_progress_bar_config(disable=__UpperCamelCase    )

        lowercase_			:       Union[str, Any]									=			torch.manual_seed(0    )
        lowercase_			:       str									=			ldm(generator=__UpperCamelCase  ,num_inference_steps=2  ,output_type='numpy'    ).images

        lowercase_			:       Optional[Any]									=			torch.manual_seed(0    )
        lowercase_			:       List[Any]									=			ldm(generator=__UpperCamelCase  ,num_inference_steps=2  ,output_type='numpy'  ,return_dict=__UpperCamelCase    )[0]

        lowercase_			:       List[Any]									=			image[0, -3:, -3:, -1]
        lowercase_			:       Dict									=			image_from_tuple[0, -3:, -3:, -1]

        assert image.shape == (1, 64, 64, 3)
        lowercase_			:       Union[str, Any]									=			np.array([0.8512, 0.818, 0.6411, 0.6808, 0.4465, 0.5618, 0.46, 0.6231, 0.5172]    )
        lowercase_			:       Optional[Any]									=			1e-2 if torch_device != 'mps' else 3e-2

        assert np.abs(image_slice.flatten() - expected_slice    ).max() < tolerance
        assert np.abs(image_from_tuple_slice.flatten() - expected_slice    ).max() < tolerance







@slow
@require_torch
class  UpperCamelCase	(    unittest.TestCase						):
   def     _UpperCAmelCase     (    self    )			->   Dict:


        '''simple docstring'''


        lowercase_			:       List[Any]									=			LDMPipeline.from_pretrained('CompVis/ldm-celebahq-256'    )
        ldm.to(__UpperCamelCase    )
        ldm.set_progress_bar_config(disable=__UpperCamelCase    )

        lowercase_			:       Tuple									=			torch.manual_seed(0    )
        lowercase_			:       List[Any]									=			ldm(generator=__UpperCamelCase  ,num_inference_steps=5  ,output_type='numpy'    ).images

        lowercase_			:       str									=			image[0, -3:, -3:, -1]

        assert image.shape == (1, 256, 256, 3)
        lowercase_			:       int									=			np.array([0.4399, 0.4_4975, 0.4_6825, 0.474, 0.4359, 0.4581, 0.4_5095, 0.4341, 0.4447]    )
        lowercase_			:       Optional[int]									=			1e-2 if torch_device != 'mps' else 3e-2

        assert np.abs(image_slice.flatten() - expected_slice    ).max() < tolerance


"""simple docstring"""







from diffusers.utils.testing_utils import require_onnxruntime







@require_onnxruntime
class  UpperCamelCase	:
   pass

