

'''simple docstring'''






import unittest

import numpy as np
import torch

from diffusers import PNDMPipeline, PNDMScheduler, UNetaDModel
from diffusers.utils.testing_utils import enable_full_determinism, require_torch, slow, torch_device


enable_full_determinism()






class 			lowercase_	(unittest.TestCase      ):




  """simple docstring"""




  @property
  def 					SCREAMING_SNAKE_CASE      (      self   :     Union[str, Any]			):
   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






  def 					SCREAMING_SNAKE_CASE      (      self   :     Any			):
   __lowercase							  = self.dummy_uncond_unet
   __lowercase							  = PNDMScheduler()

   __lowercase							  = PNDMPipeline(unet=lowercase__					,scheduler=lowercase__			)
   pndm.to(lowercase__			)
   pndm.set_progress_bar_config(disable=lowercase__			)

   __lowercase							  = torch.manual_seed(0			)
   __lowercase							  = pndm(generator=lowercase__					,num_inference_steps=2_0					,output_type='''numpy'''			).images

   __lowercase							  = torch.manual_seed(0			)
   __lowercase							  = pndm(generator=lowercase__					,num_inference_steps=2_0					,output_type='''numpy'''					,return_dict=lowercase__			)[0]

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

   assert image.shape == (1, 3_2, 3_2, 3)
   __lowercase							  = np.array([1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0]			)

   assert np.abs(image_slice.flatten() - expected_slice			).max() < 1e-2
   assert np.abs(image_from_tuple_slice.flatten() - expected_slice			).max() < 1e-2






@slow
@require_torch
class 			lowercase_	(unittest.TestCase      ):




  """simple docstring"""




  def 					SCREAMING_SNAKE_CASE      (      self   :     Optional[Any]			):
   __lowercase							  = '''google/ddpm-cifar10-32'''

   __lowercase							  = UNetaDModel.from_pretrained(lowercase__			)
   __lowercase							  = PNDMScheduler()

   __lowercase							  = PNDMPipeline(unet=lowercase__					,scheduler=lowercase__			)
   pndm.to(lowercase__			)
   pndm.set_progress_bar_config(disable=lowercase__			)
   __lowercase							  = torch.manual_seed(0			)
   __lowercase							  = pndm(generator=lowercase__					,output_type='''numpy'''			).images

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

   assert image.shape == (1, 3_2, 3_2, 3)
   __lowercase							  = np.array([0.1_5_6_4, 0.1_4_6_4_5, 0.1_4_0_6, 0.1_4_7_1_5, 0.1_2_4_2_5, 0.1_4_0_4_5, 0.1_3_1_1_5, 0.1_2_1_7_5, 0.1_2_5]			)

   assert np.abs(image_slice.flatten() - expected_slice			).max() < 1e-2




'''simple docstring'''






def 		_A     (    A__ = 10     ,				A__ = 22      ):






 """simple docstring"""



 __lowercase							  = range(1     ,				A__      )
 __lowercase							  = range(1     ,				A__      )
 return sum(
     1 for power in powers for base in bases if len(str(base**power      )      ) == power      )


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

