code: 
  
  
  
  
  """simple docstring"""
  
  
  
  
  from typing import Any, Callable, Dict, List, Optional, Union
  
  import PIL.Image
  import torch
  from transformers import CLIPImageProcessor, CLIPTextModel, CLIPTokenizer
  
  from diffusers import (
      AutoencoderKL,
      DDIMScheduler,
      DiffusionPipeline,
      LMSDiscreteScheduler,
      PNDMScheduler,
      StableDiffusionImgaImgPipeline,
      StableDiffusionInpaintPipelineLegacy,
      StableDiffusionPipeline,
      UNetaDConditionModel,
  )
  from diffusers.configuration_utils import FrozenDict
  from diffusers.pipelines.stable_diffusion.safety_checker import StableDiffusionSafetyChecker
  from diffusers.utils import deprecate, logging
  
  
  __A :		Dict      							=    logging.get_logger(__name__)  # pylint: disable=invalid-name
  class 							lowerCamelCase		( _UpperCAmelCase				):
     lowercase       :  Any      =				['safety_checker', 'feature_extractor']
  
  
  
  
  
  
  
     def __init__(							self    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ = True    ,      ):
         super().__init__()
         if hasattr(scheduler.config    ,      """steps_offset""" ) and scheduler.config.steps_offset != 1:
             UpperCamelCase				:   str          =							(
                 f'The configuration file of this scheduler: {scheduler} is outdated. `steps_offset`'
                 f' should be set to 1 instead of {scheduler.config.steps_offset}. Please make sure '
                 """to update the config accordingly as leaving `steps_offset` might led to incorrect results"""
                 """ in future versions. If you have downloaded this checkpoint from the Hugging Face Hub,"""
                 """ it would be very nice if you could open a Pull request for the `scheduler/scheduler_config.json`"""
                 """ file"""
             )
             deprecate("""steps_offset!=1"""    ,      """1.0.0"""    ,      SCREAMING_SNAKE_CASE_    ,      standard_warn=SCREAMING_SNAKE_CASE_ )
             UpperCamelCase				:   str          =							dict(scheduler.config )
             UpperCamelCase				:   int          =							1
             UpperCamelCase				:   List[Any]          =							FrozenDict(SCREAMING_SNAKE_CASE_ )
  
         self.register_modules(
             vae=SCREAMING_SNAKE_CASE_    ,      text_encoder=SCREAMING_SNAKE_CASE_    ,      tokenizer=SCREAMING_SNAKE_CASE_    ,      unet=SCREAMING_SNAKE_CASE_    ,      scheduler=SCREAMING_SNAKE_CASE_    ,      safety_checker=SCREAMING_SNAKE_CASE_    ,      feature_extractor=SCREAMING_SNAKE_CASE_    ,      )
         self.register_to_config(requires_safety_checker=SCREAMING_SNAKE_CASE_ )
  
  
  
  
  
  
  
     @property
     def       a_							(							self ):
         return {k: getattr(self    ,      SCREAMING_SNAKE_CASE_ ) for k in self.config.keys() if not k.startswith("""_""" )}
  
  
  
  
  
  
  
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_ = "auto" ):
         if slice_size == "auto":
             # half the attention head size is usually a good trade-off between
             # speed and memory
             UpperCamelCase				:   Any          =							self.unet.config.attention_head_dim // 2
         self.unet.set_attention_slice(SCREAMING_SNAKE_CASE_ )
  
  
  
  
  
  
  
     def       a_							(							self ):
         self.enable_attention_slicing(SCREAMING_SNAKE_CASE_ )
  
  
  
  
  
  
  
     @torch.no_grad()
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ = 0.8    ,      SCREAMING_SNAKE_CASE_ = 50    ,      SCREAMING_SNAKE_CASE_ = 7.5    ,      SCREAMING_SNAKE_CASE_ = None    ,      SCREAMING_SNAKE_CASE_ = 1    ,      SCREAMING_SNAKE_CASE_ = 0.0    ,      SCREAMING_SNAKE_CASE_ = None    ,      SCREAMING_SNAKE_CASE_ = "pil"    ,      SCREAMING_SNAKE_CASE_ = True    ,      SCREAMING_SNAKE_CASE_ = None    ,      SCREAMING_SNAKE_CASE_ = 1    ,      ):
         # For more information on how this function works, please see: https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion#diffusers.StableDiffusionImg2ImgPipeline
         return StableDiffusionInpaintPipelineLegacy(**self.components )(
             prompt=SCREAMING_SNAKE_CASE_    ,      image=SCREAMING_SNAKE_CASE_    ,      mask_image=SCREAMING_SNAKE_CASE_    ,      strength=SCREAMING_SNAKE_CASE_    ,      num_inference_steps=SCREAMING_SNAKE_CASE_    ,      guidance_scale=SCREAMING_SNAKE_CASE_    ,      negative_prompt=SCREAMING_SNAKE_CASE_    ,      num_images_per_prompt=SCREAMING_SNAKE_CASE_    ,      eta=SCREAMING_SNAKE_CASE_    ,      generator=SCREAMING_SNAKE_CASE_    ,      output_type=SCREAMING_SNAKE_CASE_    ,      return_dict=SCREAMING_SNAKE_CASE_    ,      callback=SCREAMING_SNAKE_CASE_    ,      )
  
  
  
  
  
  
  
     @torch.no_grad()
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ = 0.8    ,      SCREAMING_SNAKE_CASE_ = 50    ,      SCREAMING_SNAKE_CASE_ = 7.5    ,      SCREAMING_SNAKE_CASE_ = None    ,      SCREAMING_SNAKE_CASE_ = 1    ,      SCREAMING_SNAKE_CASE_ = 0.0    ,      SCREAMING_SNAKE_CASE_ = None    ,      SCREAMING_SNAKE_CASE_ = "pil"    ,      SCREAMING_SNAKE_CASE_ = True    ,      SCREAMING_SNAKE_CASE_ = None    ,      SCREAMING_SNAKE_CASE_ = 1    ,      **SCREAMING_SNAKE_CASE_    ,      ):
         # For more information on how this function works, please see: https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion#diffusers.StableDiffusionImg2ImgPipeline
         return StableDiffusionImgaImgPipeline(**self.components )(
             prompt=SCREAMING_SNAKE_CASE_    ,      image=SCREAMING_SNAKE_CASE_    ,      strength=SCREAMING_SNAKE_CASE_    ,      num_inference_steps=SCREAMING_SNAKE_CASE_    ,      guidance_scale=SCREAMING_SNAKE_CASE_    ,      negative_prompt=SCREAMING_SNAKE_CASE_    ,      num_images_per_prompt=SCREAMING_SNAKE_CASE_    ,      eta=SCREAMING_SNAKE_CASE_    ,      generator=SCREAMING_SNAKE_CASE_    ,      output_type=SCREAMING_SNAKE_CASE_    ,      return_dict=SCREAMING_SNAKE_CASE_    ,      callback=SCREAMING_SNAKE_CASE_    ,      callback_steps=SCREAMING_SNAKE_CASE_    ,      )
  
  
  
  
  
  
  
     @torch.no_grad()
     def       a_							(							self    ,      SCREAMING_SNAKE_CASE_    ,      SCREAMING_SNAKE_CASE_ = 512    ,      SCREAMING_SNAKE_CASE_ = 512    ,      SCREAMING_SNAKE_CASE_ = 50    ,      SCREAMING_SNAKE_CASE_ = 7.5    ,      SCREAMING_SNAKE_CASE_ = None    ,      SCREAMING_SNAKE_CASE_ = 1    ,      SCREAMING_SNAKE_CASE_ = 0.0    ,      SCREAMING_SNAKE_CASE_ = None    ,      SCREAMING_SNAKE_CASE_ = None    ,      SCREAMING_SNAKE_CASE_ = "pil"    ,      SCREAMING_SNAKE_CASE_ = True    ,      SCREAMING_SNAKE_CASE_ = None    ,      SCREAMING_SNAKE_CASE_ = 1    ,      ):
         # For more information on how this function https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion#diffusers.StableDiffusionPipeline
         return StableDiffusionPipeline(**self.components )(
             prompt=SCREAMING_SNAKE_CASE_    ,      height=SCREAMING_SNAKE_CASE_    ,      width=SCREAMING_SNAKE_CASE_    ,      num_inference_steps=SCREAMING_SNAKE_CASE_    ,      guidance_scale=SCREAMING_SNAKE_CASE_    ,      negative_prompt=SCREAMING_SNAKE_CASE_    ,      num_images_per_prompt=SCREAMING_SNAKE_CASE_    ,      eta=SCREAMING_SNAKE_CASE_    ,      generator=SCREAMING_SNAKE_CASE_    ,      latents=SCREAMING_SNAKE_CASE_    ,      output_type=SCREAMING_SNAKE_CASE_    ,      return_dict=SCREAMING_SNAKE_CASE_    ,      callback=SCREAMING_SNAKE_CASE_    ,      callback_steps=SCREAMING_SNAKE_CASE_    ,      )
  
  
  
  
  
style_context: 
  
  
  
  
  """simple docstring"""
  
  
  
  
  from ...utils import is_transformers_available
  from .pipeline_latent_diffusion_superresolution import LDMSuperResolutionPipeline
  
  
  if is_transformers_available():
    from .pipeline_latent_diffusion import LDMBertModel, LDMTextToImagePipeline
  
  
  
  
  