


import unittest

from transformers import SPIECE_UNDERLINE, XLNetTokenizer, XLNetTokenizerFast
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin


SCREAMING_SNAKE_CASE							    =							get_tests_dir('fixtures/test_sentencepiece.model')


@require_sentencepiece
@require_tokenizers
class     __UpperCAmelCase							(       __A ,					unittest.TestCase							):


     """simple docstring"""
     _lowerCamelCase   =      XLNetTokenizer
     _lowerCamelCase   =      XLNetTokenizerFast
     _lowerCamelCase   =      True
     _lowerCamelCase   =      True


     def 	snake_case_  (	self    ):
        super().setUp()

        # We have a SentencePiece fixture for testing
        __a					=  XLNetTokenizer(__A  ,       keep_accents=__A    )
        tokenizer.sanitize_special_tokens()
        tokenizer.save_pretrained(self.tmpdirname    )


     def 	snake_case_  (	self    ):
        __a					=  """<s>"""
        __a					=  1

        self.assertEqual(self.get_tokenizer()._convert_token_to_id(__A    )  ,       __A    )
        self.assertEqual(self.get_tokenizer()._convert_id_to_token(__A    )  ,       __A    )


     def 	snake_case_  (	self    ):
        __a					=  list(self.get_tokenizer().get_vocab().keys()    )

        self.assertEqual(vocab_keys[0]  ,       """<unk>"""    )
        self.assertEqual(vocab_keys[1]  ,       """<s>"""    )
        self.assertEqual(vocab_keys[-1]  ,       """<eod>"""    )
        self.assertEqual(len(__A    )  ,       1006    )


     def 	snake_case_  (	self    ):
        self.assertEqual(self.get_tokenizer().vocab_size  ,       1000    )


     def 	snake_case_  (	self    ):
        __a					=  XLNetTokenizer(__A  ,       keep_accents=__A    )

        __a					=  tokenizer.tokenize("""This is a test"""    )
        self.assertListEqual(__A  ,       ["""▁This""", """▁is""", """▁a""", """▁t""", """est"""]    )

        self.assertListEqual(tokenizer.convert_tokens_to_ids(__A    )  ,       [285, 46, 10, 170, 382]    )

        __a					=  tokenizer.tokenize("""I was born in 92000, and this is falsé."""    )
        self.assertListEqual(
            __A  ,       [
                SPIECE_UNDERLINE + """I""",
                SPIECE_UNDERLINE + """was""",
                SPIECE_UNDERLINE + """b""",
                """or""",
                """n""",
                SPIECE_UNDERLINE + """in""",
                SPIECE_UNDERLINE + """""",
                """9""",
                """2""",
                """0""",
                """0""",
                """0""",
                """,""",
                SPIECE_UNDERLINE + """and""",
                SPIECE_UNDERLINE + """this""",
                SPIECE_UNDERLINE + """is""",
                SPIECE_UNDERLINE + """f""",
                """al""",
                """s""",
                """é""",
                """.""",
            ]  ,       )
        __a					=  tokenizer.convert_tokens_to_ids(__A    )
        self.assertListEqual(__A  ,       [8, 21, 84, 55, 24, 19, 7, 0, 602, 347, 347, 347, 3, 12, 66, 46, 72, 80, 6, 0, 4]    )

        __a					=  tokenizer.convert_ids_to_tokens(__A    )
        self.assertListEqual(
            __A  ,       [
                SPIECE_UNDERLINE + """I""",
                SPIECE_UNDERLINE + """was""",
                SPIECE_UNDERLINE + """b""",
                """or""",
                """n""",
                SPIECE_UNDERLINE + """in""",
                SPIECE_UNDERLINE + """""",
                """<unk>""",
                """2""",
                """0""",
                """0""",
                """0""",
                """,""",
                SPIECE_UNDERLINE + """and""",
                SPIECE_UNDERLINE + """this""",
                SPIECE_UNDERLINE + """is""",
                SPIECE_UNDERLINE + """f""",
                """al""",
                """s""",
                """<unk>""",
                """.""",
            ]  ,       )


     def 	snake_case_  (	self    ):
        __a					=  XLNetTokenizer(__A  ,       do_lower_case=__A    )
        __a					=  tokenizer.tokenize("""I was born in 92000, and this is falsé."""    )
        self.assertListEqual(
            __A  ,       [
                SPIECE_UNDERLINE + """""",
                """i""",
                SPIECE_UNDERLINE + """was""",
                SPIECE_UNDERLINE + """b""",
                """or""",
                """n""",
                SPIECE_UNDERLINE + """in""",
                SPIECE_UNDERLINE + """""",
                """9""",
                """2""",
                """0""",
                """0""",
                """0""",
                """,""",
                SPIECE_UNDERLINE + """and""",
                SPIECE_UNDERLINE + """this""",
                SPIECE_UNDERLINE + """is""",
                SPIECE_UNDERLINE + """f""",
                """al""",
                """se""",
                """.""",
            ]  ,       )
        self.assertListEqual(tokenizer.tokenize("""H\u00E9llo"""    )  ,       ["""▁he""", """ll""", """o"""]    )


     def 	snake_case_  (	self    ):
        __a					=  XLNetTokenizer(__A  ,       do_lower_case=__A    )
        __a					=  tokenizer.tokenize("""I was born in 92000, and this is falsé."""    )
        self.assertListEqual(
            __A  ,       [
                SPIECE_UNDERLINE + """I""",
                SPIECE_UNDERLINE + """was""",
                SPIECE_UNDERLINE + """b""",
                """or""",
                """n""",
                SPIECE_UNDERLINE + """in""",
                SPIECE_UNDERLINE + """""",
                """9""",
                """2""",
                """0""",
                """0""",
                """0""",
                """,""",
                SPIECE_UNDERLINE + """and""",
                SPIECE_UNDERLINE + """this""",
                SPIECE_UNDERLINE + """is""",
                SPIECE_UNDERLINE + """f""",
                """al""",
                """se""",
                """.""",
            ]  ,       )


     @slow
     def 	snake_case_  (	self    ):
        __a					=  XLNetTokenizer.from_pretrained("""xlnet-base-cased"""    )

        __a					=  tokenizer.encode("""sequence builders"""  ,       add_special_tokens=__A    )
        __a					=  tokenizer.encode("""multi-sequence build"""  ,       add_special_tokens=__A    )

        __a					=  tokenizer.build_inputs_with_special_tokens(__A    )
        __a					=  tokenizer.build_inputs_with_special_tokens(__A  ,       __A    )

        assert encoded_sentence == text + [4, 3]
        assert encoded_pair == text + [4] + text_a + [4, 3]


     @slow
     def 	snake_case_  (	self    ):
        # fmt: off
        __a					=  {"""input_ids""": [[17, 21442, 270, 17, 10, 14645, 318, 34, 17, 4546, 3145, 787, 13, 7752, 22018, 23, 21, 17, 4546, 3145, 787, 13, 3352, 14431, 13, 5500, 11, 1176, 580, 13, 16819, 4797, 23, 17, 10, 17135, 658, 19, 457, 7932, 13, 184, 19, 3154, 17135, 6468, 19, 1404, 12269, 19, 4229, 5356, 16264, 46, 19, 17, 20545, 10395, 9, 9, 9, 11, 28, 6421, 9531, 20729, 17, 10, 353, 17022, 11, 21, 6421, 9531, 16949, 17, 10, 11509, 753, 11, 33, 95, 2421, 7385, 956, 14431, 2626, 25, 842, 7385, 4836, 21, 1429, 2272, 9855, 3120, 161, 24738, 19, 13203, 658, 218, 787, 21, 430, 18482, 847, 2637, 9, 4, 3], [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 322, 22178, 27, 1064, 22, 956, 13, 11101, 1429, 5854, 24313, 18953, 40, 422, 24366, 68, 1758, 37, 10483, 14257, 31, 207, 263, 21, 203, 3773, 25, 71, 9735, 9, 4, 3], [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 32, 2049, 3442, 17, 13894, 3380, 23, 95, 18, 17634, 2288, 9, 4, 3]], """token_type_ids""": [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2]], """attention_mask""": [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}  # noqa: E501
        # fmt: on

        self.tokenizer_integration_test_util(
            expected_encoding=__A  ,       model_name="""xlnet-base-cased"""  ,       revision="""c841166438c31ec7ca9a106dee7bb312b73ae511"""  ,       )







