




import unittest

import numpy as np
import torch

from diffusers import KarrasVePipeline, KarrasVeScheduler, UNetaDModel
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 			SCREAMING_SNAKE_CASE				(     self :      List[str])		->List[Any]:





           '''simple docstring'''

           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 			SCREAMING_SNAKE_CASE				(     self :      Tuple)		->int:





           '''simple docstring'''

           A__ 					=       self.dummy_uncond_unet
           A__ 					=       KarrasVeScheduler()

           A__ 					=       KarrasVePipeline(unet=UpperCAmelCase__   ,					scheduler=UpperCAmelCase__)
           pipe.to(UpperCAmelCase__)
           pipe.set_progress_bar_config(disable=UpperCAmelCase__)

           A__ 					=       torch.manual_seed(0)
           A__ 					=       pipe(num_inference_steps=2   ,					generator=UpperCAmelCase__   ,					output_type='''numpy''').images

           A__ 					=       torch.manual_seed(0)
           A__ 					=       pipe(num_inference_steps=2   ,					generator=UpperCAmelCase__   ,					output_type='''numpy'''   ,					return_dict=UpperCAmelCase__)[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([0.0, 1.0, 0.0, 0.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 							UpperCamelCase_       (					unittest.TestCase	):

    '''simple docstring'''






    def 			SCREAMING_SNAKE_CASE				(     self :      Tuple)		->List[str]:





           '''simple docstring'''

           A__ 					=       '''google/ncsnpp-celebahq-256'''
           A__ 					=       UNetaDModel.from_pretrained(UpperCAmelCase__)
           A__ 					=       KarrasVeScheduler()

           A__ 					=       KarrasVePipeline(unet=UpperCAmelCase__   ,					scheduler=UpperCAmelCase__)
           pipe.to(UpperCAmelCase__)
           pipe.set_progress_bar_config(disable=UpperCAmelCase__)

           A__ 					=       torch.manual_seed(0)
           A__ 					=       pipe(num_inference_steps=20   ,					generator=UpperCAmelCase__   ,					output_type='''numpy''').images

           A__ 					=       image[0, -3:, -3:, -1]
           assert image.shape == (1, 256, 256, 3)
           A__ 					=       np.array([0.578, 0.5811, 0.5924, 0.5809, 0.587, 0.5886, 0.5861, 0.5802, 0.586])

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



from typing import Any



def 	__A		(      _A       ):



 """simple docstring"""


 if not input_list:
  return []
 __a							=	[input_list.count(_A       ) for value in input_list]
 __a							=	max(_A       )  # Gets the maximum count in the input list.
 # Gets values of modes
 return sorted({input_list[i] for i, value in enumerate(_A       ) if value == y}       )


if __name__ == "__main__":
  import doctest

  doctest.testmod()


