




import unittest

import torch

from diffusers import VQModel
from diffusers.utils import floats_tensor, torch_device
from diffusers.utils.testing_utils import enable_full_determinism

from .test_modeling_common import ModelTesterMixin, UNetTesterMixin


enable_full_determinism()







class __snake_case			(			a ,  a ,  unittest.TestCase		):
   UpperCAmelCase__  :    List[str]          =  VQModel
   UpperCAmelCase__  :    Optional[Any]          =  '''sample'''







   @property
   def lowerCamelCase						(      self		:						Optional[int]					,						_snake_case		:						List[str]=(32, 32)):

        """simple docstring"""


        UpperCAmelCase_          =							4
        UpperCAmelCase_          =							3

        UpperCAmelCase_          =							floats_tensor((batch_size, num_channels) + sizes).to(_snake_case)

        return {"sample": image}







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

        """simple docstring"""


        return (3, 32, 32)







   @property
   def lowerCamelCase						(      self		:						Dict):

        """simple docstring"""


        return (3, 32, 32)







   def lowerCamelCase						(      self		:						Optional[Any]):

        """simple docstring"""


        UpperCAmelCase_          =							{
            '''block_out_channels''': [32, 64],
            '''in_channels''': 3,
            '''out_channels''': 3,
            '''down_block_types''': ['''DownEncoderBlock2D''', '''DownEncoderBlock2D'''],
            '''up_block_types''': ['''UpDecoderBlock2D''', '''UpDecoderBlock2D'''],
            '''latent_channels''': 3,
        }
        UpperCAmelCase_          =							self.dummy_input
        return init_dict, inputs_dict







   def lowerCamelCase						(      self		:						List[str]):

        """simple docstring"""


        pass







   def lowerCamelCase						(      self		:						Optional[int]):

        """simple docstring"""


        pass







   def lowerCamelCase						(      self		:						str):

        """simple docstring"""


        UpperCAmelCase_     ,       UpperCAmelCase_          =							VQModel.from_pretrained('''fusing/vqgan-dummy'''					,						output_loading_info=_snake_case)
        self.assertIsNotNone(_snake_case)
        self.assertEqual(len(loading_info['''missing_keys'''])					,						0)

        model.to(_snake_case)
        UpperCAmelCase_          =							model(**self.dummy_input)

        assert image is not None, "Make sure output is not None"







   def lowerCamelCase						(      self		:						Optional[int]):

        """simple docstring"""


        UpperCAmelCase_          =							VQModel.from_pretrained('''fusing/vqgan-dummy''')
        model.to(_snake_case).eval()

        torch.manual_seed(0)
        if torch.cuda.is_available():
             torch.cuda.manual_seed_all(0)

        UpperCAmelCase_          =							torch.randn(1					,						model.config.in_channels					,						model.config.sample_size					,						model.config.sample_size)
        UpperCAmelCase_          =							image.to(_snake_case)
        with torch.no_grad():
             UpperCAmelCase_          =							model(_snake_case).sample

        UpperCAmelCase_          =							output[0, -1, -3:, -3:].flatten().cpu()
        # fmt: off
        UpperCAmelCase_          =							torch.tensor([-0.0_1_5_3, -0.4_0_4_4, -0.1_8_8_0, -0.5_1_6_1, -0.2_4_1_8, -0.4_0_7_2, -0.1_6_1_2, -0.0_6_3_3, -0.0_1_4_3])
        # fmt: on
        self.assertTrue(torch.allclose(_snake_case					,						_snake_case					,						atol=1e-3))












def    A						(__A   :    list   ,				__A   :    int   ,				__A   :    int = 0   ,				__A   :    int = 0       )   ->      int:







     """simple docstring"""


     UpperCAmelCase_          =							right or len(__A       ) - 1
     if left > right:
          return -1
     elif list_data[left] == key:
          return left
     elif list_data[right] == key:
          return right
     else:
          return search(__A   ,				__A   ,				left + 1   ,				right - 1       )


if __name__ == "__main__":
    import doctest

    doctest.testmod()