import os
import sys

A			:						Tuple        =  os.path.join(os.path.dirname(__file__), 'src')
sys.path.append(SRC_DIR)


from transformers import (
    AutoConfig,
    AutoModel,
    AutoModelForCausalLM,
    AutoModelForMaskedLM,
    AutoModelForQuestionAnswering,
    AutoModelForSequenceClassification,
    AutoTokenizer,
    add_start_docstrings,
)


A			:						Dict        =  [
    'torch',
    'numpy',
    'tokenizers',
    'filelock',
    'requests',
    'tqdm',
    'regex',
    'sentencepiece',
    'sacremoses',
    'importlib_metadata',
    'huggingface_hub',
]






@add_start_docstrings(AutoConfig.__doc__	)
def 					UpperCamelCase   (      *__magic_name__	:				str       ,       **__magic_name__	:				List[Any]	)  ->    str:
		"""simple docstring"""




		return AutoConfig.from_pretrained(*__magic_name__       ,       **__magic_name__	)






@add_start_docstrings(AutoTokenizer.__doc__	)
def 					UpperCamelCase   (      *__magic_name__	:				Any       ,       **__magic_name__	:				Optional[Any]	)  ->    Optional[Any]:
		"""simple docstring"""




		return AutoTokenizer.from_pretrained(*__magic_name__       ,       **__magic_name__	)






