





"""simple docstring"""
import random
import unittest

import torch

from diffusers import IFImgaImgPipeline
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 	a				(					a__					,      a__					,      unittest.TestCase   ):
 snake_case__    	=    IFImgaImgPipeline
 snake_case__    	=    TEXT_GUIDED_IMAGE_VARIATION_PARAMS - {'''width''', '''height'''}
 snake_case__    	=    TEXT_GUIDED_IMAGE_VARIATION_BATCH_PARAMS
 snake_case__    	=    PipelineTesterMixin.required_optional_params - {'''latents'''}



 def 					UpperCamelCase__   (			self			):







  """simple docstring"""






  return self._get_dummy_components()



 def 					UpperCamelCase__   (			self							,    _snake_case							,    _snake_case=0			):







  """simple docstring"""






  if str(_snake_case			).startswith('mps'			):
   lowerCAmelCase  							=      torch.manual_seed(_snake_case			)
  else:
   lowerCAmelCase  							=      torch.Generator(device=_snake_case			).manual_seed(_snake_case			)

  lowerCAmelCase  							=      floats_tensor((1, 3, 32, 32)							,    rng=random.Random(_snake_case			)			).to(_snake_case			)

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

  return inputs



 def 					UpperCamelCase__   (			self			):







  """simple docstring"""






  self._test_save_load_optional_components()



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







  """simple docstring"""






  self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1E-3			)



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







  """simple docstring"""






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



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







  """simple docstring"""






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



 def 					UpperCamelCase__   (			self			):







  """simple docstring"""






  self._test_attention_slicing_forward_pass(expected_max_diff=1E-2			)



 def 					UpperCamelCase__   (			self			):







  """simple docstring"""






  self._test_save_load_local()



 def 					UpperCamelCase__   (			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_tokenizers_available, is_torch_available


__UpperCamelCase			:		List[Any]		    =   {'''configuration_yoso''': ['''YOSO_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''YosoConfig''']}

try:
       if not is_torch_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       __UpperCamelCase			:		Dict		    =   [
           '''YOSO_PRETRAINED_MODEL_ARCHIVE_LIST''',
           '''YosoForMaskedLM''',
           '''YosoForMultipleChoice''',
           '''YosoForQuestionAnswering''',
           '''YosoForSequenceClassification''',
           '''YosoForTokenClassification''',
           '''YosoLayer''',
           '''YosoModel''',
           '''YosoPreTrainedModel''',
       ]


if TYPE_CHECKING:
       from .configuration_yoso import YOSO_PRETRAINED_CONFIG_ARCHIVE_MAP, YosoConfig

       try:
              if not is_torch_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_yoso import (
                  YOSO_PRETRAINED_MODEL_ARCHIVE_LIST,
                  YosoForMaskedLM,
                  YosoForMultipleChoice,
                  YosoForQuestionAnswering,
                  YosoForSequenceClassification,
                  YosoForTokenClassification,
                  YosoLayer,
                  YosoModel,
                  YosoPreTrainedModel,
              )


else:
       import sys

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





