


'''simple docstring'''






from typing import Any, Callable, Dict, List, Optional, Union

import torch
from transformers import CLIPImageProcessor, CLIPTextModel, CLIPTokenizer

from diffusers import (
    AutoencoderKL,
    DDIMScheduler,
    DiffusionPipeline,
    LMSDiscreteScheduler,
    PNDMScheduler,
    StableDiffusionPipeline,
    UNetaDConditionModel,
)
from diffusers.pipelines.stable_diffusion import StableDiffusionPipelineOutput
from diffusers.pipelines.stable_diffusion.safety_checker import StableDiffusionSafetyChecker


a_   :      List[Any]				    =      "CompVis/stable-diffusion-v1-1"
a_   :      Optional[Any]				    =      "CompVis/stable-diffusion-v1-2"
a_   :      List[Any]				    =      "CompVis/stable-diffusion-v1-3"
a_   :      Tuple				    =      "CompVis/stable-diffusion-v1-4"




class 	a       (       _SCREAMING_SNAKE_CASE    ):
 def __init__(	self ,			__magic_name__ ,			__magic_name__ ,			__magic_name__ ,			__magic_name__ ,			__magic_name__ ,			__magic_name__ ,			__magic_name__ ,			__magic_name__ = True ,			)   ->							Optional[Any]:
      super()._init_()

      _a      =							StableDiffusionPipeline.from_pretrained(__magic_name__  )
      _a      =							StableDiffusionPipeline.from_pretrained(__magic_name__  )
      _a      =							StableDiffusionPipeline.from_pretrained(__magic_name__  )
      _a      =							StableDiffusionPipeline(
          vae=__magic_name__ ,			text_encoder=__magic_name__ ,			tokenizer=__magic_name__ ,			unet=__magic_name__ ,			scheduler=__magic_name__ ,			safety_checker=__magic_name__ ,			feature_extractor=__magic_name__ ,			requires_safety_checker=__magic_name__ ,			)

      self.register_modules(pipelinea=self.pipea ,			pipelinea=self.pipea ,			pipelinea=self.pipea ,			pipelinea=self.pipea  )
 @property
 def 							__UpperCAmelCase						(	self  )   ->							Dict[str, Any]:
      return {k: getattr(self ,			__magic_name__  ) for k in self.config.keys() if not k.startswith('_'  )}
 def 							__UpperCAmelCase						(	self ,			__magic_name__ = "auto"  )   ->							Any:
      if slice_size == "auto":
           # half the attention head size is usually a good trade-off between
           # speed and memory
           _a      =							self.unet.config.attention_head_dim // 2
      self.unet.set_attention_slice(__magic_name__  )
 def 							__UpperCAmelCase						(	self  )   ->							Optional[Any]:
      self.enable_attention_slicing(__magic_name__  )
 @torch.no_grad()
 def 							__UpperCAmelCase						(	self ,			__magic_name__ ,			__magic_name__ = 5_12 ,			__magic_name__ = 5_12 ,			__magic_name__ = 50 ,			__magic_name__ = 7.5 ,			__magic_name__ = None ,			__magic_name__ = 1 ,			__magic_name__ = 0.0 ,			__magic_name__ = None ,			__magic_name__ = None ,			__magic_name__ = "pil" ,			__magic_name__ = True ,			__magic_name__ = None ,			__magic_name__ = 1 ,			**__magic_name__ ,			)   ->							Dict:
      return self.pipea(
          prompt=__magic_name__ ,			height=__magic_name__ ,			width=__magic_name__ ,			num_inference_steps=__magic_name__ ,			guidance_scale=__magic_name__ ,			negative_prompt=__magic_name__ ,			num_images_per_prompt=__magic_name__ ,			eta=__magic_name__ ,			generator=__magic_name__ ,			latents=__magic_name__ ,			output_type=__magic_name__ ,			return_dict=__magic_name__ ,			callback=__magic_name__ ,			callback_steps=__magic_name__ ,			**__magic_name__ ,			)
 @torch.no_grad()
 def 							__UpperCAmelCase						(	self ,			__magic_name__ ,			__magic_name__ = 5_12 ,			__magic_name__ = 5_12 ,			__magic_name__ = 50 ,			__magic_name__ = 7.5 ,			__magic_name__ = None ,			__magic_name__ = 1 ,			__magic_name__ = 0.0 ,			__magic_name__ = None ,			__magic_name__ = None ,			__magic_name__ = "pil" ,			__magic_name__ = True ,			__magic_name__ = None ,			__magic_name__ = 1 ,			**__magic_name__ ,			)   ->							Optional[int]:
      return self.pipea(
          prompt=__magic_name__ ,			height=__magic_name__ ,			width=__magic_name__ ,			num_inference_steps=__magic_name__ ,			guidance_scale=__magic_name__ ,			negative_prompt=__magic_name__ ,			num_images_per_prompt=__magic_name__ ,			eta=__magic_name__ ,			generator=__magic_name__ ,			latents=__magic_name__ ,			output_type=__magic_name__ ,			return_dict=__magic_name__ ,			callback=__magic_name__ ,			callback_steps=__magic_name__ ,			**__magic_name__ ,			)
 @torch.no_grad()
 def 							__UpperCAmelCase						(	self ,			__magic_name__ ,			__magic_name__ = 5_12 ,			__magic_name__ = 5_12 ,			__magic_name__ = 50 ,			__magic_name__ = 7.5 ,			__magic_name__ = None ,			__magic_name__ = 1 ,			__magic_name__ = 0.0 ,			__magic_name__ = None ,			__magic_name__ = None ,			__magic_name__ = "pil" ,			__magic_name__ = True ,			__magic_name__ = None ,			__magic_name__ = 1 ,			**__magic_name__ ,			)   ->							Dict:
      return self.pipea(
          prompt=__magic_name__ ,			height=__magic_name__ ,			width=__magic_name__ ,			num_inference_steps=__magic_name__ ,			guidance_scale=__magic_name__ ,			negative_prompt=__magic_name__ ,			num_images_per_prompt=__magic_name__ ,			eta=__magic_name__ ,			generator=__magic_name__ ,			latents=__magic_name__ ,			output_type=__magic_name__ ,			return_dict=__magic_name__ ,			callback=__magic_name__ ,			callback_steps=__magic_name__ ,			**__magic_name__ ,			)
 @torch.no_grad()
 def 							__UpperCAmelCase						(	self ,			__magic_name__ ,			__magic_name__ = 5_12 ,			__magic_name__ = 5_12 ,			__magic_name__ = 50 ,			__magic_name__ = 7.5 ,			__magic_name__ = None ,			__magic_name__ = 1 ,			__magic_name__ = 0.0 ,			__magic_name__ = None ,			__magic_name__ = None ,			__magic_name__ = "pil" ,			__magic_name__ = True ,			__magic_name__ = None ,			__magic_name__ = 1 ,			**__magic_name__ ,			)   ->							Optional[Any]:
      return self.pipea(
          prompt=__magic_name__ ,			height=__magic_name__ ,			width=__magic_name__ ,			num_inference_steps=__magic_name__ ,			guidance_scale=__magic_name__ ,			negative_prompt=__magic_name__ ,			num_images_per_prompt=__magic_name__ ,			eta=__magic_name__ ,			generator=__magic_name__ ,			latents=__magic_name__ ,			output_type=__magic_name__ ,			return_dict=__magic_name__ ,			callback=__magic_name__ ,			callback_steps=__magic_name__ ,			**__magic_name__ ,			)




 @torch.no_grad()
 def 							__UpperCAmelCase						(	self ,			__magic_name__ ,			__magic_name__ = 5_12 ,			__magic_name__ = 5_12 ,			__magic_name__ = 50 ,			__magic_name__ = 7.5 ,			__magic_name__ = None ,			__magic_name__ = 1 ,			__magic_name__ = 0.0 ,			__magic_name__ = None ,			__magic_name__ = None ,			__magic_name__ = "pil" ,			__magic_name__ = True ,			__magic_name__ = None ,			__magic_name__ = 1 ,			**__magic_name__ ,			)   ->							str:
      _a      =							'cuda' if torch.cuda.is_available() else 'cpu'
      self.to(__magic_name__  )

      # Checks if the height and width are divisible by 8 or not
      if height % 8 != 0 or width % 8 != 0:
           raise ValueError(f'`height` and `width` must be divisible by 8 but are {height} and {width}.'  )

      # Get first result from Stable Diffusion Checkpoint v1.1
      _a      =							self.textaimg_sda_a(
          prompt=__magic_name__ ,			height=__magic_name__ ,			width=__magic_name__ ,			num_inference_steps=__magic_name__ ,			guidance_scale=__magic_name__ ,			negative_prompt=__magic_name__ ,			num_images_per_prompt=__magic_name__ ,			eta=__magic_name__ ,			generator=__magic_name__ ,			latents=__magic_name__ ,			output_type=__magic_name__ ,			return_dict=__magic_name__ ,			callback=__magic_name__ ,			callback_steps=__magic_name__ ,			**__magic_name__ ,			)

      # Get first result from Stable Diffusion Checkpoint v1.2
      _a      =							self.textaimg_sda_a(
          prompt=__magic_name__ ,			height=__magic_name__ ,			width=__magic_name__ ,			num_inference_steps=__magic_name__ ,			guidance_scale=__magic_name__ ,			negative_prompt=__magic_name__ ,			num_images_per_prompt=__magic_name__ ,			eta=__magic_name__ ,			generator=__magic_name__ ,			latents=__magic_name__ ,			output_type=__magic_name__ ,			return_dict=__magic_name__ ,			callback=__magic_name__ ,			callback_steps=__magic_name__ ,			**__magic_name__ ,			)

      # Get first result from Stable Diffusion Checkpoint v1.3
      _a      =							self.textaimg_sda_a(
          prompt=__magic_name__ ,			height=__magic_name__ ,			width=__magic_name__ ,			num_inference_steps=__magic_name__ ,			guidance_scale=__magic_name__ ,			negative_prompt=__magic_name__ ,			num_images_per_prompt=__magic_name__ ,			eta=__magic_name__ ,			generator=__magic_name__ ,			latents=__magic_name__ ,			output_type=__magic_name__ ,			return_dict=__magic_name__ ,			callback=__magic_name__ ,			callback_steps=__magic_name__ ,			**__magic_name__ ,			)

      # Get first result from Stable Diffusion Checkpoint v1.4
      _a      =							self.textaimg_sda_a(
          prompt=__magic_name__ ,			height=__magic_name__ ,			width=__magic_name__ ,			num_inference_steps=__magic_name__ ,			guidance_scale=__magic_name__ ,			negative_prompt=__magic_name__ ,			num_images_per_prompt=__magic_name__ ,			eta=__magic_name__ ,			generator=__magic_name__ ,			latents=__magic_name__ ,			output_type=__magic_name__ ,			return_dict=__magic_name__ ,			callback=__magic_name__ ,			callback_steps=__magic_name__ ,			**__magic_name__ ,			)

      # Get all result images into a single list and pass it via StableDiffusionPipelineOutput for final result
      return StableDiffusionPipelineOutput([resa[0], resa[0], resa[0], resa[0]]  )





