



'''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		):





				'''simple docstring'''





				@property
				def 				__lowerCamelCase     (							self  :  Union[str, Any]):







											'''simple docstring'''

											torch.manual_seed(0)
											__lowercase       	=UNetaDModel(
											    block_out_channels=(3_2, 6_4)  ,       layers_per_block=2  ,       sample_size=3_2  ,       in_channels=3  ,       out_channels=3  ,       down_block_types=('DownBlock2D', 'AttnDownBlock2D')  ,       up_block_types=('AttnUpBlock2D', 'UpBlock2D')  ,       )
											return model

				@property
				def 				__lowerCamelCase     (							self  :  str):







											'''simple docstring'''

											torch.manual_seed(0)
											__lowercase       	=VQModel(
											    block_out_channels=[3_2, 6_4]  ,       in_channels=3  ,       out_channels=3  ,       down_block_types=['DownEncoderBlock2D', 'DownEncoderBlock2D']  ,       up_block_types=['UpDecoderBlock2D', 'UpDecoderBlock2D']  ,       latent_channels=3  ,       )
											return model

				@property
				def 				__lowerCamelCase     (							self  :  Optional[int]):







											'''simple docstring'''

											torch.manual_seed(0)
											__lowercase       	=CLIPTextConfig(
											    bos_token_id=0  ,       eos_token_id=2  ,       hidden_size=3_2  ,       intermediate_size=3_7  ,       layer_norm_eps=1e-05  ,       num_attention_heads=4  ,       num_hidden_layers=5  ,       pad_token_id=1  ,       vocab_size=1_0_0_0  ,       )
											return CLIPTextModel(_lowerCAmelCase)

				def 				__lowerCamelCase     (							self  :  Optional[int]):







											'''simple docstring'''

											__lowercase       	=self.dummy_uncond_unet
											__lowercase       	=DDIMScheduler()
											__lowercase       	=self.dummy_vq_model

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

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

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

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

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





				'''simple docstring'''





				def 				__lowerCamelCase     (							self  :  Tuple):







											'''simple docstring'''

											__lowercase       	=LDMPipeline.from_pretrained('CompVis/ldm-celebahq-256')
											ldm.to(_lowerCAmelCase)
											ldm.set_progress_bar_config(disable=_lowerCAmelCase)

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

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

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

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








'''simple docstring'''



def   _A       (   _lowerCAmelCase					):



							"""simple docstring"""



							if not isinstance(_lowerCAmelCase  ,   _lowerCAmelCase					):
														raise TypeError('only integers accepted as input'					)
							else:
														__lowercase       	=str(abs(_lowerCAmelCase					)					)
														__lowercase       	=[list(_lowerCAmelCase					) for char in range(len(_lowerCAmelCase					)					)]
														for index in range(len(_lowerCAmelCase					)					):
																					num_transpositions[index].pop(_lowerCAmelCase					)
														return max(
														    int(''.join(list(_lowerCAmelCase					)					)					) for transposition in num_transpositions					)


if __name__ == "__main__":
		__import__("""doctest""").testmod()



