






"""simple docstring"""



import random
import unittest

import torch

from diffusers import IFSuperResolutionPipeline
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_VARIATION_BATCH_PARAMS, TEXT_GUIDED_IMAGE_VARIATION_PARAMS
from ..test_pipelines_common import PipelineTesterMixin
from . import IFPipelineTesterMixin





@skip_mps
class  _UpperCAmelCase	(			_A       ,						_A       ,						unittest.TestCase							):
					SCREAMING_SNAKE_CASE_		:    Optional[int]							   =       IFSuperResolutionPipeline
					SCREAMING_SNAKE_CASE_		:    Union[str, Any]							   =       TEXT_GUIDED_IMAGE_VARIATION_PARAMS - {"width", "height"}
					SCREAMING_SNAKE_CASE_		:    Union[str, Any]							   =       TEXT_GUIDED_IMAGE_VARIATION_BATCH_PARAMS
					SCREAMING_SNAKE_CASE_		:    Optional[Any]							   =       PipelineTesterMixin.required_optional_params - {"latents"}




					def   A  (    self					:						List[str]       )  ->  Any:
							return self._get_superresolution_dummy_components()




					def   A  (    self					:						str   ,						A					:						Tuple   ,						A					:						Optional[int]=0       )  ->  int:
							if str(A       ).startswith('''mps'''       ):
									lowercase_			:			Any								=       torch.manual_seed(A       )
							else:
									lowercase_			:			Union[str, Any]								=       torch.Generator(device=A       ).manual_seed(A       )

							lowercase_			:			List[Any]								=       floats_tensor((1, 3, 32, 32)   ,						rng=random.Random(A       )       ).to(A       )

							lowercase_			:			str								=       {
							    '''prompt''': '''A painting of a squirrel eating a burger''',
							    '''image''': 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   A  (    self					:						Any       )  ->  int:
							self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1e-3       )




					def   A  (    self					:						List[Any]       )  ->  str:
							self._test_save_load_optional_components()




					@unittest.skipIf(torch_device != '''cuda'''   ,						reason='''float16 requires CUDA'''       )
					def   A  (    self					:						List[str]       )  ->  List[str]:
							# Due to non-determinism in save load of the hf-internal-testing/tiny-random-t5 text encoder
							super().test_save_load_floataa(expected_max_diff=1e-1       )




					def   A  (    self					:						int       )  ->  List[Any]:
							self._test_attention_slicing_forward_pass(expected_max_diff=1e-2       )




					def   A  (    self					:						int       )  ->  int:
							self._test_save_load_local()






					def   A  (    self					:						str       )  ->  List[str]:
							self._test_inference_batch_single_identical(
							    expected_max_diff=1e-2   ,						)











"""simple docstring"""



from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tokenizers_available, is_torch_available


__A		:	Any      =		{
    '''configuration_markuplm''': ['''MARKUPLM_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''MarkupLMConfig'''],
    '''feature_extraction_markuplm''': ['''MarkupLMFeatureExtractor'''],
    '''processing_markuplm''': ['''MarkupLMProcessor'''],
    '''tokenization_markuplm''': ['''MarkupLMTokenizer'''],
}

try:
						if not is_tokenizers_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						__A		:	List[str]      =		['''MarkupLMTokenizerFast''']

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						__A		:	Optional[int]      =		[
						    '''MARKUPLM_PRETRAINED_MODEL_ARCHIVE_LIST''',
						    '''MarkupLMForQuestionAnswering''',
						    '''MarkupLMForSequenceClassification''',
						    '''MarkupLMForTokenClassification''',
						    '''MarkupLMModel''',
						    '''MarkupLMPreTrainedModel''',
						]


if TYPE_CHECKING:
						from .configuration_markuplm import MARKUPLM_PRETRAINED_CONFIG_ARCHIVE_MAP, MarkupLMConfig
						from .feature_extraction_markuplm import MarkupLMFeatureExtractor
						from .processing_markuplm import MarkupLMProcessor
						from .tokenization_markuplm import MarkupLMTokenizer

						try:
												if not is_tokenizers_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .tokenization_markuplm_fast import MarkupLMTokenizerFast

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_markuplm import (
												    MARKUPLM_PRETRAINED_MODEL_ARCHIVE_LIST,
												    MarkupLMForQuestionAnswering,
												    MarkupLMForSequenceClassification,
												    MarkupLMForTokenClassification,
												    MarkupLMModel,
												    MarkupLMPreTrainedModel,
												)


else:
						import sys

						__A		:	Optional[Any]      =		_LazyModule(__name__, globals()['''__file__'''], _import_structure)