'''simple docstring'''






import copy
import os
from typing import Union

from ...configuration_utils import PretrainedConfig
from ...utils import logging


a_   :      List[str]				    =      logging.get_logger(__name__)

a_   :      str				    =      {
    "microsoft/git-base": "https://huggingface.co/microsoft/git-base/resolve/main/config.json",
}




class 	a       (       _SCREAMING_SNAKE_CASE    ):
 _lowerCAmelCase	   =		"""git_vision_model"""
 def __init__(	self ,			__magic_name__=7_68 ,			__magic_name__=30_72 ,			__magic_name__=12 ,			__magic_name__=12 ,			__magic_name__=3 ,			__magic_name__=2_24 ,			__magic_name__=16 ,			__magic_name__="quick_gelu" ,			__magic_name__=1e-5 ,			__magic_name__=0.0 ,			__magic_name__=0.0_2 ,			**__magic_name__ ,			)   ->							Union[str, Any]:
      super().__init__(**__magic_name__  )

      _a      =							hidden_size
      _a      =							intermediate_size
      _a      =							num_hidden_layers
      _a      =							num_attention_heads
      _a      =							num_channels
      _a      =							patch_size
      _a      =							image_size
      _a      =							initializer_range
      _a      =							attention_dropout
      _a      =							layer_norm_eps
      _a      =							hidden_act




 @classmethod
 def 							__UpperCAmelCase						(	cls ,			__magic_name__ ,			**__magic_name__  )   ->							"PretrainedConfig":
      cls._set_token_in_kwargs(__magic_name__  )

      _a ,				_a      =							cls.get_config_dict(__magic_name__ ,			**__magic_name__  )

      # get the vision config dict if we are loading from GITConfig
      if config_dict.get('model_type'  ) == "git":
           _a      =							config_dict['vision_config']

      if "model_type" in config_dict and hasattr(cls ,			'model_type'  ) and config_dict["model_type"] != cls.model_type:
           logger.warning(
               f'You are using a model of type {config_dict["model_type"]} to instantiate a model of type '
               f'{cls.model_type}. This is not supported for all configurations of models and can yield errors.'  )

      return cls.from_dict(__magic_name__ ,			**__magic_name__  )





