





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 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						DownBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""down"""





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						ResnetDownsampleBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""down"""





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						AttnDownBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""down"""





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						CrossAttnDownBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""down"""





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				lowerCamelCase__								=		super().prepare_init_args_and_inputs_for_common()
				lowerCamelCase__								=		3_2
				return init_dict, inputs_dict





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						SimpleCrossAttnDownBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""down"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return super().get_dummy_input(include_encoder_hidden_states=__snake_case							)





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				lowerCamelCase__								=		super().prepare_init_args_and_inputs_for_common()
				lowerCamelCase__								=		3_2
				return init_dict, inputs_dict





			@unittest.skipIf(torch_device == '''mps'''       ,  '''MPS result is not consistent'''							)
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						SkipDownBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""down"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return super().get_dummy_input(include_skip_sample=__snake_case							)





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						AttnSkipDownBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""down"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return super().get_dummy_input(include_skip_sample=__snake_case							)





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						DownEncoderBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""down"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return super().get_dummy_input(include_temb=__snake_case							)





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				lowerCamelCase__								=		{
				    '''in_channels''': 3_2,
				    '''out_channels''': 3_2,
				}
				lowerCamelCase__								=		self.dummy_input
				return init_dict, inputs_dict





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						AttnDownEncoderBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""down"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return super().get_dummy_input(include_temb=__snake_case							)





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				lowerCamelCase__								=		{
				    '''in_channels''': 3_2,
				    '''out_channels''': 3_2,
				}
				lowerCamelCase__								=		self.dummy_input
				return init_dict, inputs_dict





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						UNetMidBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""mid"""





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				lowerCamelCase__								=		{
				    '''in_channels''': 3_2,
				    '''temb_channels''': 1_2_8,
				}
				lowerCamelCase__								=		self.dummy_input
				return init_dict, inputs_dict





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						UNetMidBlockaDCrossAttn  # noqa F405
			lowerCAmelCase_							     =						"""mid"""





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				lowerCamelCase__								=		super().prepare_init_args_and_inputs_for_common()
				lowerCamelCase__								=		3_2
				return init_dict, inputs_dict





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						UNetMidBlockaDSimpleCrossAttn  # noqa F405
			lowerCAmelCase_							     =						"""mid"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return super().get_dummy_input(include_encoder_hidden_states=__snake_case							)





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				lowerCamelCase__								=		super().prepare_init_args_and_inputs_for_common()
				lowerCamelCase__								=		3_2
				return init_dict, inputs_dict





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						UpBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""up"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return super().get_dummy_input(include_res_hidden_states_tuple=__snake_case							)





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						ResnetUpsampleBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""up"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return super().get_dummy_input(include_res_hidden_states_tuple=__snake_case							)





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						CrossAttnUpBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""up"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return super().get_dummy_input(include_res_hidden_states_tuple=__snake_case							)





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				lowerCamelCase__								=		super().prepare_init_args_and_inputs_for_common()
				lowerCamelCase__								=		3_2
				return init_dict, inputs_dict





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						SimpleCrossAttnUpBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""up"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				lowerCamelCase__								=		super().prepare_init_args_and_inputs_for_common()
				lowerCamelCase__								=		3_2
				return init_dict, inputs_dict





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						AttnUpBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""up"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return super().get_dummy_input(include_res_hidden_states_tuple=__snake_case							)





			@unittest.skipIf(torch_device == '''mps'''       ,  '''MPS result is not consistent'''							)
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						SkipUpBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""up"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return super().get_dummy_input(include_res_hidden_states_tuple=__snake_case							)





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						AttnSkipUpBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""up"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return super().get_dummy_input(include_res_hidden_states_tuple=__snake_case							)





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						UpDecoderBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""up"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return super().get_dummy_input(include_temb=__snake_case							)





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				lowerCamelCase__								=		{'''in_channels''': 3_2, '''out_channels''': 3_2}

				lowerCamelCase__								=		self.dummy_input
				return init_dict, inputs_dict





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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






