





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




 @property
 def 				_snake_case (						self		)     ->				Optional[Any]:
     torch.manual_seed(0		)
     _lowerCAmelCase						      =   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 				_snake_case (						self		)     ->				Optional[int]:
     torch.manual_seed(0		)
     _lowerCAmelCase						      =   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 				_snake_case (						self		)     ->				Any:
     torch.manual_seed(0		)
     _lowerCAmelCase						      =   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(_lowerCAmelCase		)





 def 				_snake_case (						self		)     ->				List[Any]:
     _lowerCAmelCase						      =   self.dummy_uncond_unet
     _lowerCAmelCase						      =   DDIMScheduler()
     _lowerCAmelCase						      =   self.dummy_vq_model

     _lowerCAmelCase						      =   LDMPipeline(unet=_lowerCAmelCase      ,  vqvae=_lowerCAmelCase      ,  scheduler=_lowerCAmelCase		)
     ldm.to(_lowerCAmelCase		)
     ldm.set_progress_bar_config(disable=_lowerCAmelCase		)

     _lowerCAmelCase						      =   torch.manual_seed(0		)
     _lowerCAmelCase						      =   ldm(generator=_lowerCAmelCase      ,  num_inference_steps=2      ,  output_type="numpy"		).images

     _lowerCAmelCase						      =   torch.manual_seed(0		)
     _lowerCAmelCase						      =   ldm(generator=_lowerCAmelCase      ,  num_inference_steps=2      ,  output_type="numpy"      ,  return_dict=_lowerCAmelCase		)[0]

     _lowerCAmelCase						      =   image[0, -3:, -3:, -1]
     _lowerCAmelCase						      =   image_from_tuple[0, -3:, -3:, -1]

     assert image.shape == (1, 64, 64, 3)
     _lowerCAmelCase						      =   np.array([0.8512, 0.818, 0.6411, 0.6808, 0.4465, 0.5618, 0.46, 0.6231, 0.5172]		)
     _lowerCAmelCase						      =   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  lowerCAmelCase_		(		unittest.TestCase		):




 def 				_snake_case (						self		)     ->				List[str]:
     _lowerCAmelCase						      =   LDMPipeline.from_pretrained("CompVis/ldm-celebahq-256"		)
     ldm.to(_lowerCAmelCase		)
     ldm.set_progress_bar_config(disable=_lowerCAmelCase		)

     _lowerCAmelCase						      =   torch.manual_seed(0		)
     _lowerCAmelCase						      =   ldm(generator=_lowerCAmelCase      ,  num_inference_steps=5      ,  output_type="numpy"		).images

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

     assert image.shape == (1, 256, 256, 3)
     _lowerCAmelCase						      =   np.array([0.4399, 0.44975, 0.46825, 0.474, 0.4359, 0.4581, 0.45095, 0.4341, 0.4447]		)
     _lowerCAmelCase						      =   1E-2 if torch_device != "mps" else 3E-2

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









'''simple docstring'''


def 						__a(SCREAMING_SNAKE_CASE_	:       int		,							SCREAMING_SNAKE_CASE_	:       int     ):



    '''simple docstring'''





    return numa ^ numa < 0


if __name__ == "__main__":
       import doctest

       doctest.testmod()


