from dataclasses import dataclass
from enum import Enum
from typing import List, Optional, Union

import numpy as np
import PIL
from PIL import Image

from ...utils import BaseOutput, is_torch_available, is_transformers_available







@dataclass
class        UpperCAmelCase_					(				_a     ):
    UpperCAmelCase_      :							int    			=				{
        'sld_warmup_steps': 15,
        'sld_guidance_scale': 20,
        'sld_threshold': 0.0,
        'sld_momentum_scale': 0.0,
        'sld_mom_beta': 0.0,
    }
    UpperCAmelCase_      :							Optional[int]    			=				{
        'sld_warmup_steps': 10,
        'sld_guidance_scale': 1000,
        'sld_threshold': 0.01,
        'sld_momentum_scale': 0.3,
        'sld_mom_beta': 0.4,
    }
    UpperCAmelCase_      :							int    			=				{
        'sld_warmup_steps': 7,
        'sld_guidance_scale': 2000,
        'sld_threshold': 0.0_25,
        'sld_momentum_scale': 0.5,
        'sld_mom_beta': 0.7,
    }
    UpperCAmelCase_      :							Dict    			=				{
        'sld_warmup_steps': 0,
        'sld_guidance_scale': 5000,
        'sld_threshold': 1.0,
        'sld_momentum_scale': 0.5,
        'sld_mom_beta': 0.7,
    }







@dataclass
class        UpperCAmelCase_					(				_a     ):
    UpperCAmelCase_      :							Union[List[PIL.Image.Image], np.ndarray]
    UpperCAmelCase_      :							Optional[List[bool]]
    UpperCAmelCase_      :							Optional[Union[List[PIL.Image.Image], np.ndarray]]
    UpperCAmelCase_      :							Optional[str]


if is_transformers_available() and is_torch_available():
     from .pipeline_stable_diffusion_safe import StableDiffusionPipelineSafe
     from .safety_checker import SafeStableDiffusionSafetyChecker


def 					__lowercase						(    lowerCamelCase__       )					->int:

  '''simple docstring'''




  if not isinstance(lowerCamelCase__			,					lowerCamelCase__       ):
    raise ValueError("double_factorial() only accepts integral values"       )
  if n < 0:
    raise ValueError("double_factorial() not defined for negative values"       )
  return 1 if n <= 1 else n * double_factorial(n - 2       )


if __name__ == "__main__":
     import doctest

     doctest.testmod()

