


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


  @property
  def 							_lowercase					(			self:						Dict    ):







     '''simple docstring'''







     torch.manual_seed(0    )
     _lowerCamelCase   :				Optional[Any]							=     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 							_lowercase					(			self:						Dict    ):







     '''simple docstring'''







     torch.manual_seed(0    )
     _lowerCamelCase   :				Union[str, Any]							=     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 							_lowercase					(			self:						Union[str, Any]    ):







     '''simple docstring'''







     torch.manual_seed(0    )
     _lowerCamelCase   :				List[str]							=     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=1_000							,)
     return CLIPTextModel(__lowerCAmelCase    )






  def 							_lowercase					(			self:						List[str]    ):







     '''simple docstring'''







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

     _lowerCamelCase   :				List[str]							=     LDMPipeline(unet=__lowerCAmelCase							,vqvae=__lowerCAmelCase							,scheduler=__lowerCAmelCase    )
     ldm.to(__lowerCAmelCase    )
     ldm.set_progress_bar_config(disable=__lowerCAmelCase    )

     _lowerCamelCase   :				List[Any]							=     torch.manual_seed(0    )
     _lowerCamelCase   :				Optional[Any]							=     ldm(generator=__lowerCAmelCase							,num_inference_steps=2							,output_type="numpy"    ).images

     _lowerCamelCase   :				Tuple							=     torch.manual_seed(0    )
     _lowerCamelCase   :				List[str]							=     ldm(generator=__lowerCAmelCase							,num_inference_steps=2							,output_type="numpy"							,return_dict=__lowerCAmelCase    )[0]

     _lowerCamelCase   :				Tuple							=     image[0, -3:, -3:, -1]
     _lowerCamelCase   :				List[Any]							=     image_from_tuple[0, -3:, -3:, -1]

     assert image.shape == (1, 64, 64, 3)
     _lowerCamelCase   :				Any							=     np.array([0.85_12, 0.8_18, 0.64_11, 0.68_08, 0.44_65, 0.56_18, 0.46, 0.62_31, 0.51_72]    )
     _lowerCamelCase   :				Union[str, 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 							A_      (       unittest.TestCase ):


  def 							_lowercase					(			self:						Dict    ):







     '''simple docstring'''







     _lowerCamelCase   :				Optional[Any]							=     LDMPipeline.from_pretrained("CompVis/ldm-celebahq-256"    )
     ldm.to(__lowerCAmelCase    )
     ldm.set_progress_bar_config(disable=__lowerCAmelCase    )

     _lowerCamelCase   :				Any							=     torch.manual_seed(0    )
     _lowerCamelCase   :				Any							=     ldm(generator=__lowerCAmelCase							,num_inference_steps=5							,output_type="numpy"    ).images

     _lowerCamelCase   :				List[Any]							=     image[0, -3:, -3:, -1]

     assert image.shape == (1, 256, 256, 3)
     _lowerCamelCase   :				Dict							=     np.array([0.43_99, 0.4_49_75, 0.4_68_25, 0.4_74, 0.43_59, 0.45_81, 0.4_50_95, 0.43_41, 0.44_47]    )
     _lowerCamelCase   :				List[Any]							=     1e-2 if torch_device != "mps" else 3e-2

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







def 	UpperCamelCase	(							snake_case__  : int	):




     '''simple docstring'''






     __snake_case      :List[Any] 							=    0
     while num > 0:
          digit_sum += num % 10
          num //= 10
     return digit_sum






def 	UpperCamelCase	(							snake_case__  : int = 100	):




     '''simple docstring'''






     __snake_case      :Tuple 							=    1
     __snake_case      :Dict 							=    2

     for i in range(2						,max_n + 1	):
          __snake_case      :Optional[int] 							=    pre_numerator
          __snake_case      :List[Any] 							=    2 * i // 3 if i % 3 == 0 else 1
          __snake_case      :Dict 							=    cur_numerator
          __snake_case      :Optional[Any] 							=    e_cont * pre_numerator + temp

     return sum_digits(snake_case__	)


if __name__ == "__main__":
     print(f'''{solution() = }''')


