from typing import TYPE_CHECKING

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


A   :     int       =				{
    "configuration_altclip": [
        "ALTCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "AltCLIPConfig",
        "AltCLIPTextConfig",
        "AltCLIPVisionConfig",
    ],
    "processing_altclip": ["AltCLIPProcessor"],
}

try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      A   :     int       =				[
          "ALTCLIP_PRETRAINED_MODEL_ARCHIVE_LIST",
          "AltCLIPPreTrainedModel",
          "AltCLIPModel",
          "AltCLIPTextModel",
          "AltCLIPVisionModel",
      ]


if TYPE_CHECKING:
      from .configuration_altclip import (
          ALTCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP,
          AltCLIPConfig,
          AltCLIPTextConfig,
          AltCLIPVisionConfig,
      )
      from .processing_altclip import AltCLIPProcessor

      try:
            if not is_torch_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_altclip import (
                ALTCLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
                AltCLIPModel,
                AltCLIPPreTrainedModel,
                AltCLIPTextModel,
                AltCLIPVisionModel,
            )


else:
      import sys

      A   :     Union[str, Any]       =				_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)



from ...processing_utils import ProcessorMixin


class      lowerCamelCase    (SCREAMING_SNAKE_CASE__    ):
  """simple docstring"""







  lowerCamelCase__   =  ['''image_processor''', '''feature_extractor''']
  lowerCamelCase__   =  '''TvltImageProcessor'''
  lowerCamelCase__   =  '''TvltFeatureExtractor'''







  def __init__(							self       :				List[str]     ,   __magic_name__       :				Any     ,   __magic_name__       :				Any      )     ->		int:
        super().__init__(image_processor=__magic_name__     ,   feature_extractor=__magic_name__      )

        SCREAMING_SNAKE_CASE_      =     image_processor
        SCREAMING_SNAKE_CASE_      =     feature_extractor







  def __call__(							self       :				List[str]     ,   __magic_name__       :				Optional[Any]=None     ,   __magic_name__       :				Union[str, Any]=None     ,   __magic_name__       :				int=None     ,   __magic_name__       :				str=None     ,   __magic_name__       :				Any=False     ,   __magic_name__       :				int=False     ,   *__magic_name__       :				int     ,   **__magic_name__       :				Any     ,   )     ->		List[Any]:

        if images is None and audio is None:
              raise ValueError("You need to specify either an `images` or `audio` input to process."      )

        SCREAMING_SNAKE_CASE_      =     None
        if images is not None:
              SCREAMING_SNAKE_CASE_      =     self.image_processor(__magic_name__     ,   mask_pixel=__magic_name__     ,   *__magic_name__     ,   **__magic_name__      )
        if images_mixed is not None:
              SCREAMING_SNAKE_CASE_      =     self.image_processor(__magic_name__     ,   is_mixed=__magic_name__     ,   *__magic_name__     ,   **__magic_name__      )
        if audio is not None:
              SCREAMING_SNAKE_CASE_      =     self.feature_extractor(
                  __magic_name__     ,   *__magic_name__     ,   sampling_rate=__magic_name__     ,   mask_audio=__magic_name__     ,   **__magic_name__      )

        SCREAMING_SNAKE_CASE_      =     {}
        if audio is not None:
              output_dict.update(__magic_name__      )
        if images is not None:
              output_dict.update(__magic_name__      )
        if images_mixed_dict is not None:
              output_dict.update(__magic_name__      )
        return output_dict







  @property
  def       __A   (							self       :				Optional[Any]      )     ->		int:
        SCREAMING_SNAKE_CASE_      =     self.image_processor.model_input_names
        SCREAMING_SNAKE_CASE_      =     self.feature_extractor.model_input_names
        return list(dict.fromkeys(image_processor_input_names + feature_extractor_input_names      )      )


