



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    lowerCamelCase__  (						_UpperCAmelCase       ,    _UpperCAmelCase       ,    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 						_a      (self    ):






           '''simple docstring'''



           return self._get_superresolution_dummy_components()







     def 						_a      (self				,			__a				,			__a=0    ):






           '''simple docstring'''



           if str(lowercase__    ).startswith("mps"    ):
                 lowerCamelCase								=		torch.manual_seed(lowercase__    )
           else:
                 lowerCamelCase								=		torch.Generator(device=lowercase__    ).manual_seed(lowercase__    )

           lowerCamelCase								=		floats_tensor((1, 3, 32, 32)				,			rng=random.Random(lowercase__    )    ).to(lowercase__    )
           lowerCamelCase								=		floats_tensor((1, 3, 16, 16)				,			rng=random.Random(lowercase__    )    ).to(lowercase__    )

           lowerCamelCase								=		{
               "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 						_a      (self    ):






           '''simple docstring'''



           self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1E-3    )







     def 						_a      (self    ):






           '''simple docstring'''



           self._test_save_load_optional_components()







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






           '''simple docstring'''



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







     def 						_a      (self    ):






           '''simple docstring'''



           self._test_attention_slicing_forward_pass(expected_max_diff=1E-2    )







     def 						_a      (self    ):






           '''simple docstring'''



           self._test_save_load_local()







     def 						_a      (self    ):






           '''simple docstring'''



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




# Copyright 2023 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


a_						:     Tuple	     =		{
    'configuration_xmod': [
        'XMOD_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'XmodConfig',
        'XmodOnnxConfig',
    ],
}

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     a_						:     List[Any]	     =		[
         'XMOD_PRETRAINED_MODEL_ARCHIVE_LIST',
         'XmodForCausalLM',
         'XmodForMaskedLM',
         'XmodForMultipleChoice',
         'XmodForQuestionAnswering',
         'XmodForSequenceClassification',
         'XmodForTokenClassification',
         'XmodModel',
         'XmodPreTrainedModel',
     ]

if TYPE_CHECKING:
     from .configuration_xmod import XMOD_PRETRAINED_CONFIG_ARCHIVE_MAP, XmodConfig, XmodOnnxConfig

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_xmod import (
              XMOD_PRETRAINED_MODEL_ARCHIVE_LIST,
              XmodForCausalLM,
              XmodForMaskedLM,
              XmodForMultipleChoice,
              XmodForQuestionAnswering,
              XmodForSequenceClassification,
              XmodForTokenClassification,
              XmodModel,
              XmodPreTrainedModel,
          )

else:
     import sys

     a_						:     str	     =		_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)