



from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_sentencepiece_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


if is_sentencepiece_available():
							from ..ta.tokenization_ta import TaTokenizer
else:
							from ...utils.dummy_sentencepiece_objects import TaTokenizer

__snake_case    :		Optional[Any]  =TaTokenizer

if is_tokenizers_available():
							from ..ta.tokenization_ta_fast import TaTokenizerFast
else:
							from ...utils.dummy_tokenizers_objects import TaTokenizerFast

__snake_case    :		int  =TaTokenizerFast

__snake_case    :		str  ={'configuration_mt5': ['MT5Config', 'MT5OnnxConfig']}

try:
							if not is_torch_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							__snake_case    :		List[Any]  =[
							    'MT5EncoderModel',
							    'MT5ForConditionalGeneration',
							    'MT5ForQuestionAnswering',
							    'MT5Model',
							    'MT5PreTrainedModel',
							    'MT5Stack',
							]

try:
							if not is_tf_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							__snake_case    :		Optional[int]  =['TFMT5EncoderModel', 'TFMT5ForConditionalGeneration', 'TFMT5Model']

try:
							if not is_flax_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							__snake_case    :		List[Any]  =['FlaxMT5EncoderModel', 'FlaxMT5ForConditionalGeneration', 'FlaxMT5Model']


if TYPE_CHECKING:
							from .configuration_mta import MTaConfig, MTaOnnxConfig

							try:
														if not is_torch_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_mta import (
														    MTaEncoderModel,
														    MTaForConditionalGeneration,
														    MTaForQuestionAnswering,
														    MTaModel,
														    MTaPreTrainedModel,
														    MTaStack,
														)

							try:
														if not is_tf_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_tf_mta import TFMTaEncoderModel, TFMTaForConditionalGeneration, TFMTaModel

							try:
														if not is_flax_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_flax_mta import FlaxMTaEncoderModel, FlaxMTaForConditionalGeneration, FlaxMTaModel

else:
							import sys

							__snake_case    :		List[str]  =_LazyModule(
							    __name__,
							    globals()['__file__'],
							    _import_structure,
							    extra_objects={'MT5Tokenizer': MTaTokenizer, 'MT5TokenizerFast': MTaTokenizerFast},
							    module_spec=__spec__,
							)






import random
import unittest

import torch

from diffusers import IFInpaintingSuperResolutionPipeline
from diffusers.utils import floats_tensor
from diffusers.utils.import_utils import is_xformers_available
from diffusers.utils.testing_utils import skip_mps, torch_device

from ..pipeline_params import (
    TEXT_GUIDED_IMAGE_INPAINTING_BATCH_PARAMS,
    TEXT_GUIDED_IMAGE_INPAINTING_PARAMS,
)
from ..test_pipelines_common import PipelineTesterMixin
from . import IFPipelineTesterMixin



@skip_mps
class 	lowerCamelCase__      (							lowerCamelCase__				,    lowerCamelCase__				,    unittest.TestCase):




		'''simple docstring'''



		snake_case_     =IFInpaintingSuperResolutionPipeline
		snake_case_     =TEXT_GUIDED_IMAGE_INPAINTING_PARAMS - {"""width""", """height"""}
		snake_case_     =TEXT_GUIDED_IMAGE_INPAINTING_BATCH_PARAMS.union({"""original_image"""})
		snake_case_     =PipelineTesterMixin.required_optional_params - {"""latents"""}



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

						"""simple docstring"""






						return self._get_superresolution_dummy_components()



		def 		lowerCAmelCase__				(self		,__lowerCamelCase		,__lowerCamelCase=0			)					->      Dict:

						"""simple docstring"""






						if str(__lowerCamelCase			).startswith('''mps'''			):
										lowerCAmelCase__					:    Union[str, Any]												=					torch.manual_seed(__lowerCamelCase			)
						else:
										lowerCAmelCase__					:    int												=					torch.Generator(device=__lowerCamelCase			).manual_seed(__lowerCamelCase			)

						lowerCAmelCase__					:    str												=					floats_tensor((1, 3, 16, 16)		,rng=random.Random(__lowerCamelCase			)			).to(__lowerCamelCase			)
						lowerCAmelCase__					:    Optional[Any]												=					floats_tensor((1, 3, 32, 32)		,rng=random.Random(__lowerCamelCase			)			).to(__lowerCamelCase			)
						lowerCAmelCase__					:    Union[str, Any]												=					floats_tensor((1, 3, 32, 32)		,rng=random.Random(__lowerCamelCase			)			).to(__lowerCamelCase			)

						lowerCAmelCase__					:    Dict												=					{
						    '''prompt''': '''A painting of a squirrel eating a burger''',
						    '''image''': image,
						    '''original_image''': original_image,
						    '''mask_image''': mask_image,
						    '''generator''': generator,
						    '''num_inference_steps''': 2,
						    '''output_type''': '''numpy''',
						}

						return inputs



		@unittest.skipIf(
		    torch_device != '''cuda''' or not is_xformers_available()		,reason='''XFormers attention is only available with CUDA and `xformers` installed'''		,)
		def 		lowerCAmelCase__				(self			)					->      int:

						"""simple docstring"""






						self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1e-3			)



		def 		lowerCAmelCase__				(self			)					->      int:

						"""simple docstring"""






						self._test_save_load_optional_components()



		@unittest.skipIf(torch_device != '''cuda'''		,reason='''float16 requires CUDA'''			)
		def 		lowerCAmelCase__				(self			)					->      str:

						"""simple docstring"""






						super().test_save_load_floataa(expected_max_diff=1e-1			)



		def 		lowerCAmelCase__				(self			)					->      Any:

						"""simple docstring"""






						self._test_attention_slicing_forward_pass(expected_max_diff=1e-2			)



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

						"""simple docstring"""






						self._test_save_load_local()



		def 		lowerCAmelCase__				(self			)					->      Any:

						"""simple docstring"""






						self._test_inference_batch_single_identical(
						    expected_max_diff=1e-2		,)

