


from typing import Optional, Union

from ...file_utils import TensorType
from ...processing_utils import ProcessorMixin
from ...tokenization_utils_base import BatchEncoding, PaddingStrategy, TruncationStrategy






class    UpperCamelCase    (						UpperCamelCase__   ):


   '''simple docstring'''







   lowercase    :		List[Any]	  ="""MarkupLMFeatureExtractor"""
   lowercase    :		Union[str, Any]	  =("""MarkupLMTokenizer""", """MarkupLMTokenizerFast""")
   lowercase    :		List[str]	  =True
   def __call__(   self      ,							UpperCamelCase_=None      ,							UpperCamelCase_=None      ,							UpperCamelCase_=None      ,							UpperCamelCase_=None      ,							UpperCamelCase_=None      ,							UpperCamelCase_ = True      ,							UpperCamelCase_ = False      ,							UpperCamelCase_ = None      ,							UpperCamelCase_ = None      ,							UpperCamelCase_ = 0      ,							UpperCamelCase_ = None      ,							UpperCamelCase_ = None      ,							UpperCamelCase_ = None      ,							UpperCamelCase_ = False      ,							UpperCamelCase_ = False      ,							UpperCamelCase_ = False      ,							UpperCamelCase_ = False      ,							UpperCamelCase_ = True      ,							UpperCamelCase_ = None      ,							**UpperCamelCase_      ,							):



        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`'''						)

             lowercase_				:Optional[Any]       			=				self.feature_extractor(__A						)
             lowercase_				:Dict       			=				features['''nodes''']
             lowercase_				:Dict       			=				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(__A      ,							__A						):
                  lowercase_				:Optional[int]       			=				[questions]  # add batch dimension (as the feature extractor always adds a batch dimension)

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

        return encoded_inputs
   def 						UpperCamelCase     (   self      ,							*UpperCamelCase_      ,							**UpperCamelCase_						):
        return self.tokenizer.batch_decode(*__A      ,							**__A						)
   def 						UpperCamelCase     (   self      ,							*UpperCamelCase_      ,							**UpperCamelCase_						):
        return self.tokenizer.decode(*__A      ,							**__A						)




   @property
   def 						UpperCamelCase     (   self						):
        lowercase_				:int       			=				self.tokenizer.model_input_names
        return tokenizer_input_names








def  SCREAMING_SNAKE_CASE__							(				UpperCamelCase__:							str			):
		SCREAMING_SNAKE_CASE__								=					SCREAMING_SNAKE_CASE__								=					0
		for letter in data:
				SCREAMING_SNAKE_CASE__								=					(hash_ << 4) + ord(UpperCamelCase__			)
				SCREAMING_SNAKE_CASE__								=					hash_ & 0XF_0_0_0_0_0_0_0
				if x != 0:
						hash_ ^= x >> 24
				hash_ &= ~x
		return hash_


if __name__ == "__main__":
	import doctest

	doctest.testmod()