


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





				@property
				def 						__UpperCamelCase    (				self)  -> str:
											torch.manual_seed(0)
											a__      =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





				def 						__UpperCamelCase    (				self)  -> int:
											a__      =self.dummy_uncond_unet
											a__      =PNDMScheduler()

											a__      =PNDMPipeline(unet=lowercase_       ,  scheduler=lowercase_)
											pndm.to(lowercase_)
											pndm.set_progress_bar_config(disable=lowercase_)

											a__      =torch.manual_seed(0)
											a__      =pndm(generator=lowercase_       ,  num_inference_steps=20       ,  output_type='numpy').images

											a__      =torch.manual_seed(0)
											a__      =pndm(generator=lowercase_       ,  num_inference_steps=20       ,  output_type='numpy'       ,  return_dict=lowercase_)[0]

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

											assert image.shape == (1, 32, 32, 3)
											a__      =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   ):





				def 						__UpperCamelCase    (				self)  -> str:
											a__      ='google/ddpm-cifar10-32'

											a__      =UNetaDModel.from_pretrained(lowercase_)
											a__      =PNDMScheduler()

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

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

											assert image.shape == (1, 32, 32, 3)
											a__      =np.array([0.15_64, 0.1_46_45, 0.14_06, 0.1_47_15, 0.1_24_25, 0.1_40_45, 0.1_31_15, 0.1_21_75, 0.1_25])

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









def       _SCREAMING_SNAKE_CASE    (			__lowercase :      int     )    ->   list[int]:





    """simple docstring"""

    if length <= 0 or not isinstance(__lowercase      ,					__lowercase     ):
        raise ValueError("""Length must be a positive integer."""     )
    return [n * (2 * n - 1) for n in range(__lowercase     )]


if __name__ == "__main__":
  print(hexagonal_numbers(length=5))
  print(hexagonal_numbers(length=10))