class 					__A    (    A__			,				unittest.TestCase ):

			'''simple docstring'''







			lowerCAmelCase_							     =						AttnUpDecoderBlockaD  # noqa F405
			lowerCAmelCase_							     =						"""up"""





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return super().get_dummy_input(include_temb=__snake_case							)





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				lowerCamelCase__								=		{'''in_channels''': 3_2, '''out_channels''': 3_2}

				lowerCamelCase__								=		self.dummy_input
				return init_dict, inputs_dict





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







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








'''simple docstring'''






import gc
import unittest

import numpy as np
import torch
from transformers import CLIPTextConfig, CLIPTextModel, XLMRobertaTokenizer

from diffusers import AltDiffusionPipeline, AutoencoderKL, DDIMScheduler, PNDMScheduler, UNetaDConditionModel
from diffusers.pipelines.alt_diffusion.modeling_roberta_series import (
    RobertaSeriesConfig,
    RobertaSeriesModelWithTransformation,
)
from diffusers.utils import slow, torch_device
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu

from ..pipeline_params import TEXT_TO_IMAGE_BATCH_PARAMS, TEXT_TO_IMAGE_IMAGE_PARAMS, TEXT_TO_IMAGE_PARAMS
from ..test_pipelines_common import PipelineKarrasSchedulerTesterMixin, PipelineLatentTesterMixin, PipelineTesterMixin


enable_full_determinism()

