

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






class 							A_				(	lowerCAmelCase_      ):
					_lowercase    :  int          =			['image_processor', 'tokenizer']
					_lowercase    :  int          =			'EfficientNetImageProcessor'
					_lowercase    :  Union[str, Any]          =			('BertTokenizer', 'BertTokenizerFast')


					def __init__(							self    :	int    ,						UpperCAmelCase    :	Any    ,						UpperCAmelCase    :	List[Any]      )							->			Union[str, Any]:
						super().__init__(lowerCamelCase_    ,						lowerCamelCase_      )


					def __call__(							self    :	Dict    ,						UpperCAmelCase    :	Dict=None    ,						UpperCAmelCase    :	Union[str, Any]=None    ,						UpperCAmelCase    :	int="max_length"    ,						UpperCAmelCase    :	List[str]=6_4    ,						UpperCAmelCase    :	Any=None    ,						**UpperCAmelCase    :	Union[str, Any]      )							->			Tuple:

						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:     Dict     			=   self.tokenizer(
							    lowerCamelCase_    ,						padding=lowerCamelCase_    ,						max_length=lowerCamelCase_    ,						return_tensors=lowerCamelCase_    ,						**lowerCamelCase_      )

						if images is not None:
							__lowerCAmelCase:     Union[str, Any]     			=   self.image_processor(lowerCamelCase_    ,						return_tensors=lowerCamelCase_    ,						**lowerCamelCase_      )

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


					def 						UpperCAmelCase						(							self    :	int    ,						*UpperCAmelCase    :	List[Any]    ,						**UpperCAmelCase    :	Tuple      )							->			List[Any]:
						return self.tokenizer.batch_decode(*lowerCamelCase_    ,						**lowerCamelCase_      )


					def 						UpperCAmelCase						(							self    :	int    ,						*UpperCAmelCase    :	List[str]    ,						**UpperCAmelCase    :	List[str]      )							->			List[str]:
						return self.tokenizer.decode(*lowerCamelCase_    ,						**lowerCamelCase_      )


					@property
					def 						UpperCAmelCase						(							self    :	List[str]      )							->			str:
						__lowerCAmelCase:     Union[str, Any]     			=   self.tokenizer.model_input_names
						__lowerCAmelCase:     Optional[Any]     			=   self.image_processor.model_input_names
						return list(dict.fromkeys(tokenizer_input_names + image_processor_input_names      )      )








# Copyright 2023 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_torch_available,
    is_vision_available,
)


_a	 =     {
    '''configuration_tvlt''': ['''TVLT_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''TvltConfig'''],
    '''feature_extraction_tvlt''': ['''TvltFeatureExtractor'''],
    '''processing_tvlt''': ['''TvltProcessor'''],
}

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  _a	 =     [
      '''TVLT_PRETRAINED_MODEL_ARCHIVE_LIST''',
      '''TvltModel''',
      '''TvltForPreTraining''',
      '''TvltForAudioVisualClassification''',
      '''TvltPreTrainedModel''',
  ]

try:
  if not is_vision_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  _a	 =     ['''TvltImageProcessor''']


if TYPE_CHECKING:
  from .configuration_tvlt import TVLT_PRETRAINED_CONFIG_ARCHIVE_MAP, TvltConfig
  from .processing_tvlt import TvltProcessor
  from .feature_extraction_tvlt import TvltFeatureExtractor

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_tvlt import (
        TVLT_PRETRAINED_MODEL_ARCHIVE_LIST,
        TvltForAudioVisualClassification,
        TvltForPreTraining,
        TvltModel,
        TvltPreTrainedModel,
    )

  try:
    if not is_vision_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .image_processing_tvlt import TvltImageProcessor


else:
  import sys

  _a	 =     _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)





