


"""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_	(    UpperCamelCase__			,     UpperCamelCase__			,     unittest.TestCase      ):
  lowerCAmelCase__	       =     IFImgaImgPipeline
  lowerCAmelCase__	       =     TEXT_GUIDED_IMAGE_VARIATION_PARAMS - {'width', 'height'}
  lowerCAmelCase__	       =     TEXT_GUIDED_IMAGE_VARIATION_BATCH_PARAMS
  lowerCAmelCase__	       =     PipelineTesterMixin.required_optional_params - {'latents'}


  def 				_lowercase (       self:		Tuple  ):







     '''simple docstring'''







     return self._get_dummy_components()


  def 				_lowercase (       self:		List[str]				,__lowerCAmelCase:		Any				,__lowerCAmelCase:		Any=0  ):







     '''simple docstring'''







     if str(SCREAMING_SNAKE_CASE__  ).startswith("mps"  ):
        _lowerCamelCase					:							Optional[Any]				=			torch.manual_seed(SCREAMING_SNAKE_CASE__  )
     else:
        _lowerCamelCase					:							int				=			torch.Generator(device=SCREAMING_SNAKE_CASE__  ).manual_seed(SCREAMING_SNAKE_CASE__  )

     _lowerCamelCase					:							Optional[int]				=			floats_tensor((1, 3, 32, 32)				,rng=random.Random(SCREAMING_SNAKE_CASE__  )  ).to(SCREAMING_SNAKE_CASE__  )

     _lowerCamelCase					:							Optional[Any]				=			{
         "prompt": "A painting of a squirrel eating a burger",
         "image": image,
         "generator": generator,
         "num_inference_steps": 2,
         "output_type": "numpy",
     }

     return inputs


  def 				_lowercase (       self:		Optional[int]  ):







     '''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 				_lowercase (       self:		Optional[Any]  ):







     '''simple docstring'''







     self._test_xformers_attention_forwardGenerator_pass(expected_max_diff=1e-3  )


  @unittest.skipIf(torch_device != "cuda"				,reason="float16 requires CUDA"  )
  def 				_lowercase (       self:		Optional[int]  ):







     '''simple docstring'''







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


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







     '''simple docstring'''







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


  def 				_lowercase (       self:		List[Any]  ):







     '''simple docstring'''







     self._test_attention_slicing_forward_pass(expected_max_diff=1e-2  )


  def 				_lowercase (       self:		int  ):







     '''simple docstring'''







     self._test_save_load_local()






  def 				_lowercase (       self:		List[Any]  ):







     '''simple docstring'''







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





from ..utils import (
    OptionalDependencyNotAvailable,
    is_flax_available,
    is_invisible_watermark_available,
    is_k_diffusion_available,
    is_librosa_available,
    is_note_seq_available,
    is_onnx_available,
    is_torch_available,
    is_transformers_available,
)


try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ..utils.dummy_pt_objects import *  # noqa F403
else:
     from .consistency_models import ConsistencyModelPipeline
     from .dance_diffusion import DanceDiffusionPipeline
     from .ddim import DDIMPipeline
     from .ddpm import DDPMPipeline
     from .dit import DiTPipeline
     from .latent_diffusion import LDMSuperResolutionPipeline
     from .latent_diffusion_uncond import LDMPipeline
     from .pipeline_utils import AudioPipelineOutput, DiffusionPipeline, ImagePipelineOutput
     from .pndm import PNDMPipeline
     from .repaint import RePaintPipeline
     from .score_sde_ve import ScoreSdeVePipeline
     from .stochastic_karras_ve import KarrasVePipeline

try:
     if not (is_torch_available() and is_librosa_available()):
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ..utils.dummy_torch_and_librosa_objects import *  # noqa F403
else:
     from .audio_diffusion import AudioDiffusionPipeline, Mel

try:
     if not (is_torch_available() and is_transformers_available()):
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ..utils.dummy_torch_and_transformers_objects import *  # noqa F403
else:
     from .alt_diffusion import AltDiffusionImgaImgPipeline, AltDiffusionPipeline
     from .audioldm import AudioLDMPipeline
     from .controlnet import (
         StableDiffusionControlNetImgaImgPipeline,
         StableDiffusionControlNetInpaintPipeline,
         StableDiffusionControlNetPipeline,
     )
     from .deepfloyd_if import (
         IFImgaImgPipeline,
         IFImgaImgSuperResolutionPipeline,
         IFInpaintingPipeline,
         IFInpaintingSuperResolutionPipeline,
         IFPipeline,
         IFSuperResolutionPipeline,
     )
     from .kandinsky import (
         KandinskyImgaImgPipeline,
         KandinskyInpaintPipeline,
         KandinskyPipeline,
         KandinskyPriorPipeline,
     )
     from .kandinskya_a import (
         KandinskyVaaControlnetImgaImgPipeline,
         KandinskyVaaControlnetPipeline,
         KandinskyVaaImgaImgPipeline,
         KandinskyVaaInpaintPipeline,
         KandinskyVaaPipeline,
         KandinskyVaaPriorEmbaEmbPipeline,
         KandinskyVaaPriorPipeline,
     )
     from .latent_diffusion import LDMTextToImagePipeline
     from .paint_by_example import PaintByExamplePipeline
     from .semantic_stable_diffusion import SemanticStableDiffusionPipeline
     from .shap_e import ShapEImgaImgPipeline, ShapEPipeline
     from .stable_diffusion import (
         CycleDiffusionPipeline,
         StableDiffusionAttendAndExcitePipeline,
         StableDiffusionDepthaImgPipeline,
         StableDiffusionDiffEditPipeline,
         StableDiffusionImageVariationPipeline,
         StableDiffusionImgaImgPipeline,
         StableDiffusionInpaintPipeline,
         StableDiffusionInpaintPipelineLegacy,
         StableDiffusionInstructPixaPixPipeline,
         StableDiffusionLatentUpscalePipeline,
         StableDiffusionLDMaDPipeline,
         StableDiffusionModelEditingPipeline,
         StableDiffusionPanoramaPipeline,
         StableDiffusionParadigmsPipeline,
         StableDiffusionPipeline,
         StableDiffusionPixaPixZeroPipeline,
         StableDiffusionSAGPipeline,
         StableDiffusionUpscalePipeline,
         StableUnCLIPImgaImgPipeline,
         StableUnCLIPPipeline,
     )
     from .stable_diffusion_safe import StableDiffusionPipelineSafe
     from .text_to_video_synthesis import TextToVideoSDPipeline, TextToVideoZeroPipeline, VideoToVideoSDPipeline
     from .unclip import UnCLIPImageVariationPipeline, UnCLIPPipeline
     from .unidiffuser import ImageTextPipelineOutput, UniDiffuserModel, UniDiffuserPipeline, UniDiffuserTextDecoder
     from .versatile_diffusion import (
         VersatileDiffusionDualGuidedPipeline,
         VersatileDiffusionImageVariationPipeline,
         VersatileDiffusionPipeline,
         VersatileDiffusionTextToImagePipeline,
     )
     from .vq_diffusion import VQDiffusionPipeline


try:
     if not (is_torch_available() and is_transformers_available() and is_invisible_watermark_available()):
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ..utils.dummy_torch_and_transformers_and_invisible_watermark_objects import *  # noqa F403
else:
     from .stable_diffusion_xl import StableDiffusionXLImgaImgPipeline, StableDiffusionXLPipeline

try:
     if not is_onnx_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ..utils.dummy_onnx_objects import *  # noqa F403
else:
     from .onnx_utils import OnnxRuntimeModel

try:
     if not (is_torch_available() and is_transformers_available() and is_onnx_available()):
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ..utils.dummy_torch_and_transformers_and_onnx_objects import *  # noqa F403
else:
     from .stable_diffusion import (
         OnnxStableDiffusionImgaImgPipeline,
         OnnxStableDiffusionInpaintPipeline,
         OnnxStableDiffusionInpaintPipelineLegacy,
         OnnxStableDiffusionPipeline,
         OnnxStableDiffusionUpscalePipeline,
         StableDiffusionOnnxPipeline,
     )

try:
     if not (is_torch_available() and is_transformers_available() and is_k_diffusion_available()):
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ..utils.dummy_torch_and_transformers_and_k_diffusion_objects import *  # noqa F403
else:
     from .stable_diffusion import StableDiffusionKDiffusionPipeline

try:
     if not is_flax_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ..utils.dummy_flax_objects import *  # noqa F403
else:
     from .pipeline_flax_utils import FlaxDiffusionPipeline


try:
     if not (is_flax_available() and is_transformers_available()):
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ..utils.dummy_flax_and_transformers_objects import *  # noqa F403
else:
     from .controlnet import FlaxStableDiffusionControlNetPipeline
     from .stable_diffusion import (
         FlaxStableDiffusionImgaImgPipeline,
         FlaxStableDiffusionInpaintPipeline,
         FlaxStableDiffusionPipeline,
     )
try:
     if not (is_transformers_available() and is_torch_available() and is_note_seq_available()):
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     from ..utils.dummy_transformers_and_torch_and_note_seq_objects import *  # noqa F403
else:
     from .spectrogram_diffusion import MidiProcessor, SpectrogramDiffusionPipeline
