
'''simple docstring'''





from typing import TYPE_CHECKING

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


A							     = {"configuration_vilt": ["VILT_PRETRAINED_CONFIG_ARCHIVE_MAP", "ViltConfig"]}

try:
     if not is_vision_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     A							     = ["ViltFeatureExtractor"]
     A							     = ["ViltImageProcessor"]
     A							     = ["ViltProcessor"]

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     A							     = [
         "VILT_PRETRAINED_MODEL_ARCHIVE_LIST",
         "ViltForImageAndTextRetrieval",
         "ViltForImagesAndTextClassification",
         "ViltForTokenClassification",
         "ViltForMaskedLM",
         "ViltForQuestionAnswering",
         "ViltLayer",
         "ViltModel",
         "ViltPreTrainedModel",
     ]


if TYPE_CHECKING:
     from .configuration_vilt import VILT_PRETRAINED_CONFIG_ARCHIVE_MAP, ViltConfig

     try:
          if not is_vision_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .feature_extraction_vilt import ViltFeatureExtractor
          from .image_processing_vilt import ViltImageProcessor
          from .processing_vilt import ViltProcessor

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_vilt import (
              VILT_PRETRAINED_MODEL_ARCHIVE_LIST,
              ViltForImageAndTextRetrieval,
              ViltForImagesAndTextClassification,
              ViltForMaskedLM,
              ViltForQuestionAnswering,
              ViltForTokenClassification,
              ViltLayer,
              ViltModel,
              ViltPreTrainedModel,
          )


else:
     import sys

     A							     = _LazyModule(__name__, globals()["__file__"], _import_structure)



"""simple docstring"""




from typing import Optional, Union

from ...file_utils import TensorType
from ...processing_utils import ProcessorMixin
from ...tokenization_utils_base import BatchEncoding, PaddingStrategy, TruncationStrategy
class SCREAMING_SNAKE_CASE       (      lowerCAmelCase					):






	'''simple docstring'''







	snake_case__							:		Optional[Any]         =		'MarkupLMFeatureExtractor'
	snake_case__							:		Tuple         =		('MarkupLMTokenizer', 'MarkupLMTokenizerFast')
	snake_case__							:		Dict         =		True


	def __call__(  self :Any       ,    __magic_name__ :Dict=None       ,    __magic_name__ :Dict=None       ,    __magic_name__ :List[str]=None       ,    __magic_name__ :List[str]=None       ,    __magic_name__ :Tuple=None       ,    __magic_name__ :bool = True       ,    __magic_name__ :Union[bool, str, PaddingStrategy] = False       ,    __magic_name__ :Union[bool, str, TruncationStrategy] = None       ,    __magic_name__ :Optional[int] = None       ,    __magic_name__ :int = 0       ,    __magic_name__ :Optional[int] = None       ,    __magic_name__ :Optional[bool] = None       ,    __magic_name__ :Optional[bool] = None       ,    __magic_name__ :bool = False       ,    __magic_name__ :bool = False       ,    __magic_name__ :bool = False       ,    __magic_name__ :bool = False       ,    __magic_name__ :bool = True       ,    __magic_name__ :Optional[Union[str, TensorType]] = None       ,    **__magic_name__ :Optional[Any]       ,    )			->   BatchEncoding:

			'''simple docstring'''






			if self.parse_html:
					if html_strings is None:
							raise ValueError('''Make sure to pass HTML strings in case `parse_html` is set to `True`'''			)

					if nodes is not None or xpaths is not None or node_labels is not None:
							raise ValueError(
							    '''Please don\'t pass nodes, xpaths nor node labels in case `parse_html` is set to `True`'''			)

					a__   		=     self.feature_extractor(__magic_name__			)
					a__   		=     features['''nodes''']
					a__   		=     features['''xpaths''']
			else:
					if html_strings is not None:
							raise ValueError('''You have passed HTML strings but `parse_html` is set to `False`.'''			)
					if nodes is None or xpaths is None:
							raise ValueError('''Make sure to pass nodes and xpaths in case `parse_html` is set to `False`'''			)

        # # second, apply the tokenizer
			if questions is not None and self.parse_html:
					if isinstance(__magic_name__       ,    __magic_name__			):
							a__   		=     [questions]  # add batch dimension (as the feature extractor always adds a batch dimension)

			a__   		=     self.tokenizer(
			    text=questions if questions is not None else nodes       ,    text_pair=nodes if questions is not None else None       ,    xpaths=__magic_name__       ,    node_labels=__magic_name__       ,    add_special_tokens=__magic_name__       ,    padding=__magic_name__       ,    truncation=__magic_name__       ,    max_length=__magic_name__       ,    stride=__magic_name__       ,    pad_to_multiple_of=__magic_name__       ,    return_token_type_ids=__magic_name__       ,    return_attention_mask=__magic_name__       ,    return_overflowing_tokens=__magic_name__       ,    return_special_tokens_mask=__magic_name__       ,    return_offsets_mapping=__magic_name__       ,    return_length=__magic_name__       ,    verbose=__magic_name__       ,    return_tensors=__magic_name__       ,    **__magic_name__       ,    )

			return encoded_inputs


	def    _UpperCamelCase							(  self :Tuple       ,    *__magic_name__ :Optional[int]       ,    **__magic_name__ :Any			)			->   int:

			'''simple docstring'''






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


	def    _UpperCamelCase							(  self :Tuple       ,    *__magic_name__ :Union[str, Any]       ,    **__magic_name__ :Union[str, Any]			)			->   Dict:

			'''simple docstring'''






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






	@property
	def    _UpperCamelCase							(  self :Optional[int]			)			->   Union[str, Any]:

			'''simple docstring'''






			a__   		=     self.tokenizer.model_input_names
			return tokenizer_input_names




