


"""simple docstring"""



import time
import unittest

from transformers import is_torch_available
from transformers.testing_utils import require_torch, torch_device

from ..test_modeling_common import ids_tensor


if is_torch_available():
  import torch

  from transformers.generation import (
      MaxLengthCriteria,
      MaxNewTokensCriteria,
      MaxTimeCriteria,
      StoppingCriteriaList,
      validate_stopping_criteria,
  )







@require_torch
class _lowerCAmelCase    (				unittest.TestCase     ):







   def 			lowerCamelCase		(     self						,     UpperCamelCase__						)     ->		List[Any]:

       '''simple docstring'''




       snake_case   :				Tuple				 =   3
       snake_case   :				List[Any]				 =   250

       snake_case   :				str				 =   ids_tensor((batch_size, length)						,     UpperCamelCase__						)
       snake_case   :				str				 =   torch.ones((batch_size, length)						,     device=UpperCamelCase__						,     dtype=torch.float						) / length
       return input_ids, scores







   def 			lowerCamelCase		(     self						)     ->		Union[str, Any]:

       '''simple docstring'''




       snake_case ,snake_case   :				Optional[int]				 =   self._get_tensors(5						)

       snake_case   :				int				 =   StoppingCriteriaList(
           [
               MaxLengthCriteria(max_length=10						),
               MaxTimeCriteria(max_time=0.1						),
           ]						)

       self.assertFalse(criteria(UpperCamelCase__						,     UpperCamelCase__						)						)

       snake_case ,snake_case   :				Optional[int]				 =   self._get_tensors(9						)
       self.assertFalse(criteria(UpperCamelCase__						,     UpperCamelCase__						)						)

       snake_case ,snake_case   :				Any				 =   self._get_tensors(10						)
       self.assertTrue(criteria(UpperCamelCase__						,     UpperCamelCase__						)						)







   def 			lowerCamelCase		(     self						)     ->		Dict:

       '''simple docstring'''




       snake_case   :				int				 =   MaxLengthCriteria(max_length=10						)

       snake_case ,snake_case   :				Union[str, Any]				 =   self._get_tensors(5						)
       self.assertFalse(criteria(UpperCamelCase__						,     UpperCamelCase__						)						)

       snake_case ,snake_case   :				Optional[int]				 =   self._get_tensors(9						)
       self.assertFalse(criteria(UpperCamelCase__						,     UpperCamelCase__						)						)

       snake_case ,snake_case   :				Optional[int]				 =   self._get_tensors(10						)
       self.assertTrue(criteria(UpperCamelCase__						,     UpperCamelCase__						)						)







   def 			lowerCamelCase		(     self						)     ->		Union[str, Any]:

       '''simple docstring'''




       snake_case   :				Optional[Any]				 =   MaxNewTokensCriteria(start_length=5						,     max_new_tokens=5						)

       snake_case ,snake_case   :				Tuple				 =   self._get_tensors(5						)
       self.assertFalse(criteria(UpperCamelCase__						,     UpperCamelCase__						)						)

       snake_case ,snake_case   :				str				 =   self._get_tensors(9						)
       self.assertFalse(criteria(UpperCamelCase__						,     UpperCamelCase__						)						)

       snake_case ,snake_case   :				List[Any]				 =   self._get_tensors(10						)
       self.assertTrue(criteria(UpperCamelCase__						,     UpperCamelCase__						)						)

       snake_case   :				Union[str, Any]				 =   StoppingCriteriaList([criteria]						)
       self.assertEqual(criteria_list.max_length						,     10						)







   def 			lowerCamelCase		(     self						)     ->		Union[str, Any]:

       '''simple docstring'''




       snake_case ,snake_case   :				Optional[Any]				 =   self._get_tensors(5						)

       snake_case   :				Tuple				 =   MaxTimeCriteria(max_time=0.1						)
       self.assertFalse(criteria(UpperCamelCase__						,     UpperCamelCase__						)						)

       snake_case   :				Dict				 =   MaxTimeCriteria(max_time=0.1						,     initial_timestamp=time.time() - 0.2						)
       self.assertTrue(criteria(UpperCamelCase__						,     UpperCamelCase__						)						)







   def 			lowerCamelCase		(     self						)     ->		Union[str, Any]:

       '''simple docstring'''




       validate_stopping_criteria(StoppingCriteriaList([MaxLengthCriteria(10						)]						)						,     10						)

       with self.assertWarns(UpperCamelCase__						):
           validate_stopping_criteria(StoppingCriteriaList([MaxLengthCriteria(10						)]						)						,     11						)

       snake_case   :				int				 =   validate_stopping_criteria(StoppingCriteriaList()						,     11						)

       self.assertEqual(len(UpperCamelCase__						)						,     1						)









"""simple docstring"""



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

import numpy as np
import PIL
from PIL import Image

from ...utils import (
    BaseOutput,
    OptionalDependencyNotAvailable,
    is_flax_available,
    is_k_diffusion_available,
    is_k_diffusion_version,
    is_onnx_available,
    is_torch_available,
    is_transformers_available,
    is_transformers_version,
)







