
'''simple docstring'''


import warnings

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


class     lowercase__						(	snake_case_ ):






   '''simple docstring'''







   _snake_case		 =				['''image_processor''', '''tokenizer''']
   _snake_case		 =				'''ChineseCLIPImageProcessor'''
   _snake_case		 =				('''BertTokenizer''', '''BertTokenizerFast''')







   def __init__(      self			, lowerCamelCase__=None			, lowerCamelCase__=None			, **lowerCamelCase__ ):

      '''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.'''			, _A			, )
         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__(_A			, _A )
      UpperCamelCase	  =	self.image_processor







   def __call__(      self			, lowerCamelCase__=None			, lowerCamelCase__=None			, lowerCamelCase__=None			, **lowerCamelCase__ ):

      '''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(_A			, return_tensors=_A			, **_A )

      if images is not None:
         UpperCamelCase	  =	self.image_processor(_A			, return_tensors=_A			, **_A )

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







   def    UpperCAmelCase					(      self			, *lowerCamelCase__			, **lowerCamelCase__ ):

      '''simple docstring'''







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







   def    UpperCAmelCase					(      self			, *lowerCamelCase__			, **lowerCamelCase__ ):

      '''simple docstring'''







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







   @property
   def    UpperCAmelCase					(      self ):

      '''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    UpperCAmelCase					(      self ):

      '''simple docstring'''







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













'''simple docstring'''





from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_speech_available, is_torch_available


_UpperCamelCase						:						Tuple  =					{
    'configuration_audio_spectrogram_transformer': [
        'AUDIO_SPECTROGRAM_TRANSFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'ASTConfig',
    ]
}

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						_UpperCamelCase						:						Optional[int]  =					[
						    'AUDIO_SPECTROGRAM_TRANSFORMER_PRETRAINED_MODEL_ARCHIVE_LIST',
						    'ASTForAudioClassification',
						    'ASTModel',
						    'ASTPreTrainedModel',
						]

try:
						if not is_speech_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						_UpperCamelCase						:						int  =					['ASTFeatureExtractor']

if TYPE_CHECKING:
						from .configuration_audio_spectrogram_transformer import (
						    AUDIO_SPECTROGRAM_TRANSFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP,
						    ASTConfig,
						)

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_audio_spectrogram_transformer import (
												    AUDIO_SPECTROGRAM_TRANSFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
												    ASTForAudioClassification,
												    ASTModel,
												    ASTPreTrainedModel,
												)

						try:
												if not is_speech_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .feature_extraction_audio_spectrogram_transformer import ASTFeatureExtractor


else:
						import sys

						_UpperCamelCase						:						List[str]  =					_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)


