
"""simple docstring"""




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




"""simple docstring"""




import unittest

import numpy as np
import torch

from diffusers import DDPMPipeline, DDPMScheduler, UNetaDModel
from diffusers.utils.testing_utils import enable_full_determinism, require_torch_gpu, slow, torch_device


enable_full_determinism()

class 		a__						(				unittest.TestCase						):
   @property
   def       __magic_name__      (      self    ):
          torch.manual_seed(0    )
          lowercase   :    int			=							UNetaDModel(
              block_out_channels=(32, 64)     ,   layers_per_block=2     ,   sample_size=32     ,   in_channels=3     ,   out_channels=3     ,   down_block_types=("DownBlock2D", "AttnDownBlock2D")     ,   up_block_types=("AttnUpBlock2D", "UpBlock2D")     ,   )
          return model
   def       __magic_name__      (      self    ):
          lowercase   :    int			=							"cpu"
          lowercase   :    Dict			=							self.dummy_uncond_unet
          lowercase   :    List[str]			=							DDPMScheduler()

          lowercase   :    Tuple			=							DDPMPipeline(unet=_a     ,   scheduler=_a    )
          ddpm.to(_a    )
          ddpm.set_progress_bar_config(disable=_a    )

          lowercase   :    Optional[int]			=							torch.Generator(device=_a    ).manual_seed(0    )
          lowercase   :    Optional[int]			=							ddpm(generator=_a     ,   num_inference_steps=2     ,   output_type="numpy"    ).images

          lowercase   :    List[str]			=							torch.Generator(device=_a    ).manual_seed(0    )
          lowercase   :    List[str]			=							ddpm(generator=_a     ,   num_inference_steps=2     ,   output_type="numpy"     ,   return_dict=_a    )[0]

          lowercase   :    List[str]			=							image[0, -3:, -3:, -1]
          lowercase   :    Any			=							image_from_tuple[0, -3:, -3:, -1]

          assert image.shape == (1, 32, 32, 3)
          lowercase   :    List[str]			=							np.array(
              [9.956E-01, 5.785E-01, 4.675E-01, 9.930E-01, 0.0, 1.0_0_0, 1.199E-03, 2.648E-04, 5.101E-04]    )

          assert np.abs(image_slice.flatten() - expected_slice    ).max() < 1E-2
          assert np.abs(image_from_tuple_slice.flatten() - expected_slice    ).max() < 1E-2

   def       __magic_name__      (      self    ):
          lowercase   :    Any			=							self.dummy_uncond_unet
          lowercase   :    Dict			=							DDPMScheduler(prediction_type="sample"    )

          lowercase   :    List[Any]			=							DDPMPipeline(unet=_a     ,   scheduler=_a    )
          ddpm.to(_a    )
          ddpm.set_progress_bar_config(disable=_a    )

          lowercase   :    Any			=							torch.manual_seed(0    )
          lowercase   :    int			=							ddpm(generator=_a     ,   num_inference_steps=2     ,   output_type="numpy"    ).images

          lowercase   :    List[str]			=							torch.manual_seed(0    )
          lowercase   :    Optional[Any]			=							ddpm(generator=_a     ,   num_inference_steps=2     ,   output_type="numpy"    )[0]

          lowercase   :    Any			=							image[0, -3:, -3:, -1]
          lowercase   :    Dict			=							image_eps[0, -3:, -3:, -1]

          assert image.shape == (1, 32, 32, 3)
          lowercase   :    Tuple			=							1E-2 if torch_device != "mps" else 3E-2
          assert np.abs(image_slice.flatten() - image_eps_slice.flatten()    ).max() < tolerance


@slow
@require_torch_gpu
class 		a__						(				unittest.TestCase						):
   def       __magic_name__      (      self    ):
          lowercase   :    Optional[Any]			=							"google/ddpm-cifar10-32"

          lowercase   :    Dict			=							UNetaDModel.from_pretrained(_a    )
          lowercase   :    str			=							DDPMScheduler.from_pretrained(_a    )

          lowercase   :    int			=							DDPMPipeline(unet=_a     ,   scheduler=_a    )
          ddpm.to(_a    )
          ddpm.set_progress_bar_config(disable=_a    )

          lowercase   :    Dict			=							torch.manual_seed(0    )
          lowercase   :    List[str]			=							ddpm(generator=_a     ,   output_type="numpy"    ).images

          lowercase   :    int			=							image[0, -3:, -3:, -1]

          assert image.shape == (1, 32, 32, 3)
          lowercase   :    Optional[Any]			=							np.array([0.4_2_0_0, 0.3_5_8_8, 0.1_9_3_9, 0.3_8_4_7, 0.3_3_8_2, 0.2_6_4_7, 0.4_1_5_5, 0.3_5_8_2, 0.3_3_8_5]    )
          assert np.abs(image_slice.flatten() - expected_slice    ).max() < 1E-2