class 	a       (       _SCREAMING_SNAKE_CASE    ):
 _lowerCAmelCase	   =		"""git"""
 def __init__(	self ,			__magic_name__=None ,			__magic_name__=3_05_22 ,			__magic_name__=7_68 ,			__magic_name__=6 ,			__magic_name__=12 ,			__magic_name__=30_72 ,			__magic_name__="gelu" ,			__magic_name__=0.1 ,			__magic_name__=0.1 ,			__magic_name__=10_24 ,			__magic_name__=0.0_2 ,			__magic_name__=1e-12 ,			__magic_name__=0 ,			__magic_name__="absolute" ,			__magic_name__=True ,			__magic_name__=False ,			__magic_name__=1_01 ,			__magic_name__=1_02 ,			__magic_name__=None ,			**__magic_name__ ,			)   ->							Optional[int]:
      super().__init__(bos_token_id=__magic_name__ ,			eos_token_id=__magic_name__ ,			pad_token_id=__magic_name__ ,			**__magic_name__  )

      if vision_config is None:
           _a      =							{}
           logger.info('vision_config is None. initializing the GitVisionConfig with default values.'  )

      _a      =							GitVisionConfig(**__magic_name__  )
      _a      =							vocab_size
      _a      =							hidden_size
      _a      =							num_hidden_layers
      _a      =							num_attention_heads
      _a      =							hidden_act
      _a      =							intermediate_size
      _a      =							hidden_dropout_prob
      _a      =							attention_probs_dropout_prob
      _a      =							max_position_embeddings
      _a      =							initializer_range
      _a      =							layer_norm_eps
      _a      =							position_embedding_type
      _a      =							use_cache
      _a      =							tie_word_embeddings
      _a      =							num_image_with_embedding

      _a      =							bos_token_id
      _a      =							eos_token_id




 def 							__UpperCAmelCase						(	self  )   ->							List[str]:
      _a      =							copy.deepcopy(self.__dict__  )
      _a      =							self.vision_config.to_dict()
      _a      =							self.__class__.model_type
      return output

