






'''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 (		UpperCamelCase__      ,				UpperCamelCase__      ,				unittest.TestCase	):

      '''simple docstring'''





      SCREAMING_SNAKE_CASE				:    Any				       =					IFSuperResolutionPipeline
      SCREAMING_SNAKE_CASE				:    List[Any]				       =					TEXT_GUIDED_IMAGE_VARIATION_PARAMS - {"width", "height"}
      SCREAMING_SNAKE_CASE				:    Union[str, Any]				       =					TEXT_GUIDED_IMAGE_VARIATION_BATCH_PARAMS
      SCREAMING_SNAKE_CASE				:    int				       =					PipelineTesterMixin.required_optional_params - {"latents"}




      def 							lowerCamelCase     (					self						):
             return self._get_superresolution_dummy_components()




      def 							lowerCamelCase     (					self  ,		_UpperCAmelCase  ,		_UpperCAmelCase=0						):
             if str(_UpperCAmelCase						).startswith('''mps'''						):
                    UpperCAmelCase__	:   int												=	torch.manual_seed(_UpperCAmelCase						)
             else:
                    UpperCAmelCase__	:   Dict												=	torch.Generator(device=_UpperCAmelCase						).manual_seed(_UpperCAmelCase						)

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

             UpperCAmelCase__	:   Union[str, Any]												=	{
                 '''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 							lowerCamelCase     (					self						):
             self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1E-3						)




      def 							lowerCamelCase     (					self						):
             self._test_save_load_optional_components()




      @unittest.skipIf(torch_device != '''cuda'''  ,		reason='''float16 requires CUDA'''						)
      def 							lowerCamelCase     (					self						):
             # 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 							lowerCamelCase     (					self						):
             self._test_attention_slicing_forward_pass(expected_max_diff=1E-2						)




      def 							lowerCamelCase     (					self						):
             self._test_save_load_local()




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







'''simple docstring'''







from typing import TYPE_CHECKING

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


UpperCamelCase_					=				{
    "configuration_flava": [
        "FLAVA_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "FlavaConfig",
        "FlavaImageCodebookConfig",
        "FlavaImageConfig",
        "FlavaMultimodalConfig",
        "FlavaTextConfig",
    ],
}

try:
  if not is_vision_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  UpperCamelCase_					=				["FlavaFeatureExtractor"]
  UpperCamelCase_					=				["FlavaImageProcessor"]
  UpperCamelCase_					=				["FlavaProcessor"]

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  UpperCamelCase_					=				[
      "FLAVA_PRETRAINED_MODEL_ARCHIVE_LIST",
      "FlavaForPreTraining",
      "FlavaImageCodebook",
      "FlavaImageModel",
      "FlavaModel",
      "FlavaMultimodalModel",
      "FlavaPreTrainedModel",
      "FlavaTextModel",
  ]

if TYPE_CHECKING:
  from .configuration_flava import (
      FLAVA_PRETRAINED_CONFIG_ARCHIVE_MAP,
      FlavaConfig,
      FlavaImageCodebookConfig,
      FlavaImageConfig,
      FlavaMultimodalConfig,
      FlavaTextConfig,
  )

  try:
    if not is_vision_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .feature_extraction_flava import FlavaFeatureExtractor
    from .image_processing_flava import FlavaImageProcessor
    from .processing_flava import FlavaProcessor

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_flava import (
        FLAVA_PRETRAINED_MODEL_ARCHIVE_LIST,
        FlavaForPreTraining,
        FlavaImageCodebook,
        FlavaImageModel,
        FlavaModel,
        FlavaMultimodalModel,
        FlavaPreTrainedModel,
        FlavaTextModel,
    )

else:
  import sys

  UpperCamelCase_					=				_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)