



import warnings

from ...processing_utils import ProcessorMixin
from ...tokenization_utils_base import BatchEncoding


class 	a__       (       _snake_case       ):


					"""simple docstring"""



					A__  :				List[str]					 =				['''image_processor''', '''tokenizer''']
					A__  :				Dict					 =				'''AutoImageProcessor'''
					A__  :				int					 =				'''AutoTokenizer'''

					def __init__(		self     :List[str]      ,  lowercase__     :str=None      ,  lowercase__     :str=None      ,  **lowercase__     :Union[str, Any]    ):
										lowercase						   =       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__      ,  )
															lowercase						   =       kwargs.pop('feature_extractor'    )

										lowercase						   =       image_processor if image_processor is not None else feature_extractor
										if image_processor is None:
															raise ValueError('You have to specify an image_processor.'    )
										if tokenizer is None:
															raise ValueError('You have to specify a tokenizer.'    )

										super().__init__(lowercase__      ,  lowercase__    )
										lowercase						   =       self.image_processor

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

										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:
															lowercase						   =       self.tokenizer(lowercase__      ,  return_tensors=lowercase__      ,  **lowercase__    )

										if images is not None:
															lowercase						   =       self.image_processor(lowercase__      ,  return_tensors=lowercase__      ,  **lowercase__    )

										if text is not None and images is not None:
															lowercase						   =       image_features.pixel_values
															return encoding
										elif text is not None:
															return encoding
										else:
															return BatchEncoding(data=dict(**lowercase__    )      ,  tensor_type=lowercase__    )

					def 				__UpperCAmelCase		(		self     :List[str]      ,  *lowercase__     :List[Any]      ,  **lowercase__     :Dict    ):
										return self.tokenizer.batch_decode(*lowercase__      ,  **lowercase__    )

					def 				__UpperCAmelCase		(		self     :List[Any]      ,  *lowercase__     :Union[str, Any]      ,  **lowercase__     :int    ):
										return self.tokenizer.decode(*lowercase__      ,  **lowercase__    )

					@property
					def 				__UpperCAmelCase		(		self     :Tuple    ):
										lowercase						   =       self.tokenizer.model_input_names
										lowercase						   =       self.image_processor.model_input_names
										return list(dict.fromkeys(tokenizer_input_names + image_processor_input_names    )    )

					@property
					def 				__UpperCAmelCase		(		self     :Union[str, Any]    ):
										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 				__UpperCAmelCase		(		self     :List[str]    ):
										warnings.warn(
										    '`feature_extractor` is deprecated and will be removed in v5. Use `image_processor` instead.'      ,  lowercase__      ,  )
										return self.image_processor











import os

from packaging import version

from .. import __version__
from .accelerate_utils import apply_forward_hook
from .constants import (
    CONFIG_NAME,
    DEPRECATED_REVISION_ARGS,
    DIFFUSERS_CACHE,
    DIFFUSERS_DYNAMIC_MODULE_NAME,
    FLAX_WEIGHTS_NAME,
    HF_MODULES_CACHE,
    HUGGINGFACE_CO_RESOLVE_ENDPOINT,
    ONNX_EXTERNAL_WEIGHTS_NAME,
    ONNX_WEIGHTS_NAME,
    SAFETENSORS_WEIGHTS_NAME,
    TEXT_ENCODER_ATTN_MODULE,
    WEIGHTS_NAME,
)
from .deprecation_utils import deprecate
from .doc_utils import replace_example_docstring
from .dynamic_modules_utils import get_class_from_dynamic_module
from .hub_utils import (
    HF_HUB_OFFLINE,
    _add_variant,
    _get_model_file,
    extract_commit_hash,
    http_user_agent,
)
from .import_utils import (
    BACKENDS_MAPPING,
    ENV_VARS_TRUE_AND_AUTO_VALUES,
    ENV_VARS_TRUE_VALUES,
    USE_JAX,
    USE_TF,
    USE_TORCH,
    DummyObject,
    OptionalDependencyNotAvailable,
    is_accelerate_available,
    is_accelerate_version,
    is_bsa_available,
    is_flax_available,
    is_ftfy_available,
    is_inflect_available,
    is_invisible_watermark_available,
    is_k_diffusion_available,
    is_k_diffusion_version,
    is_librosa_available,
    is_note_seq_available,
    is_omegaconf_available,
    is_onnx_available,
    is_safetensors_available,
    is_scipy_available,
    is_tensorboard_available,
    is_tf_available,
    is_torch_available,
    is_torch_version,
    is_torchsde_available,
    is_transformers_available,
    is_transformers_version,
    is_unidecode_available,
    is_wandb_available,
    is_xformers_available,
    requires_backends,
)
from .logging import get_logger
from .outputs import BaseOutput
from .pil_utils import PIL_INTERPOLATION, numpy_to_pil, pt_to_pil
from .torch_utils import is_compiled_module, randn_tensor


if is_torch_available():
		from .testing_utils import (
		    floats_tensor,
		    load_hf_numpy,
		    load_image,
		    load_numpy,
		    load_pt,
		    nightly,
		    parse_flag_from_env,
		    print_tensor_test,
		    require_torch_a,
		    require_torch_gpu,
		    skip_mps,
		    slow,
		    torch_all_close,
		    torch_device,
		)
		from .torch_utils import maybe_allow_in_graph

from .testing_utils import export_to_gif, export_to_video


__magic_name__       =     get_logger(__name__)





def 		__snake_case						(    _UpperCAmelCase				):
					"""simple docstring"""






					if version.parse(_UpperCAmelCase				) < version.parse(_UpperCAmelCase				):
										if "dev" in min_version:
															lowercase						   =       (
															    'This example requires a source install from HuggingFace diffusers (see '
															    '`https://huggingface.co/docs/diffusers/installation#install-from-source`),'
															)
										else:
															lowercase						   =       f"""This example requires a minimum version of {min_version},"""
										error_message += f""" but the version found is {__version__}.\n"""
										raise ImportError(_UpperCAmelCase				)