@add_start_docstrings(AutoModel.__doc__	)
def 					UpperCamelCase   (      *__magic_name__	:				str       ,       **__magic_name__	:				Optional[Any]	)  ->    Tuple:
		"""simple docstring"""




		return AutoModel.from_pretrained(*__magic_name__       ,       **__magic_name__	)






@add_start_docstrings(AutoModelForCausalLM.__doc__	)
def 					UpperCamelCase   (      *__magic_name__	:				str       ,       **__magic_name__	:				Tuple	)  ->    List[str]:
		"""simple docstring"""




		return AutoModelForCausalLM.from_pretrained(*__magic_name__       ,       **__magic_name__	)






@add_start_docstrings(AutoModelForMaskedLM.__doc__	)
def 					UpperCamelCase   (      *__magic_name__	:				Optional[Any]       ,       **__magic_name__	:				Any	)  ->    Optional[int]:
		"""simple docstring"""




		return AutoModelForMaskedLM.from_pretrained(*__magic_name__       ,       **__magic_name__	)






@add_start_docstrings(AutoModelForSequenceClassification.__doc__	)
def 					UpperCamelCase   (      *__magic_name__	:				Any       ,       **__magic_name__	:				List[str]	)  ->    Union[str, Any]:
		"""simple docstring"""




		return AutoModelForSequenceClassification.from_pretrained(*__magic_name__       ,       **__magic_name__	)







@add_start_docstrings(AutoModelForQuestionAnswering.__doc__	)
def 					UpperCamelCase   (      *__magic_name__	:				Dict       ,       **__magic_name__	:				List[Any]	)  ->    int:
		"""simple docstring"""




		return AutoModelForQuestionAnswering.from_pretrained(*__magic_name__       ,       **__magic_name__	)

