
"""simple docstring"""





from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


__magic_name__       =			{
    "configuration_funnel": ["FUNNEL_PRETRAINED_CONFIG_ARCHIVE_MAP", "FunnelConfig"],
    "convert_funnel_original_tf_checkpoint_to_pytorch": [],
    "tokenization_funnel": ["FunnelTokenizer"],
}

try:
							if not is_tokenizers_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							__magic_name__       =			["FunnelTokenizerFast"]

try:
							if not is_torch_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							__magic_name__       =			[
							    "FUNNEL_PRETRAINED_MODEL_ARCHIVE_LIST",
							    "FunnelBaseModel",
							    "FunnelForMaskedLM",
							    "FunnelForMultipleChoice",
							    "FunnelForPreTraining",
							    "FunnelForQuestionAnswering",
							    "FunnelForSequenceClassification",
							    "FunnelForTokenClassification",
							    "FunnelModel",
							    "FunnelPreTrainedModel",
							    "load_tf_weights_in_funnel",
							]

try:
							if not is_tf_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							__magic_name__       =			[
							    "TF_FUNNEL_PRETRAINED_MODEL_ARCHIVE_LIST",
							    "TFFunnelBaseModel",
							    "TFFunnelForMaskedLM",
							    "TFFunnelForMultipleChoice",
							    "TFFunnelForPreTraining",
							    "TFFunnelForQuestionAnswering",
							    "TFFunnelForSequenceClassification",
							    "TFFunnelForTokenClassification",
							    "TFFunnelModel",
							    "TFFunnelPreTrainedModel",
							]


if TYPE_CHECKING:
							from .configuration_funnel import FUNNEL_PRETRAINED_CONFIG_ARCHIVE_MAP, FunnelConfig
							from .tokenization_funnel import FunnelTokenizer

							try:
														if not is_tokenizers_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .tokenization_funnel_fast import FunnelTokenizerFast

							try:
														if not is_torch_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_funnel import (
														    FUNNEL_PRETRAINED_MODEL_ARCHIVE_LIST,
														    FunnelBaseModel,
														    FunnelForMaskedLM,
														    FunnelForMultipleChoice,
														    FunnelForPreTraining,
														    FunnelForQuestionAnswering,
														    FunnelForSequenceClassification,
														    FunnelForTokenClassification,
														    FunnelModel,
														    FunnelPreTrainedModel,
														    load_tf_weights_in_funnel,
														)

							try:
														if not is_tf_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_tf_funnel import (
														    TF_FUNNEL_PRETRAINED_MODEL_ARCHIVE_LIST,
														    TFFunnelBaseModel,
														    TFFunnelForMaskedLM,
														    TFFunnelForMultipleChoice,
														    TFFunnelForPreTraining,
														    TFFunnelForQuestionAnswering,
														    TFFunnelForSequenceClassification,
														    TFFunnelForTokenClassification,
														    TFFunnelModel,
														    TFFunnelPreTrainedModel,
														)

else:
							import sys

							__magic_name__       =			_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)






"""simple docstring"""





from typing import List, Optional, Union

from ...processing_utils import ProcessorMixin
from ...tokenization_utils_base import BatchEncoding, PaddingStrategy, PreTokenizedInput, TextInput, TruncationStrategy
from ...utils import TensorType
class 						SCREAMING_SNAKE_CASE_ (						__a ):




		"""simple docstring"""





		__lowercase							:  List[Any]						   =		['''image_processor''', '''tokenizer''']
		__lowercase							:  List[Any]						   =		'''BridgeTowerImageProcessor'''
		__lowercase							:  Tuple						   =		('''RobertaTokenizer''', '''RobertaTokenizerFast''')




		def __init__(     self							,  lowerCAmelCase__							,  lowerCAmelCase__):
				super().__init__(lowerCAmelCase__							,  lowerCAmelCase__)




		def __call__(     self							,  lowerCAmelCase__							,  lowerCAmelCase__ = None							,  lowerCAmelCase__ = True							,  lowerCAmelCase__ = False							,  lowerCAmelCase__ = None							,  lowerCAmelCase__ = None							,  lowerCAmelCase__ = 0							,  lowerCAmelCase__ = None							,  lowerCAmelCase__ = None							,  lowerCAmelCase__ = None							,  lowerCAmelCase__ = False							,  lowerCAmelCase__ = False							,  lowerCAmelCase__ = False							,  lowerCAmelCase__ = False							,  lowerCAmelCase__ = True							,  lowerCAmelCase__ = None							,  **lowerCAmelCase__							,  ):
				__SCREAMING_SNAKE_CASE            = self.tokenizer(
				    text=lowerCAmelCase__							,  add_special_tokens=lowerCAmelCase__							,  padding=lowerCAmelCase__							,  truncation=lowerCAmelCase__							,  max_length=lowerCAmelCase__							,  stride=lowerCAmelCase__							,  pad_to_multiple_of=lowerCAmelCase__							,  return_token_type_ids=lowerCAmelCase__							,  return_attention_mask=lowerCAmelCase__							,  return_overflowing_tokens=lowerCAmelCase__							,  return_special_tokens_mask=lowerCAmelCase__							,  return_offsets_mapping=lowerCAmelCase__							,  return_length=lowerCAmelCase__							,  verbose=lowerCAmelCase__							,  return_tensors=lowerCAmelCase__							,  **lowerCAmelCase__							,  )
				# add pixel_values + pixel_mask
				__SCREAMING_SNAKE_CASE            = self.image_processor(
				    lowerCAmelCase__							,  return_tensors=lowerCAmelCase__							,  do_normalize=lowerCAmelCase__							,  do_center_crop=lowerCAmelCase__							,  **lowerCAmelCase__)
				encoding.update(lowerCAmelCase__)

				return encoding




		def 	snake_case_     (     self							,  *lowerCAmelCase__							,  **lowerCAmelCase__):
				return self.tokenizer.batch_decode(*lowerCAmelCase__							,  **lowerCAmelCase__)




		def 	snake_case_     (     self							,  *lowerCAmelCase__							,  **lowerCAmelCase__):
				return self.tokenizer.decode(*lowerCAmelCase__							,  **lowerCAmelCase__)




		@property
		def 	snake_case_     (     self):
				__SCREAMING_SNAKE_CASE            = self.tokenizer.model_input_names
				__SCREAMING_SNAKE_CASE            = self.image_processor.model_input_names
				return list(dict.fromkeys(tokenizer_input_names + image_processor_input_names))




