





import warnings
from typing import List, Optional, Union

from ...image_utils import ImageInput
from ...processing_utils import ProcessorMixin
from ...tokenization_utils_base import BatchEncoding, PaddingStrategy, PreTokenizedInput, TextInput, TruncationStrategy
from ...utils import TensorType







class   _UpperCamelCase  (       A_  ):







					'''simple docstring'''

					lowerCamelCase     :     List[str]			    =       ['image_processor', 'tokenizer']
					lowerCamelCase     :     Any			    =       'FlavaImageProcessor'
					lowerCamelCase     :     Optional[int]			    =       ('BertTokenizer', 'BertTokenizerFast')





					def __init__(						self    :  Dict ,					__lowercase    :  List[Any]=None ,					__lowercase    :  Optional[int]=None ,					**__lowercase    :  Union[str, Any]		):






						'''simple docstring'''







						UpperCAmelCase_								=     None
						if "feature_extractor" in kwargs:
							warnings.warn(
							    """The `feature_extractor` argument is deprecated and will be removed in v5, use `image_processor`"""
							    """ instead.""" ,					__lowercase ,					)
							UpperCAmelCase_								=     kwargs.pop("""feature_extractor"""		)

						UpperCAmelCase_								=     image_processor if image_processor is not None else feature_extractor
						if image_processor is None:
							raise ValueError("""You need to specify an `image_processor`."""		)
						if tokenizer is None:
							raise ValueError("""You need to specify a `tokenizer`."""		)

						super().__init__(__lowercase ,					__lowercase		)
						UpperCAmelCase_								=     self.image_processor





					def __call__(						self    :  str ,					__lowercase    :  Optional[ImageInput] = None ,					__lowercase    :  Optional[Union[TextInput, PreTokenizedInput, List[TextInput], List[PreTokenizedInput]]] = None ,					__lowercase    :  bool = True ,					__lowercase    :  Union[bool, str, PaddingStrategy] = False ,					__lowercase    :  Union[bool, str, TruncationStrategy] = False ,					__lowercase    :  Optional[int] = None ,					__lowercase    :  int = 0 ,					__lowercase    :  Optional[int] = None ,					__lowercase    :  Optional[bool] = None ,					__lowercase    :  Optional[bool] = None ,					__lowercase    :  Optional[bool] = None ,					__lowercase    :  Optional[bool] = None ,					__lowercase    :  bool = False ,					__lowercase    :  bool = False ,					__lowercase    :  bool = False ,					__lowercase    :  bool = False ,					__lowercase    :  bool = True ,					__lowercase    :  Optional[Union[str, TensorType]] = None ,					**__lowercase    :  Optional[int] ,					):






						'''simple docstring'''







						if text is None and images is None:
							raise ValueError("""You have to specify either text or images. Both cannot be none."""		)

						if text is not None:
							UpperCAmelCase_								=     self.tokenizer(
							    text=__lowercase ,					add_special_tokens=__lowercase ,					padding=__lowercase ,					truncation=__lowercase ,					max_length=__lowercase ,					stride=__lowercase ,					pad_to_multiple_of=__lowercase ,					return_token_type_ids=__lowercase ,					return_attention_mask=__lowercase ,					return_overflowing_tokens=__lowercase ,					return_special_tokens_mask=__lowercase ,					return_offsets_mapping=__lowercase ,					return_length=__lowercase ,					verbose=__lowercase ,					return_tensors=__lowercase ,					**__lowercase ,					)
						if images is not None:
							UpperCAmelCase_								=     self.image_processor(
							    __lowercase ,					return_image_mask=__lowercase ,					return_codebook_pixels=__lowercase ,					return_tensors=__lowercase ,					**__lowercase ,					)

						if text is not None and images is not None:
							encoding.update(__lowercase		)
							return encoding
						elif text is not None:
							return encoding
						else:
							return BatchEncoding(data=dict(**__lowercase		) ,					tensor_type=__lowercase		)





					def        SCREAMING_SNAKE_CASE							(						self    :  Optional[Any] ,					*__lowercase    :  Any ,					**__lowercase    :  List[Any]		):






						'''simple docstring'''







						return self.tokenizer.batch_decode(*__lowercase ,					**__lowercase		)





					def        SCREAMING_SNAKE_CASE							(						self    :  Union[str, Any] ,					*__lowercase    :  Dict ,					**__lowercase    :  Dict		):






						'''simple docstring'''







						return self.tokenizer.decode(*__lowercase ,					**__lowercase		)





					@property
					def        SCREAMING_SNAKE_CASE							(						self    :  Dict		):






						'''simple docstring'''







						UpperCAmelCase_								=     self.tokenizer.model_input_names
						UpperCAmelCase_								=     self.image_processor.model_input_names
						return list(dict.fromkeys(tokenizer_input_names + image_processor_input_names		)		)





					@property
					def        SCREAMING_SNAKE_CASE							(						self    :  int		):






						'''simple docstring'''







						warnings.warn(
						    """`feature_extractor_class` is deprecated and will be removed in v5. Use `image_processor_class` instead.""" ,					__lowercase ,					)
						return self.image_processor_class





					@property
					def        SCREAMING_SNAKE_CASE							(						self    :  List[str]		):






						'''simple docstring'''







						warnings.warn(
						    """`feature_extractor` is deprecated and will be removed in v5. Use `image_processor` instead.""" ,					__lowercase ,					)
						return self.image_processor









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   _UpperCamelCase  (       A_  ):







					'''simple docstring'''

					lowerCamelCase     :     Union[List[PIL.Image.Image], np.ndarray]
					lowerCamelCase     :     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   _UpperCamelCase  (       A_  ):







									'''simple docstring'''

									lowerCamelCase     :     np.ndarray
									lowerCamelCase     :     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


