





import gc
import random
import unittest

import numpy as np
import torch
from transformers import CLIPTextConfig, CLIPTextModel, CLIPTextModelWithProjection, CLIPTokenizer

from diffusers import (
    AutoencoderKL,
    DiffusionPipeline,
    EulerDiscreteScheduler,
    StableDiffusionXLImgaImgPipeline,
    UNetaDConditionModel,
)
from diffusers.utils import floats_tensor, slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu

from ..pipeline_params import (
    IMAGE_TO_IMAGE_IMAGE_PARAMS,
    TEXT_GUIDED_IMAGE_VARIATION_BATCH_PARAMS,
    TEXT_GUIDED_IMAGE_VARIATION_PARAMS,
)
from ..test_pipelines_common import PipelineLatentTesterMixin, PipelineTesterMixin


enable_full_determinism()

class 		snake_case_   (							UpperCAmelCase_     ,     UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		StableDiffusionXLImgaImgPipeline
	__UpperCamelCase   =		TEXT_GUIDED_IMAGE_VARIATION_PARAMS - {'''height''', '''width'''}
	__UpperCamelCase   =		PipelineTesterMixin.required_optional_params - {'''latents'''}
	__UpperCamelCase   =		TEXT_GUIDED_IMAGE_VARIATION_BATCH_PARAMS
	__UpperCamelCase   =		IMAGE_TO_IMAGE_IMAGE_PARAMS
	__UpperCamelCase   =		IMAGE_TO_IMAGE_IMAGE_PARAMS




	def    UpperCAmelCase			(						self							:     Tuple   )       -> Union[str, Any]:

			'''simple docstring'''




			torch.manual_seed(0   )
			__lowercase											=     UNetaDConditionModel(
			    block_out_channels=(32, 64)					,      layers_per_block=2					,      sample_size=32					,      in_channels=4					,      out_channels=4					,      down_block_types=('DownBlock2D', 'CrossAttnDownBlock2D')					,      up_block_types=('CrossAttnUpBlock2D', 'UpBlock2D')					,      attention_head_dim=(2, 4)					,      use_linear_projection=__lowerCamelCase					,      addition_embed_type='text_time'					,      addition_time_embed_dim=8					,      transformer_layers_per_block=(1, 2)					,      projection_class_embeddings_input_dim=80					,      cross_attention_dim=64					,      )
			__lowercase											=     EulerDiscreteScheduler(
			    beta_start=0.00085					,      beta_end=0.012					,      steps_offset=1					,      beta_schedule='scaled_linear'					,      timestep_spacing='leading'					,      )
			torch.manual_seed(0   )
			__lowercase											=     AutoencoderKL(
			    block_out_channels=[32, 64]					,      in_channels=3					,      out_channels=3					,      down_block_types=['DownEncoderBlock2D', 'DownEncoderBlock2D']					,      up_block_types=['UpDecoderBlock2D', 'UpDecoderBlock2D']					,      latent_channels=4					,      sample_size=128					,      )
			torch.manual_seed(0   )
			__lowercase											=     CLIPTextConfig(
			    bos_token_id=0					,      eos_token_id=2					,      hidden_size=32					,      intermediate_size=37					,      layer_norm_eps=1E-0_5					,      num_attention_heads=4					,      num_hidden_layers=5					,      pad_token_id=1					,      vocab_size=1_000					,      hidden_act='gelu'					,      projection_dim=32					,      )
			__lowercase											=     CLIPTextModel(__lowerCamelCase   )
			__lowercase											=     CLIPTokenizer.from_pretrained('hf-internal-testing/tiny-random-clip'					,      local_files_only=__lowerCamelCase   )

			__lowercase											=     CLIPTextModelWithProjection(__lowerCamelCase   )
			__lowercase											=     CLIPTokenizer.from_pretrained('hf-internal-testing/tiny-random-clip'					,      local_files_only=__lowerCamelCase   )

			__lowercase											=     {
			    'unet': unet,
			    'scheduler': scheduler,
			    'vae': vae,
			    'text_encoder': text_encoder,
			    'tokenizer': tokenizer,
			    'text_encoder_2': text_encoder_a,
			    'tokenizer_2': tokenizer_a,
			    # "safety_checker": None,
			    # "feature_extractor": None,
			}
			return components




	def    UpperCAmelCase			(						self							:     Union[str, Any]					,      __lowerCamelCase							:     str					,      __lowerCamelCase							:     str=0   )       -> Optional[Any]:

			'''simple docstring'''




			__lowercase											=     floats_tensor((1, 3, 32, 32)					,      rng=random.Random(__lowerCamelCase   )   ).to(__lowerCamelCase   )
			__lowercase											=     image / 2 + 0.5
			if str(__lowerCamelCase   ).startswith('mps'   ):
					__lowercase											=     torch.manual_seed(__lowerCamelCase   )
			else:
					__lowercase											=     torch.Generator(device=__lowerCamelCase   ).manual_seed(__lowerCamelCase   )
			__lowercase											=     {
			    'prompt': 'A painting of a squirrel eating a burger',
			    'image': image,
			    'generator': generator,
			    'num_inference_steps': 2,
			    'guidance_scale': 5.0,
			    'output_type': 'numpy',
			    'strength': 0.75,
			}
			return inputs




	def    UpperCAmelCase			(						self							:     str   )       -> List[Any]:

			'''simple docstring'''




			__lowercase											=     'cpu'  # ensure determinism for the device-dependent torch.Generator
			__lowercase											=     self.get_dummy_components()
			__lowercase											=     StableDiffusionXLImgaImgPipeline(**__lowerCamelCase   )
			__lowercase											=     sd_pipe.to(__lowerCamelCase   )
			sd_pipe.set_progress_bar_config(disable=__lowerCamelCase   )

			__lowercase											=     self.get_dummy_inputs(__lowerCamelCase   )
			__lowercase											=     sd_pipe(**__lowerCamelCase   ).images
			__lowercase											=     image[0, -3:, -3:, -1]

			assert image.shape == (1, 32, 32, 3)

			__lowercase											=     np.array([0.4656, 0.4840, 0.4439, 0.6698, 0.5574, 0.4524, 0.5799, 0.5943, 0.5165]   )

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




	def    UpperCAmelCase			(						self							:     List[str]   )       -> Union[str, Any]:

			'''simple docstring'''




			super().test_attention_slicing_forward_pass(expected_max_diff=3E-3   )




	def    UpperCAmelCase			(						self							:     Optional[int]   )       -> List[Any]:

			'''simple docstring'''




			super().test_inference_batch_single_identical(expected_max_diff=3E-3   )




	def    UpperCAmelCase			(						self							:     Tuple   )       -> str:

			'''simple docstring'''




			pass






	def    UpperCAmelCase			(						self							:     str   )       -> Optional[int]:

			'''simple docstring'''




			__lowercase											=     self.get_dummy_components()
			__lowercase											=     StableDiffusionXLImgaImgPipeline(**__lowerCamelCase   )
			__lowercase											=     sd_pipe.to(__lowerCamelCase   )
			__lowercase											=     sd_pipe.to(__lowerCamelCase   )
			sd_pipe.set_progress_bar_config(disable=__lowerCamelCase   )

			# forward without prompt embeds
			__lowercase											=     self.get_dummy_inputs(__lowerCamelCase   )
			__lowercase											=     3 * ['this is a negative prompt']
			__lowercase											=     negative_prompt
			__lowercase											=     3 * [inputs['prompt']]

			__lowercase											=     sd_pipe(**__lowerCamelCase   )
			__lowercase											=     output.images[0, -3:, -3:, -1]

			# forward with prompt embeds
			__lowercase											=     self.get_dummy_inputs(__lowerCamelCase   )
			__lowercase											=     3 * ['this is a negative prompt']
			__lowercase											=     3 * [inputs.pop('prompt'   )]

			(
			    (
			    __lowercase
			)						,      (
			    __lowercase
			)						,      (
			    __lowercase
			)						,      (
			    __lowercase
			)						,      
			)											=     sd_pipe.encode_prompt(__lowerCamelCase					,      negative_prompt=__lowerCamelCase   )

			__lowercase											=     sd_pipe(
			    **__lowerCamelCase					,      prompt_embeds=__lowerCamelCase					,      negative_prompt_embeds=__lowerCamelCase					,      pooled_prompt_embeds=__lowerCamelCase					,      negative_pooled_prompt_embeds=__lowerCamelCase					,      )
			__lowercase											=     output.images[0, -3:, -3:, -1]

			# make sure that it's equal
			assert np.abs(image_slice_a.flatten() - image_slice_a.flatten()   ).max() < 1E-4





@slow
@require_torch_gpu
class 		snake_case_   (							unittest.TestCase						):







	'''simple docstring'''




	def    UpperCAmelCase			(						self							:     str   )       -> Tuple:

			'''simple docstring'''




			super().tearDown()
			gc.collect()
			torch.cuda.empty_cache()




	def    UpperCAmelCase			(						self							:     Any					,      __lowerCamelCase							:     Optional[int]					,      __lowerCamelCase							:     Optional[int]="cpu"					,      __lowerCamelCase							:     List[str]=torch.floataa					,      __lowerCamelCase							:     Optional[int]=0   )       -> Optional[Any]:

			'''simple docstring'''




			__lowercase											=     torch.Generator(device=__lowerCamelCase   ).manual_seed(__lowerCamelCase   )
			__lowercase											=     np.random.RandomState(__lowerCamelCase   ).standard_normal((1, 4, 64, 64)   )
			__lowercase											=     torch.from_numpy(__lowerCamelCase   ).to(device=__lowerCamelCase					,      dtype=__lowerCamelCase   )
			__lowercase											=     {
			    'prompt': 'a photograph of an astronaut riding a horse',
			    'latents': latents,
			    'generator': generator,
			    'num_inference_steps': 3,
			    'guidance_scale': 7.5,
			    'output_type': 'numpy',
			}
			return inputs






	def    UpperCAmelCase			(						self							:     str   )       -> str:

			'''simple docstring'''




			__lowercase											=     DiffusionPipeline.from_pretrained('stabilityai/stable-diffusion-2-base'   )
			pipe.to(__lowerCamelCase   )
			pipe.set_progress_bar_config(disable=__lowerCamelCase   )

			__lowercase											=     self.get_inputs(__lowerCamelCase   )
			__lowercase											=     pipe(**__lowerCamelCase   ).images
			__lowercase											=     image[0, -3:, -3:, -1].flatten()

			assert image.shape == (1, 512, 512, 3)
			__lowercase											=     np.array([0.49493, 0.47896, 0.40798, 0.54214, 0.53212, 0.48202, 0.47656, 0.46329, 0.48506]   )
			assert np.abs(image_slice - expected_slice   ).max() < 7E-3











import unittest

from diffusers.models.unet_ad_blocks import *  # noqa F403
from diffusers.utils import torch_device

from .test_unet_blocks_common import UNetBlockTesterMixin

class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		DownBlockaD  # noqa F405
	__UpperCamelCase   =		'''down'''




	def    UpperCAmelCase			(						self							:     Optional[Any]   )       -> Tuple:

			'''simple docstring'''




			__lowercase											=     [-0.0232, -0.9869, 0.8054, -0.0637, -0.1688, -1.4264, 0.4470, -1.3394, 0.0904]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		ResnetDownsampleBlockaD  # noqa F405
	__UpperCamelCase   =		'''down'''




	def    UpperCAmelCase			(						self							:     str   )       -> int:

			'''simple docstring'''




			__lowercase											=     [0.0710, 0.2410, -0.7320, -1.0757, -1.1343, 0.3540, -0.0133, -0.2576, 0.0948]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		AttnDownBlockaD  # noqa F405
	__UpperCamelCase   =		'''down'''




	def    UpperCAmelCase			(						self							:     Any   )       -> List[Any]:

			'''simple docstring'''




			__lowercase											=     [0.0636, 0.8964, -0.6234, -1.0131, 0.0844, 0.4935, 0.3437, 0.0911, -0.2957]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		CrossAttnDownBlockaD  # noqa F405
	__UpperCamelCase   =		'''down'''




	def    UpperCAmelCase			(						self							:     Optional[Any]   )       -> List[Any]:

			'''simple docstring'''




			__lowercase						,      __lowercase											=     super().prepare_init_args_and_inputs_for_common()
			__lowercase											=     32
			return init_dict, inputs_dict






	def    UpperCAmelCase			(						self							:     Any   )       -> int:

			'''simple docstring'''




			__lowercase											=     [0.2238, -0.7396, -0.2255, -0.3829, 0.1925, 1.1665, 0.0603, -0.7295, 0.1983]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		SimpleCrossAttnDownBlockaD  # noqa F405
	__UpperCamelCase   =		'''down'''




	@property
	def    UpperCAmelCase			(						self							:     List[Any]   )       -> Union[str, Any]:

			'''simple docstring'''




			return super().get_dummy_input(include_encoder_hidden_states=__lowerCamelCase   )




	def    UpperCAmelCase			(						self							:     List[Any]   )       -> List[str]:

			'''simple docstring'''




			__lowercase						,      __lowercase											=     super().prepare_init_args_and_inputs_for_common()
			__lowercase											=     32
			return init_dict, inputs_dict






	@unittest.skipIf(torch_device == 'mps'					,      'MPS result is not consistent'   )
	def    UpperCAmelCase			(						self							:     Dict   )       -> Optional[int]:

			'''simple docstring'''




			__lowercase											=     [0.7921, -0.0992, -0.1962, -0.7695, -0.4242, 0.7804, 0.4737, 0.2765, 0.3338]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		SkipDownBlockaD  # noqa F405
	__UpperCamelCase   =		'''down'''




	@property
	def    UpperCAmelCase			(						self							:     Optional[Any]   )       -> Any:

			'''simple docstring'''




			return super().get_dummy_input(include_skip_sample=__lowerCamelCase   )






	def    UpperCAmelCase			(						self							:     List[Any]   )       -> int:

			'''simple docstring'''




			__lowercase											=     [-0.0845, -0.2087, -0.2465, 0.0971, 0.1900, -0.0484, 0.2664, 0.4179, 0.5069]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		AttnSkipDownBlockaD  # noqa F405
	__UpperCamelCase   =		'''down'''




	@property
	def    UpperCAmelCase			(						self							:     Tuple   )       -> List[str]:

			'''simple docstring'''




			return super().get_dummy_input(include_skip_sample=__lowerCamelCase   )






	def    UpperCAmelCase			(						self							:     Tuple   )       -> Optional[Any]:

			'''simple docstring'''




			__lowercase											=     [0.5539, 0.1609, 0.4924, 0.0537, -0.1995, 0.4050, 0.0979, -0.2721, -0.0642]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		DownEncoderBlockaD  # noqa F405
	__UpperCamelCase   =		'''down'''




	@property
	def    UpperCAmelCase			(						self							:     Optional[Any]   )       -> Any:

			'''simple docstring'''




			return super().get_dummy_input(include_temb=__lowerCamelCase   )




	def    UpperCAmelCase			(						self							:     Union[str, Any]   )       -> int:

			'''simple docstring'''




			__lowercase											=     {
			    'in_channels': 32,
			    'out_channels': 32,
			}
			__lowercase											=     self.dummy_input
			return init_dict, inputs_dict






	def    UpperCAmelCase			(						self							:     str   )       -> Optional[int]:

			'''simple docstring'''




			__lowercase											=     [1.1102, 0.5302, 0.4872, -0.0023, -0.8042, 0.0483, -0.3489, -0.5632, 0.7626]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		AttnDownEncoderBlockaD  # noqa F405
	__UpperCamelCase   =		'''down'''




	@property
	def    UpperCAmelCase			(						self							:     int   )       -> str:

			'''simple docstring'''




			return super().get_dummy_input(include_temb=__lowerCamelCase   )




	def    UpperCAmelCase			(						self							:     str   )       -> Union[str, Any]:

			'''simple docstring'''




			__lowercase											=     {
			    'in_channels': 32,
			    'out_channels': 32,
			}
			__lowercase											=     self.dummy_input
			return init_dict, inputs_dict






	def    UpperCAmelCase			(						self							:     Tuple   )       -> Optional[int]:

			'''simple docstring'''




			__lowercase											=     [0.8966, -0.1486, 0.8568, 0.8141, -0.9046, -0.1342, -0.0972, -0.7417, 0.1538]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		UNetMidBlockaD  # noqa F405
	__UpperCamelCase   =		'''mid'''




	def    UpperCAmelCase			(						self							:     int   )       -> List[str]:

			'''simple docstring'''




			__lowercase											=     {
			    'in_channels': 32,
			    'temb_channels': 128,
			}
			__lowercase											=     self.dummy_input
			return init_dict, inputs_dict






	def    UpperCAmelCase			(						self							:     str   )       -> List[str]:

			'''simple docstring'''




			__lowercase											=     [-0.1062, 1.7248, 0.3494, 1.4569, -0.0910, -1.2421, -0.9984, 0.6736, 1.0028]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		UNetMidBlockaDCrossAttn  # noqa F405
	__UpperCamelCase   =		'''mid'''




	def    UpperCAmelCase			(						self							:     int   )       -> Tuple:

			'''simple docstring'''




			__lowercase						,      __lowercase											=     super().prepare_init_args_and_inputs_for_common()
			__lowercase											=     32
			return init_dict, inputs_dict






	def    UpperCAmelCase			(						self							:     Dict   )       -> List[Any]:

			'''simple docstring'''




			__lowercase											=     [0.0187, 2.4220, 0.4484, 1.1203, -0.6121, -1.5122, -0.8270, 0.7851, 1.8335]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		UNetMidBlockaDSimpleCrossAttn  # noqa F405
	__UpperCamelCase   =		'''mid'''




	@property
	def    UpperCAmelCase			(						self							:     str   )       -> Tuple:

			'''simple docstring'''




			return super().get_dummy_input(include_encoder_hidden_states=__lowerCamelCase   )




	def    UpperCAmelCase			(						self							:     Optional[int]   )       -> List[str]:

			'''simple docstring'''




			__lowercase						,      __lowercase											=     super().prepare_init_args_and_inputs_for_common()
			__lowercase											=     32
			return init_dict, inputs_dict






	def    UpperCAmelCase			(						self							:     Optional[int]   )       -> int:

			'''simple docstring'''




			__lowercase											=     [0.7143, 1.9974, 0.5448, 1.3977, 0.1282, -1.1237, -1.4238, 0.5530, 0.8880]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		UpBlockaD  # noqa F405
	__UpperCamelCase   =		'''up'''




	@property
	def    UpperCAmelCase			(						self							:     str   )       -> List[Any]:

			'''simple docstring'''




			return super().get_dummy_input(include_res_hidden_states_tuple=__lowerCamelCase   )






	def    UpperCAmelCase			(						self							:     Optional[Any]   )       -> str:

			'''simple docstring'''




			__lowercase											=     [-0.2041, -0.4165, -0.3022, 0.0041, -0.6628, -0.7053, 0.1928, -0.0325, 0.0523]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		ResnetUpsampleBlockaD  # noqa F405
	__UpperCamelCase   =		'''up'''




	@property
	def    UpperCAmelCase			(						self							:     int   )       -> Optional[Any]:

			'''simple docstring'''




			return super().get_dummy_input(include_res_hidden_states_tuple=__lowerCamelCase   )






	def    UpperCAmelCase			(						self							:     Union[str, Any]   )       -> Any:

			'''simple docstring'''




			__lowercase											=     [0.2287, 0.3549, -0.1346, 0.4797, -0.1715, -0.9649, 0.7305, -0.5864, -0.6244]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		CrossAttnUpBlockaD  # noqa F405
	__UpperCamelCase   =		'''up'''




	@property
	def    UpperCAmelCase			(						self							:     List[Any]   )       -> Tuple:

			'''simple docstring'''




			return super().get_dummy_input(include_res_hidden_states_tuple=__lowerCamelCase   )




	def    UpperCAmelCase			(						self							:     Any   )       -> Tuple:

			'''simple docstring'''




			__lowercase						,      __lowercase											=     super().prepare_init_args_and_inputs_for_common()
			__lowercase											=     32
			return init_dict, inputs_dict






	def    UpperCAmelCase			(						self							:     Dict   )       -> int:

			'''simple docstring'''




			__lowercase											=     [-0.1403, -0.3515, -0.0420, -0.1425, 0.3167, 0.5094, -0.2181, 0.5931, 0.5582]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		SimpleCrossAttnUpBlockaD  # noqa F405
	__UpperCamelCase   =		'''up'''




	@property
	def    UpperCAmelCase			(						self							:     Any   )       -> Optional[Any]:

			'''simple docstring'''




			return super().get_dummy_input(include_res_hidden_states_tuple=__lowerCamelCase					,      include_encoder_hidden_states=__lowerCamelCase   )




	def    UpperCAmelCase			(						self							:     Dict   )       -> Optional[Any]:

			'''simple docstring'''




			__lowercase						,      __lowercase											=     super().prepare_init_args_and_inputs_for_common()
			__lowercase											=     32
			return init_dict, inputs_dict






	def    UpperCAmelCase			(						self							:     Union[str, Any]   )       -> str:

			'''simple docstring'''




			__lowercase											=     [0.2645, 0.1480, 0.0909, 0.8044, -0.9758, -0.9083, 0.0994, -1.1453, -0.7402]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		AttnUpBlockaD  # noqa F405
	__UpperCamelCase   =		'''up'''




	@property
	def    UpperCAmelCase			(						self							:     Any   )       -> str:

			'''simple docstring'''




			return super().get_dummy_input(include_res_hidden_states_tuple=__lowerCamelCase   )






	@unittest.skipIf(torch_device == 'mps'					,      'MPS result is not consistent'   )
	def    UpperCAmelCase			(						self							:     int   )       -> str:

			'''simple docstring'''




			__lowercase											=     [0.0979, 0.1326, 0.0021, 0.0659, 0.2249, 0.0059, 0.1132, 0.5952, 0.1033]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		SkipUpBlockaD  # noqa F405
	__UpperCamelCase   =		'''up'''




	@property
	def    UpperCAmelCase			(						self							:     int   )       -> str:

			'''simple docstring'''




			return super().get_dummy_input(include_res_hidden_states_tuple=__lowerCamelCase   )






	def    UpperCAmelCase			(						self							:     List[Any]   )       -> Optional[int]:

			'''simple docstring'''




			__lowercase											=     [-0.0893, -0.1234, -0.1506, -0.0332, 0.0123, -0.0211, 0.0566, 0.0143, 0.0362]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		AttnSkipUpBlockaD  # noqa F405
	__UpperCamelCase   =		'''up'''




	@property
	def    UpperCAmelCase			(						self							:     int   )       -> Any:

			'''simple docstring'''




			return super().get_dummy_input(include_res_hidden_states_tuple=__lowerCamelCase   )






	def    UpperCAmelCase			(						self							:     str   )       -> List[Any]:

			'''simple docstring'''




			__lowercase											=     [0.0361, 0.0617, 0.2787, -0.0350, 0.0342, 0.3421, -0.0843, 0.0913, 0.3015]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		UpDecoderBlockaD  # noqa F405
	__UpperCamelCase   =		'''up'''




	@property
	def    UpperCAmelCase			(						self							:     Tuple   )       -> Any:

			'''simple docstring'''




			return super().get_dummy_input(include_temb=__lowerCamelCase   )




	def    UpperCAmelCase			(						self							:     Optional[int]   )       -> Optional[int]:

			'''simple docstring'''




			__lowercase											=     {'in_channels': 32, 'out_channels': 32}

			__lowercase											=     self.dummy_input
			return init_dict, inputs_dict






	def    UpperCAmelCase			(						self							:     Optional[Any]   )       -> Optional[Any]:

			'''simple docstring'''




			__lowercase											=     [0.4404, 0.1998, -0.9886, -0.3320, -0.3128, -0.7034, -0.6955, -0.2338, -0.3137]
			super().test_output(__lowerCamelCase   )





class 		snake_case_   (							UpperCAmelCase_     ,     unittest.TestCase						):







	'''simple docstring'''
	__UpperCamelCase   =		AttnUpDecoderBlockaD  # noqa F405
	__UpperCamelCase   =		'''up'''




	@property
	def    UpperCAmelCase			(						self							:     Any   )       -> Union[str, Any]:

			'''simple docstring'''




			return super().get_dummy_input(include_temb=__lowerCamelCase   )




	def    UpperCAmelCase			(						self							:     Dict   )       -> Dict:

			'''simple docstring'''




			__lowercase											=     {'in_channels': 32, 'out_channels': 32}

			__lowercase											=     self.dummy_input
			return init_dict, inputs_dict






	def    UpperCAmelCase			(						self							:     int   )       -> Optional[Any]:

			'''simple docstring'''




			__lowercase											=     [0.6738, 0.4491, 0.1055, 1.0710, 0.7316, 0.3339, 0.3352, 0.1023, 0.3568]
			super().test_output(__lowerCamelCase   )




