


'''simple docstring'''
import random
import unittest

import torch

from diffusers import IFImgaImgSuperResolutionPipeline
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    lowercase	(							A__	,		A__	,		unittest.TestCase					):

		"""simple docstring"""

		_a     =				IFImgaImgSuperResolutionPipeline
		_a     =				TEXT_GUIDED_IMAGE_VARIATION_PARAMS - {"width", "height"}
		_a     =				TEXT_GUIDED_IMAGE_VARIATION_BATCH_PARAMS.union({'original_image'}					)
		_a     =				PipelineTesterMixin.required_optional_params - {"latents"}




		def     lowerCAmelCase__				(		self							):

							'''simple docstring'''


							return self._get_superresolution_dummy_components()




		def     lowerCAmelCase__				(		self    ,   UpperCamelCase_    ,   UpperCamelCase_=0							):

							'''simple docstring'''


							if str(UpperCAmelCase__							).startswith('''mps'''							):
												UpperCamelCase__   :List[Any]												= torch.manual_seed(UpperCAmelCase__							)
							else:
												UpperCamelCase__   :Optional[int]												= torch.Generator(device=UpperCAmelCase__							).manual_seed(UpperCAmelCase__							)

							UpperCamelCase__   :Dict												= floats_tensor((1, 3, 32, 32)    ,   rng=random.Random(UpperCAmelCase__							)							).to(UpperCAmelCase__							)
							UpperCamelCase__   :Optional[Any]												= floats_tensor((1, 3, 16, 16)    ,   rng=random.Random(UpperCAmelCase__							)							).to(UpperCAmelCase__							)

							UpperCamelCase__   :Optional[int]												= {
							    '''prompt''': '''A painting of a squirrel eating a burger''',
							    '''image''': image,
							    '''original_image''': original_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							):

							'''simple docstring'''


							self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1e-3							)




		def     lowerCAmelCase__				(		self							):

							'''simple docstring'''


							self._test_save_load_optional_components()




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

							'''simple docstring'''


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




		def     lowerCAmelCase__				(		self							):

							'''simple docstring'''


							self._test_attention_slicing_forward_pass(expected_max_diff=1e-2							)




		def     lowerCAmelCase__				(		self							):

							'''simple docstring'''


							self._test_save_load_local()




		def     lowerCAmelCase__				(		self							):

							'''simple docstring'''


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



"""simple docstring"""







from typing import TYPE_CHECKING

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


a__				:							str						=     {
    '''configuration_roformer''': ['''ROFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''RoFormerConfig''', '''RoFormerOnnxConfig'''],
    '''tokenization_roformer''': ['''RoFormerTokenizer'''],
}

try:
		if not is_tokenizers_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		a__				:							int						=     ['''RoFormerTokenizerFast''']

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		a__				:							int						=     [
		    '''ROFORMER_PRETRAINED_MODEL_ARCHIVE_LIST''',
		    '''RoFormerForCausalLM''',
		    '''RoFormerForMaskedLM''',
		    '''RoFormerForMultipleChoice''',
		    '''RoFormerForQuestionAnswering''',
		    '''RoFormerForSequenceClassification''',
		    '''RoFormerForTokenClassification''',
		    '''RoFormerLayer''',
		    '''RoFormerModel''',
		    '''RoFormerPreTrainedModel''',
		    '''load_tf_weights_in_roformer''',
		]


try:
		if not is_tf_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		a__				:							List[Any]						=     [
		    '''TF_ROFORMER_PRETRAINED_MODEL_ARCHIVE_LIST''',
		    '''TFRoFormerForCausalLM''',
		    '''TFRoFormerForMaskedLM''',
		    '''TFRoFormerForMultipleChoice''',
		    '''TFRoFormerForQuestionAnswering''',
		    '''TFRoFormerForSequenceClassification''',
		    '''TFRoFormerForTokenClassification''',
		    '''TFRoFormerLayer''',
		    '''TFRoFormerModel''',
		    '''TFRoFormerPreTrainedModel''',
		]


try:
		if not is_flax_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		a__				:							Tuple						=     [
		    '''FLAX_ROFORMER_PRETRAINED_MODEL_ARCHIVE_LIST''',
		    '''FlaxRoFormerForMaskedLM''',
		    '''FlaxRoFormerForMultipleChoice''',
		    '''FlaxRoFormerForQuestionAnswering''',
		    '''FlaxRoFormerForSequenceClassification''',
		    '''FlaxRoFormerForTokenClassification''',
		    '''FlaxRoFormerModel''',
		    '''FlaxRoFormerPreTrainedModel''',
		]


if TYPE_CHECKING:
		from .configuration_roformer import ROFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP, RoFormerConfig, RoFormerOnnxConfig
		from .tokenization_roformer import RoFormerTokenizer

		try:
				if not is_tokenizers_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .tokenization_roformer_fast import RoFormerTokenizerFast

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_roformer import (
				    ROFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
				    RoFormerForCausalLM,
				    RoFormerForMaskedLM,
				    RoFormerForMultipleChoice,
				    RoFormerForQuestionAnswering,
				    RoFormerForSequenceClassification,
				    RoFormerForTokenClassification,
				    RoFormerLayer,
				    RoFormerModel,
				    RoFormerPreTrainedModel,
				    load_tf_weights_in_roformer,
				)

		try:
				if not is_tf_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_tf_roformer import (
				    TF_ROFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
				    TFRoFormerForCausalLM,
				    TFRoFormerForMaskedLM,
				    TFRoFormerForMultipleChoice,
				    TFRoFormerForQuestionAnswering,
				    TFRoFormerForSequenceClassification,
				    TFRoFormerForTokenClassification,
				    TFRoFormerLayer,
				    TFRoFormerModel,
				    TFRoFormerPreTrainedModel,
				)

		try:
				if not is_flax_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_flax_roformer import (
				    FLAX_ROFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
				    FlaxRoFormerForMaskedLM,
				    FlaxRoFormerForMultipleChoice,
				    FlaxRoFormerForQuestionAnswering,
				    FlaxRoFormerForSequenceClassification,
				    FlaxRoFormerForTokenClassification,
				    FlaxRoFormerModel,
				    FlaxRoFormerPreTrainedModel,
				)


else:
		import sys

		a__				:							int						=     _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)
