


'''simple docstring'''







import warnings

from ...processing_utils import ProcessorMixin
from ...tokenization_utils_base import BatchEncoding
class 	UpperCamelCase__					( SCREAMING_SNAKE_CASE_	):



     """simple docstring"""






     __magic_name__    			=    ["image_processor", "tokenizer"]
     __magic_name__    			=    "CLIPImageProcessor"
     __magic_name__    			=    ("CLIPTokenizer", "CLIPTokenizerFast")







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

            '''simple docstring'''

            _lowerCAmelCase    :							Union[str, Any]   			=       None
            if "feature_extractor" in kwargs:
                   warnings.warn(
                       'The `feature_extractor` argument is deprecated and will be removed in v5, use `image_processor`'
                       ' instead.'      ,	snake_case__      ,	)
                   _lowerCAmelCase    :							str   			=       kwargs.pop('feature_extractor'   )

            _lowerCAmelCase    :							int   			=       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__(snake_case__      ,	snake_case__   )







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

            '''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:
                   _lowerCAmelCase    :							Union[str, Any]   			=       self.tokenizer(snake_case__      ,	return_tensors=snake_case__      ,	**snake_case__   )

            if images is not None:
                   _lowerCAmelCase    :							int   			=       self.image_processor(snake_case__      ,	return_tensors=snake_case__      ,	**snake_case__   )

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







     def a	( self      ,	*snake_case__      ,	**snake_case__   ):

            '''simple docstring'''

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







     def a	( self      ,	*snake_case__      ,	**snake_case__   ):

            '''simple docstring'''

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







     @property
     def a	( self   ):

            '''simple docstring'''

            _lowerCAmelCase    :							str   			=       self.tokenizer.model_input_names
            _lowerCAmelCase    :							Any   			=       self.image_processor.model_input_names
            return list(dict.fromkeys(tokenizer_input_names + image_processor_input_names   )   )







     @property
     def a	( self   ):

            '''simple docstring'''

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







     @property
     def a	( self   ):

            '''simple docstring'''

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





'''simple docstring'''







from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


lowerCAmelCase    :     Any					=						{
    """configuration_x_clip""": [
        """XCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """XCLIPConfig""",
        """XCLIPTextConfig""",
        """XCLIPVisionConfig""",
    ],
    """processing_x_clip""": ["""XCLIPProcessor"""],
}

try:
       if not is_torch_available():
              raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
       pass
else:
       lowerCAmelCase    :     Optional[Any]					=						[
           """XCLIP_PRETRAINED_MODEL_ARCHIVE_LIST""",
           """XCLIPModel""",
           """XCLIPPreTrainedModel""",
           """XCLIPTextModel""",
           """XCLIPVisionModel""",
       ]

if TYPE_CHECKING:
       from .configuration_x_clip import (
           XCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP,
           XCLIPConfig,
           XCLIPTextConfig,
           XCLIPVisionConfig,
       )
       from .processing_x_clip import XCLIPProcessor

       try:
              if not is_torch_available():
                     raise OptionalDependencyNotAvailable()
       except OptionalDependencyNotAvailable:
              pass
       else:
              from .modeling_x_clip import (
                  XCLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
                  XCLIPModel,
                  XCLIPPreTrainedModel,
                  XCLIPTextModel,
                  XCLIPVisionModel,
              )

else:
       import sys

       lowerCAmelCase    :     Dict					=						_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)

