class_docstr: Pipeline for text-to-image generation using Stable Diffusion augmented with T2I-Adapter
  https://arxiv.org/abs/2302.08453
  
  This model inherits from [`DiffusionPipeline`]. Check the superclass documentation for the generic methods the
  library implements for all the pipelines (such as downloading or saving, running on a particular device, etc.)
  
  Args:
      adapter ([`T2IAdapter`] or [`MultiAdapter`] or `List[T2IAdapter]`):
          Provides additional conditioning to the unet during the denoising process. If you set multiple Adapter as a
          list, the outputs from each Adapter are added together to create one combined additional conditioning.
      adapter_weights (`List[float]`, *optional*, defaults to None):
          List of floats representing the weight which will be multiply to each adapter's output before adding them
          together.
      vae ([`AutoencoderKL`]):
          Variational Auto-Encoder (VAE) Model to encode and decode images to and from latent representations.
      text_encoder ([`CLIPTextModel`]):
          Frozen text-encoder. Stable Diffusion uses the text portion of
          [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel), specifically
          the [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14) variant.
      tokenizer (`CLIPTokenizer`):
          Tokenizer of class
          [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer).
      unet ([`UNet2DConditionModel`]): Conditional U-Net architecture to denoise the encoded image latents.
      scheduler ([`SchedulerMixin`]):
          A scheduler to be used in combination with `unet` to denoise the encoded image latents. Can be one of
          [`DDIMScheduler`], [`LMSDiscreteScheduler`], or [`PNDMScheduler`].
      safety_checker ([`StableDiffusionSafetyChecker`]):
          Classification module that estimates whether generated images could be considered offensive or harmful.
          Please, refer to the [model card](https://huggingface.co/runwayml/stable-diffusion-v1-5) for details.
      feature_extractor ([`CLIPFeatureExtractor`]):
          Model that extracts features from generated images to be used as inputs for the `safety_checker`.
      requires_aesthetics_score (`bool`, *optional*, defaults to `"False"`):
          Whether the `unet` requires a aesthetic_score condition to be passed during inference. Also see the config
          of `stabilityai/stable-diffusion-xl-refiner-1-0`.
      force_zeros_for_empty_prompt (`bool`, *optional*, defaults to `"True"`):
          Whether the negative prompt embeddings shall be forced to always be set to 0. Also see the config of
          `stabilityai/stable-diffusion-xl-base-1-0`.
class_docstr_tok: ["Pipeline","for","text-to-image","generation","using","Stable","Diffusion","augmented","with","T2I-Adapter","https",":","\/\/arxiv.org\/abs\/2302.08453","This","model","inherits","from","[","`","DiffusionPipeline","`","]",".","Check","the","superclass","documentation","for","the","generic","methods","the","library","implements","for","all","the","pipelines","(","such","as","downloading","or","saving",",","running","on","a","particular","device",",","etc",".",")","Args",":","adapter","(","[","`","T2IAdapter","`","]","or","[","`","MultiAdapter","`","]","or","`","List","[","T2IAdapter","]","`",")",":","Provides","additional","conditioning","to","the","unet","during","the","denoising","process",".","If","you","set","multiple","Adapter","as","a","list",",","the","outputs","from","each","Adapter","are","added","together","to","create","one","combined","additional","conditioning",".","adapter_weights","(","`","List","[","float","]","`",",","*","optional","*",",","defaults","to","None",")",":","List","of","floats","representing","the","weight","which","will","be","multiply","to","each","adapter","'s","output","before","adding","them","together",".","vae","(","[","`","AutoencoderKL","`","]",")",":","Variational","Auto-Encoder","(","VAE",")","Model","to","encode","and","decode","images","to","and","from","latent","representations",".","text_encoder","(","[","`","CLIPTextModel","`","]",")",":","Frozen","text-encoder",".","Stable","Diffusion","uses","the","text","portion","of","[","CLIP","]","(","https",":","\/\/huggingface.co\/docs\/transformers\/model_doc\/clip","#","transformers.CLIPTextModel",")",",","specifically","the","[","clip-vit-large-patch14","]","(","https",":","\/\/huggingface.co\/openai\/clip-vit-large-patch14",")","variant",".","tokenizer","(","`","CLIPTokenizer","`",")",":","Tokenizer","of","class","[","CLIPTokenizer","]","(","https",":","\/\/huggingface.co\/docs\/transformers\/v4.21.0\/en\/model_doc\/clip","#","transformers.CLIPTokenizer",")",".","unet","(","[","`","UNet2DConditionModel","`","]",")",":","Conditional","U-Net","architecture","to","denoise","the","encoded","image","latents",".","scheduler","(","[","`","SchedulerMixin","`","]",")",":","A","scheduler","to","be","used","in","combination","with","`","unet","`","to","denoise","the","encoded","image","latents",".","Can","be","one","of","[","`","DDIMScheduler","`","]",",","[","`","LMSDiscreteScheduler","`","]",",","or","[","`","PNDMScheduler","`","]",".","safety_checker","(","[","`","StableDiffusionSafetyChecker","`","]",")",":","Classification","module","that","estimates","whether","generated","images","could","be","considered","offensive","or","harmful",".","Please",",","refer","to","the","[","model","card","]","(","https",":","\/\/huggingface.co\/runwayml\/stable-diffusion-v1-5",")","for","details",".","feature_extractor","(","[","`","CLIPFeatureExtractor","`","]",")",":","Model","that","extracts","features","from","generated","images","to","be","used","as","inputs","for","the","`","safety_checker","`",".","requires_aesthetics_score","(","`","bool","`",",","*","optional","*",",","defaults","to","`","``","False","''","`",")",":","Whether","the","`","unet","`","requires","a","aesthetic_score","condition","to","be","passed","during","inference",".","Also","see","the","config","of","`","stabilityai\/stable-diffusion-xl-refiner-1-0","`",".","force_zeros_for_empty_prompt","(","`","bool","`",",","*","optional","*",",","defaults","to","`","``","True","''","`",")",":","Whether","the","negative","prompt","embeddings","shall","be","forced","to","always","be","set","to","0",".","Also","see","the","config","of","`","stabilityai\/stable-diffusion-xl-base-1-0","`","."]
code: def check_inputs(
      self,
      prompt,
      prompt_2,
      height,
      width,
      callback_steps,
      negative_prompt=None,
      negative_prompt_2=None,
      prompt_embeds=None,
      negative_prompt_embeds=None,
      pooled_prompt_embeds=None,
      negative_pooled_prompt_embeds=None,
      callback_on_step_end_tensor_inputs=None,
  ):
      if height % 8 != 0 or width % 8 != 0:
          raise ValueError(
              f"`height` and `width` have to be divisible by 8 but are {height} and {width}."
          )
  
      if callback_steps is not None and (
          not isinstance(callback_steps, int) or callback_steps <= 0
      ):
          raise ValueError(
              f"`callback_steps` has to be a positive integer but is {callback_steps} of type"
              f" {type(callback_steps)}."
          )
  
      if callback_on_step_end_tensor_inputs is not None and not all(
          k in self._callback_tensor_inputs
          for k in callback_on_step_end_tensor_inputs
      ):
          raise ValueError(
              f"`callback_on_step_end_tensor_inputs` has to be in {self._callback_tensor_inputs}, but found {[k for k in callback_on_step_end_tensor_inputs if k not in self._callback_tensor_inputs]}"
          )
  
      if prompt is not None and prompt_embeds is not None:
          raise ValueError(
              f"Cannot forward both `prompt`: {prompt} and `prompt_embeds`: {prompt_embeds}. Please make sure to"
              " only forward one of the two."
          )
      elif prompt_2 is not None and prompt_embeds is not None:
          raise ValueError(
              f"Cannot forward both `prompt_2`: {prompt_2} and `prompt_embeds`: {prompt_embeds}. Please make sure to"
              " only forward one of the two."
          )
      elif prompt is None and prompt_embeds is None:
          raise ValueError(
              "Provide either `prompt` or `prompt_embeds`. Cannot leave both `prompt` and `prompt_embeds` undefined."
          )
      elif prompt is not None and (
          not isinstance(prompt, str) and not isinstance(prompt, list)
      ):
          raise ValueError(
              f"`prompt` has to be of type `str` or `list` but is {type(prompt)}"
          )
      elif prompt_2 is not None and (
          not isinstance(prompt_2, str)
          and not isinstance(prompt_2, list)
      ):
          raise ValueError(
              f"`prompt_2` has to be of type `str` or `list` but is {type(prompt_2)}"
          )
  
      if (
          negative_prompt is not None
          and negative_prompt_embeds is not None
      ):
          raise ValueError(
              f"Cannot forward both `negative_prompt`: {negative_prompt} and `negative_prompt_embeds`:"
              f" {negative_prompt_embeds}. Please make sure to only forward one of the two."
          )
      elif (
          negative_prompt_2 is not None
          and negative_prompt_embeds is not None
      ):
          raise ValueError(
              f"Cannot forward both `negative_prompt_2`: {negative_prompt_2} and `negative_prompt_embeds`:"
              f" {negative_prompt_embeds}. Please make sure to only forward one of the two."
          )
  
      if (
          prompt_embeds is not None
          and negative_prompt_embeds is not None
      ):
          if prompt_embeds.shape != negative_prompt_embeds.shape:
              raise ValueError(
                  "`prompt_embeds` and `negative_prompt_embeds` must have the same shape when passed directly, but"
                  f" got: `prompt_embeds` {prompt_embeds.shape} != `negative_prompt_embeds`"
                  f" {negative_prompt_embeds.shape}."
              )
  
      if prompt_embeds is not None and pooled_prompt_embeds is None:
          raise ValueError(
              "If `prompt_embeds` are provided, `pooled_prompt_embeds` also have to be passed. Make sure to generate `pooled_prompt_embeds` from the same text encoder that was used to generate `prompt_embeds`."
          )
  
      if (
          negative_prompt_embeds is not None
          and negative_pooled_prompt_embeds is None
      ):
          raise ValueError(
              "If `negative_prompt_embeds` are provided, `negative_pooled_prompt_embeds` also have to be passed. Make sure to generate `negative_pooled_prompt_embeds` from the same text encoder that was used to generate `negative_prompt_embeds`."
          )
  
imports: import inspect
  from collections.abc import Callable
  from typing import Any, List, Optional, Union
  import numpy
  import PIL
  import torch
  import torch.nn.functional
  from transformers import CLIPTextModel, CLIPTextModelWithProjection, CLIPTokenizer
  from diffusers import DiffusionPipeline
  from diffusers.image_processor import PipelineImageInput, VaeImageProcessor
  from diffusers.loaders import FromSingleFileMixin, LoraLoaderMixin, StableDiffusionXLLoraLoaderMixin, TextualInversionLoaderMixin
  from diffusers.models import AutoencoderKL, ControlNetModel, MultiAdapter, T2IAdapter, UNet2DConditionModel
  from diffusers.models.attention_processor import AttnProcessor2_0, LoRAAttnProcessor2_0, LoRAXFormersAttnProcessor, XFormersAttnProcessor
  from diffusers.models.lora import adjust_lora_scale_text_encoder
  from diffusers.pipelines.controlnet.multicontrolnet import MultiControlNetModel
  from diffusers.pipelines.stable_diffusion_xl.pipeline_output import StableDiffusionXLPipelineOutput
  from diffusers.schedulers import KarrasDiffusionSchedulers
  from diffusers.utils import PIL_INTERPOLATION, USE_PEFT_BACKEND, logging, replace_example_docstring, scale_lora_layers, unscale_lora_layers
  from diffusers.utils.torch_utils import is_compiled_module, randn_tensor
label_desc: Use image node_id 9 for calling the StableDiffusionXLControlNetAdapterInpaintPipeline obj's underlying member method code with example usage: obj.check_inputs(prompt, prompt_2, height, width, callback_steps, negative_prompt, negative_prompt_2, prompt_embeds, negative_prompt_embeds, pooled_prompt_embeds, negative_pooled_prompt_embeds, callback_on_step_end_tensor_inputs) without return types