






'''simple docstring'''



import importlib
import os
from dataclasses import dataclass
from enum import Enum
from typing import Any, Dict, Optional, Union

import torch

from ..utils import BaseOutput


SCREAMING_SNAKE_CASE							=						'scheduler_config.json'
class UpperCAmelCase_       (     __A					):




      """simple docstring"""




      UpperCamelCase_             =      1
      UpperCamelCase_             =      2
      UpperCamelCase_             =      3
      UpperCamelCase_             =      4
      UpperCamelCase_             =      5
      UpperCamelCase_             =      6
      UpperCamelCase_             =      7
      UpperCamelCase_             =      8
      UpperCamelCase_             =      9
      UpperCamelCase_             =      10
      UpperCamelCase_             =      11
      UpperCamelCase_             =      12
      UpperCamelCase_             =      13
      UpperCamelCase_             =      14





@dataclass
class UpperCAmelCase_       (     __A					):




      """simple docstring"""




      UpperCamelCase_             =      42





class UpperCAmelCase_       :




      """simple docstring"""




      UpperCamelCase_             =      SCHEDULER_CONFIG_NAME
      UpperCamelCase_             =      []
      UpperCamelCase_             =      True






      @classmethod
      def 					A__   (			cls      :		Optional[int]  ,   UpperCAmelCase      :		Dict[str, Any] = None  ,   UpperCAmelCase      :		Optional[str] = None  ,   UpperCAmelCase      :		Optional[int]=False  ,   **UpperCAmelCase      :		Union[str, Any]  ,   )	->	List[Any]:


       '''simple docstring'''

       lowercase	,		lowercase	,		lowercase       : List[Any]						=cls.load_config(
           pretrained_model_name_or_path=UpperCAmelCase  ,   subfolder=UpperCAmelCase  ,   return_unused_kwargs=UpperCAmelCase  ,   return_commit_hash=UpperCAmelCase  ,   **UpperCAmelCase  ,   )
       return cls.from_config(UpperCAmelCase  ,   return_unused_kwargs=UpperCAmelCase  ,   **UpperCAmelCase		)






      def 					A__   (			self      :		List[str]  ,   UpperCAmelCase      :		Union[str, os.PathLike]  ,   UpperCAmelCase      :		bool = False  ,   **UpperCAmelCase      :		List[str]		)	->	Dict:


       '''simple docstring'''

       self.save_config(save_directory=UpperCAmelCase  ,   push_to_hub=UpperCAmelCase  ,   **UpperCAmelCase		)






      @property
      def 					A__   (			self      :		Dict		)	->	List[str]:


       '''simple docstring'''

       return self._get_compatibles()






      @classmethod
      def 					A__   (			cls      :		Union[str, Any]		)	->	int:


       '''simple docstring'''

       lowercase       : Tuple						=list(set([cls.__name__] + cls._compatibles		)		)
       lowercase       : Tuple						=importlib.import_module(__name__.split('''.'''		)[0]		)
       lowercase       : Dict						=[
           getattr(UpperCAmelCase  ,   UpperCAmelCase		) for c in compatible_classes_str if hasattr(UpperCAmelCase  ,   UpperCAmelCase		)
       ]
       return compatible_classes










from ..utils import (
    OptionalDependencyNotAvailable,
    is_flax_available,
    is_scipy_available,
    is_torch_available,
    is_torchsde_available,
)


try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ..utils.dummy_pt_objects import *  # noqa F403
else:
  from .scheduling_consistency_models import CMStochasticIterativeScheduler
  from .scheduling_ddim import DDIMScheduler
  from .scheduling_ddim_inverse import DDIMInverseScheduler
  from .scheduling_ddim_parallel import DDIMParallelScheduler
  from .scheduling_ddpm import DDPMScheduler
  from .scheduling_ddpm_parallel import DDPMParallelScheduler
  from .scheduling_deis_multistep import DEISMultistepScheduler
  from .scheduling_dpmsolver_multistep import DPMSolverMultistepScheduler
  from .scheduling_dpmsolver_multistep_inverse import DPMSolverMultistepInverseScheduler
  from .scheduling_dpmsolver_singlestep import DPMSolverSinglestepScheduler
  from .scheduling_euler_ancestral_discrete import EulerAncestralDiscreteScheduler
  from .scheduling_euler_discrete import EulerDiscreteScheduler
  from .scheduling_heun_discrete import HeunDiscreteScheduler
  from .scheduling_ipndm import IPNDMScheduler
  from .scheduling_k_dpm_2_ancestral_discrete import KDPMaAncestralDiscreteScheduler
  from .scheduling_k_dpm_2_discrete import KDPMaDiscreteScheduler
  from .scheduling_karras_ve import KarrasVeScheduler
  from .scheduling_pndm import PNDMScheduler
  from .scheduling_repaint import RePaintScheduler
  from .scheduling_sde_ve import ScoreSdeVeScheduler
  from .scheduling_sde_vp import ScoreSdeVpScheduler
  from .scheduling_unclip import UnCLIPScheduler
  from .scheduling_unipc_multistep import UniPCMultistepScheduler
  from .scheduling_utils import KarrasDiffusionSchedulers, SchedulerMixin
  from .scheduling_vq_diffusion import VQDiffusionScheduler

try:
  if not is_flax_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ..utils.dummy_flax_objects import *  # noqa F403
else:
  from .scheduling_ddim_flax import FlaxDDIMScheduler
  from .scheduling_ddpm_flax import FlaxDDPMScheduler
  from .scheduling_dpmsolver_multistep_flax import FlaxDPMSolverMultistepScheduler
  from .scheduling_karras_ve_flax import FlaxKarrasVeScheduler
  from .scheduling_lms_discrete_flax import FlaxLMSDiscreteScheduler
  from .scheduling_pndm_flax import FlaxPNDMScheduler
  from .scheduling_sde_ve_flax import FlaxScoreSdeVeScheduler
  from .scheduling_utils_flax import (
      FlaxKarrasDiffusionSchedulers,
      FlaxSchedulerMixin,
      FlaxSchedulerOutput,
      broadcast_to_shape_from_left,
  )


try:
  if not (is_torch_available() and is_scipy_available()):
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ..utils.dummy_torch_and_scipy_objects import *  # noqa F403
else:
  from .scheduling_lms_discrete import LMSDiscreteScheduler

try:
  if not (is_torch_available() and is_torchsde_available()):
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ..utils.dummy_torch_and_torchsde_objects import *  # noqa F403
else:
  from .scheduling_dpmsolver_sde import DPMSolverSDEScheduler