class 				SCREAMING_SNAKE_CASE(							A__							,		A__							,		A__							,		unittest.TestCase			):







	"""simple docstring"""






	lowerCamelCase__			 =       AltDiffusionPipeline
	lowerCamelCase__			 =       TEXT_TO_IMAGE_PARAMS
	lowerCamelCase__			 =       TEXT_TO_IMAGE_BATCH_PARAMS
	lowerCamelCase__			 =       TEXT_TO_IMAGE_IMAGE_PARAMS
	lowerCamelCase__			 =       TEXT_TO_IMAGE_IMAGE_PARAMS







	def      A	(						self			:     Dict		)			->		int:
								torch.manual_seed(0		)
								UpperCAmelCase :       str 							=		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''')		,			cross_attention_dim=32		,			)
								UpperCAmelCase :       Dict 							=		DDIMScheduler(
								    beta_start=0.0_00_85		,			beta_end=0.0_12		,			beta_schedule='''scaled_linear'''		,			clip_sample=__snake_case		,			set_alpha_to_one=__snake_case		,			)
								torch.manual_seed(0		)
								UpperCAmelCase :       Union[str, Any] 							=		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		,			)

								# TODO: address the non-deterministic text encoder (fails for save-load tests)
								# torch.manual_seed(0)
								# text_encoder_config = RobertaSeriesConfig(
								#     hidden_size=32,
								#     project_dim=32,
								#     intermediate_size=37,
								#     layer_norm_eps=1e-05,
								#     num_attention_heads=4,
								#     num_hidden_layers=5,
								#     vocab_size=5002,
								# )
								# text_encoder = RobertaSeriesModelWithTransformation(text_encoder_config)

								torch.manual_seed(0		)
								UpperCAmelCase :       Dict 							=		CLIPTextConfig(
								    bos_token_id=0		,			eos_token_id=2		,			hidden_size=32		,			projection_dim=32		,			intermediate_size=37		,			layer_norm_eps=1E-05		,			num_attention_heads=4		,			num_hidden_layers=5		,			pad_token_id=1		,			vocab_size=5002		,			)
								UpperCAmelCase :       List[Any] 							=		CLIPTextModel(__snake_case		)

								UpperCAmelCase :       Optional[Any] 							=		XLMRobertaTokenizer.from_pretrained('''hf-internal-testing/tiny-xlm-roberta'''		)
								UpperCAmelCase :       Optional[int] 							=		77

								UpperCAmelCase :       Optional[int] 							=		{
								    '''unet''': unet,
								    '''scheduler''': scheduler,
								    '''vae''': vae,
								    '''text_encoder''': text_encoder,
								    '''tokenizer''': tokenizer,
								    '''safety_checker''': None,
								    '''feature_extractor''': None,
								}
								return components







	def      A	(						self			:     Optional[Any]		,			__snake_case			:     Dict		,			__snake_case			:     List[str]=0		)			->		Union[str, Any]:
								if str(__snake_case		).startswith('''mps'''		):
															UpperCAmelCase :       str 							=		torch.manual_seed(__snake_case		)
								else:
															UpperCAmelCase :       Tuple 							=		torch.Generator(device=__snake_case		).manual_seed(__snake_case		)
								UpperCAmelCase :       Dict 							=		{
								    '''prompt''': '''A painting of a squirrel eating a burger''',
								    '''generator''': generator,
								    '''num_inference_steps''': 2,
								    '''guidance_scale''': 6.0,
								    '''output_type''': '''numpy''',
								}
								return inputs







	def      A	(						self			:     Union[str, Any]		)			->		List[str]:
								super().test_attention_slicing_forward_pass(expected_max_diff=3E-3		)







	def      A	(						self			:     Tuple		)			->		List[str]:
								super().test_inference_batch_single_identical(expected_max_diff=3E-3		)







	def      A	(						self			:     Tuple		)			->		Optional[int]:
								UpperCAmelCase :       List[str] 							=		'''cpu'''  # ensure determinism for the device-dependent torch.Generator

								UpperCAmelCase :       Any 							=		self.get_dummy_components()
								torch.manual_seed(0		)
								UpperCAmelCase :       Optional[int] 							=		RobertaSeriesConfig(
								    hidden_size=32		,			project_dim=32		,			intermediate_size=37		,			layer_norm_eps=1E-05		,			num_attention_heads=4		,			num_hidden_layers=5		,			vocab_size=5002		,			)
								# TODO: remove after fixing the non-deterministic text encoder
								UpperCAmelCase :       List[str] 							=		RobertaSeriesModelWithTransformation(__snake_case		)
								UpperCAmelCase :       str 							=		text_encoder

								UpperCAmelCase :       Optional[int] 							=		AltDiffusionPipeline(**__snake_case		)
								UpperCAmelCase :       str 							=		alt_pipe.to(__snake_case		)
								alt_pipe.set_progress_bar_config(disable=__snake_case		)

								UpperCAmelCase :       Optional[int] 							=		self.get_dummy_inputs(__snake_case		)
								UpperCAmelCase :       Optional[int] 							=		'''A photo of an astronaut'''
								UpperCAmelCase :       List[Any] 							=		alt_pipe(**__snake_case		)
								UpperCAmelCase :       Optional[Any] 							=		output.images
								UpperCAmelCase :       str 							=		image[0, -3:, -3:, -1]

								assert image.shape == (1, 64, 64, 3)
								UpperCAmelCase :       List[str] 							=		np.array(
								    [0.5_74_81_62, 0.60_44_71_45, 0.48_82_12_17, 0.50_10_06_36, 0.5_43_11_85, 0.45_76_36_83, 0.49_65_76_96, 0.48_13_27_33, 0.47_57_30_93]		)

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







	def      A	(						self			:     int		)			->		Union[str, Any]:
								UpperCAmelCase :       Optional[int] 							=		'''cpu'''  # ensure determinism for the device-dependent torch.Generator

								UpperCAmelCase :       int 							=		self.get_dummy_components()
								UpperCAmelCase :       int 							=		PNDMScheduler(skip_prk_steps=__snake_case		)
								torch.manual_seed(0		)
								UpperCAmelCase :       int 							=		RobertaSeriesConfig(
								    hidden_size=32		,			project_dim=32		,			intermediate_size=37		,			layer_norm_eps=1E-05		,			num_attention_heads=4		,			num_hidden_layers=5		,			vocab_size=5002		,			)
								# TODO: remove after fixing the non-deterministic text encoder
								UpperCAmelCase :       Union[str, Any] 							=		RobertaSeriesModelWithTransformation(__snake_case		)
								UpperCAmelCase :       Union[str, Any] 							=		text_encoder
								UpperCAmelCase :       Optional[int] 							=		AltDiffusionPipeline(**__snake_case		)
								UpperCAmelCase :       Dict 							=		alt_pipe.to(__snake_case		)
								alt_pipe.set_progress_bar_config(disable=__snake_case		)

								UpperCAmelCase :       int 							=		self.get_dummy_inputs(__snake_case		)
								UpperCAmelCase :       Optional[int] 							=		alt_pipe(**__snake_case		)
								UpperCAmelCase :       Optional[int] 							=		output.images
								UpperCAmelCase :       int 							=		image[0, -3:, -3:, -1]

								assert image.shape == (1, 64, 64, 3)
								UpperCAmelCase :       Optional[int] 							=		np.array(
								    [0.51_60_50_93, 0.5_70_72_41, 0.47_36_55_07, 0.50_57_88_86, 0.5_63_38_77, 0.4_64_25_03, 0.5_18_20_81, 0.48_76_34_84, 0.49_08_42_37]		)

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

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







	"""simple docstring"""






	def      A	(						self			:     str		)			->		Any:
								# clean up the VRAM after each test
								super().tearDown()
								gc.collect()
								torch.cuda.empty_cache()







	def      A	(						self			:     List[Any]		)			->		Any:
								# make sure here that pndm scheduler skips prk
								UpperCAmelCase :       List[Any] 							=		AltDiffusionPipeline.from_pretrained('''BAAI/AltDiffusion'''		,			safety_checker=__snake_case		)
								UpperCAmelCase :       Tuple 							=		alt_pipe.to(__snake_case		)
								alt_pipe.set_progress_bar_config(disable=__snake_case		)

								UpperCAmelCase :       List[Any] 							=		'''A painting of a squirrel eating a burger'''
								UpperCAmelCase :       Any 							=		torch.manual_seed(0		)
								UpperCAmelCase :       Optional[int] 							=		alt_pipe([prompt]		,			generator=__snake_case		,			guidance_scale=6.0		,			num_inference_steps=20		,			output_type='''np'''		)

								UpperCAmelCase :       Dict 							=		output.images

								UpperCAmelCase :       Optional[Any] 							=		image[0, -3:, -3:, -1]

								assert image.shape == (1, 512, 512, 3)
								UpperCAmelCase :       List[str] 							=		np.array([0.10_10, 0.08_00, 0.07_94, 0.08_85, 0.08_43, 0.07_62, 0.07_69, 0.07_29, 0.05_86]		)

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







	def      A	(						self			:     Tuple		)			->		int:
								UpperCAmelCase :       int 							=		DDIMScheduler.from_pretrained('''BAAI/AltDiffusion'''		,			subfolder='''scheduler'''		)

								UpperCAmelCase :       Tuple 							=		AltDiffusionPipeline.from_pretrained('''BAAI/AltDiffusion'''		,			scheduler=__snake_case		,			safety_checker=__snake_case		)
								UpperCAmelCase :       Dict 							=		alt_pipe.to(__snake_case		)
								alt_pipe.set_progress_bar_config(disable=__snake_case		)

								UpperCAmelCase :       Tuple 							=		'''A painting of a squirrel eating a burger'''
								UpperCAmelCase :       Optional[int] 							=		torch.manual_seed(0		)

								UpperCAmelCase :       List[Any] 							=		alt_pipe([prompt]		,			generator=__snake_case		,			num_inference_steps=2		,			output_type='''numpy'''		)
								UpperCAmelCase :       Dict 							=		output.images

								UpperCAmelCase :       Optional[Any] 							=		image[0, -3:, -3:, -1]

								assert image.shape == (1, 512, 512, 3)
								UpperCAmelCase :       Union[str, Any] 							=		np.array([0.40_19, 0.40_52, 0.38_10, 0.41_19, 0.39_16, 0.39_82, 0.46_51, 0.41_95, 0.53_23]		)

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