@dataclass
class _lowerCAmelCase    (				snake_case_     ):
   __UpperCAmelCase			:	Union[List[PIL.Image.Image], np.ndarray]
   __UpperCAmelCase			:	Optional[List[bool]]


try:
  if not (is_transformers_available() and is_torch_available()):
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ...utils.dummy_torch_and_transformers_objects import *  # noqa F403
else:
  from .pipeline_cycle_diffusion import CycleDiffusionPipeline
  from .pipeline_stable_diffusion import StableDiffusionPipeline
  from .pipeline_stable_diffusion_attend_and_excite import StableDiffusionAttendAndExcitePipeline
  from .pipeline_stable_diffusion_imgaimg import StableDiffusionImgaImgPipeline
  from .pipeline_stable_diffusion_inpaint import StableDiffusionInpaintPipeline
  from .pipeline_stable_diffusion_inpaint_legacy import StableDiffusionInpaintPipelineLegacy
  from .pipeline_stable_diffusion_instruct_pixapix import StableDiffusionInstructPixaPixPipeline
  from .pipeline_stable_diffusion_latent_upscale import StableDiffusionLatentUpscalePipeline
  from .pipeline_stable_diffusion_ldmad import StableDiffusionLDMaDPipeline
  from .pipeline_stable_diffusion_model_editing import StableDiffusionModelEditingPipeline
  from .pipeline_stable_diffusion_panorama import StableDiffusionPanoramaPipeline
  from .pipeline_stable_diffusion_paradigms import StableDiffusionParadigmsPipeline
  from .pipeline_stable_diffusion_sag import StableDiffusionSAGPipeline
  from .pipeline_stable_diffusion_upscale import StableDiffusionUpscalePipeline
  from .pipeline_stable_unclip import StableUnCLIPPipeline
  from .pipeline_stable_unclip_imgaimg import StableUnCLIPImgaImgPipeline
  from .safety_checker import StableDiffusionSafetyChecker
  from .stable_unclip_image_normalizer import StableUnCLIPImageNormalizer

try:
  if not (is_transformers_available() and is_torch_available() and is_transformers_version(""">=""", """4.25.0""")):
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ...utils.dummy_torch_and_transformers_objects import StableDiffusionImageVariationPipeline
else:
  from .pipeline_stable_diffusion_image_variation import StableDiffusionImageVariationPipeline


try:
  if not (is_transformers_available() and is_torch_available() and is_transformers_version(""">=""", """4.26.0""")):
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ...utils.dummy_torch_and_transformers_objects import (
      StableDiffusionDepthaImgPipeline,
      StableDiffusionDiffEditPipeline,
      StableDiffusionPixaPixZeroPipeline,
  )
else:
  from .pipeline_stable_diffusion_depthaimg import StableDiffusionDepthaImgPipeline
  from .pipeline_stable_diffusion_diffedit import StableDiffusionDiffEditPipeline
  from .pipeline_stable_diffusion_pixapix_zero import StableDiffusionPixaPixZeroPipeline


try:
  if not (
      is_torch_available()
      and is_transformers_available()
      and is_k_diffusion_available()
      and is_k_diffusion_version(""">=""", """0.0.12""")
  ):
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ...utils.dummy_torch_and_transformers_and_k_diffusion_objects import *  # noqa F403
else:
  from .pipeline_stable_diffusion_k_diffusion import StableDiffusionKDiffusionPipeline

try:
  if not (is_transformers_available() and is_onnx_available()):
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  from ...utils.dummy_onnx_objects import *  # noqa F403
else:
  from .pipeline_onnx_stable_diffusion import OnnxStableDiffusionPipeline, StableDiffusionOnnxPipeline
  from .pipeline_onnx_stable_diffusion_imgaimg import OnnxStableDiffusionImgaImgPipeline
  from .pipeline_onnx_stable_diffusion_inpaint import OnnxStableDiffusionInpaintPipeline
  from .pipeline_onnx_stable_diffusion_inpaint_legacy import OnnxStableDiffusionInpaintPipelineLegacy
  from .pipeline_onnx_stable_diffusion_upscale import OnnxStableDiffusionUpscalePipeline

if is_transformers_available() and is_flax_available():
  import flax







  @flax.struct.dataclass
  class _lowerCAmelCase    (				snake_case_     ):
     __UpperCAmelCase			:	np.ndarray
     __UpperCAmelCase			:	List[bool]



  from ...schedulers.scheduling_pndm_flax import PNDMSchedulerState
  from .pipeline_flax_stable_diffusion import FlaxStableDiffusionPipeline
  from .pipeline_flax_stable_diffusion_imgaimg import FlaxStableDiffusionImgaImgPipeline
  from .pipeline_flax_stable_diffusion_inpaint import FlaxStableDiffusionInpaintPipeline
  from .safety_checker_flax import FlaxStableDiffusionSafetyChecker





