





'''simple docstring'''







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


snake_case_   :				Any		=     get_tests_dir("fixtures/test_sentencepiece.model")


@require_sentencepiece
@require_tokenizers
class     __a					(lowerCamelCase				,						unittest.TestCase   ):
							__a    :      Union[str, Any]  	=				XLNetTokenizer
							__a    :      Optional[Any]  	=				XLNetTokenizerFast
							__a    :      int  	=				True
							__a    :      str  	=				True

							def 			UpperCAmelCase__		(							self							:   Any      )    ->				Optional[int]:







													"""simple docstring"""
													super().setUp()

													# We have a SentencePiece fixture for testing
													UpperCAmelCase_	:					List[Any]     =     XLNetTokenizer(_lowerCAmelCase				,   keep_accents=_lowerCAmelCase      )
													tokenizer.sanitize_special_tokens()
													tokenizer.save_pretrained(self.tmpdirname      )

							def 			UpperCAmelCase__		(							self							:   Tuple      )    ->				List[Any]:







													"""simple docstring"""
													UpperCAmelCase_	:					Optional[Any]     =     "<s>"
													UpperCAmelCase_	:					str     =     1

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

							def 			UpperCAmelCase__		(							self							:   Union[str, Any]      )    ->				Any:







													"""simple docstring"""
													UpperCAmelCase_	:					Union[str, Any]     =     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(_lowerCAmelCase      )				,   10_06      )

							def 			UpperCAmelCase__		(							self							:   Tuple      )    ->				List[Any]:







													"""simple docstring"""
													self.assertEqual(self.get_tokenizer().vocab_size				,   10_00      )

							def 			UpperCAmelCase__		(							self							:   int      )    ->				Tuple:







													"""simple docstring"""
													UpperCAmelCase_	:					int     =     XLNetTokenizer(_lowerCAmelCase				,   keep_accents=_lowerCAmelCase      )

													UpperCAmelCase_	:					int     =     tokenizer.tokenize('''This is a test'''      )
													self.assertListEqual(_lowerCAmelCase				,   ['''▁This''', '''▁is''', '''▁a''', '''▁t''', '''est''']      )

													self.assertListEqual(tokenizer.convert_tokens_to_ids(_lowerCAmelCase      )				,   [2_85, 46, 10, 1_70, 3_82]      )

													UpperCAmelCase_	:					str     =     tokenizer.tokenize('''I was born in 92000, and this is falsé.'''      )
													self.assertListEqual(
													    _lowerCAmelCase				,   [
													        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''',
													        '''é''',
													        '''.''',
													    ]				,   )
													UpperCAmelCase_	:					Tuple     =     tokenizer.convert_tokens_to_ids(_lowerCAmelCase      )
													self.assertListEqual(_lowerCAmelCase				,   [8, 21, 84, 55, 24, 19, 7, 0, 6_02, 3_47, 3_47, 3_47, 3, 12, 66, 46, 72, 80, 6, 0, 4]      )

													UpperCAmelCase_	:					str     =     tokenizer.convert_ids_to_tokens(_lowerCAmelCase      )
													self.assertListEqual(
													    _lowerCAmelCase				,   [
													        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 			UpperCAmelCase__		(							self							:   List[Any]      )    ->				Optional[int]:







													"""simple docstring"""
													UpperCAmelCase_	:					Tuple     =     XLNetTokenizer(_lowerCAmelCase				,   do_lower_case=_lowerCAmelCase      )
													UpperCAmelCase_	:					Optional[Any]     =     tokenizer.tokenize('''I was born in 92000, and this is falsé.'''      )
													self.assertListEqual(
													    _lowerCAmelCase				,   [
													        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 			UpperCAmelCase__		(							self							:   Tuple      )    ->				List[str]:







													"""simple docstring"""
													UpperCAmelCase_	:					Any     =     XLNetTokenizer(_lowerCAmelCase				,   do_lower_case=_lowerCAmelCase      )
													UpperCAmelCase_	:					int     =     tokenizer.tokenize('''I was born in 92000, and this is falsé.'''      )
													self.assertListEqual(
													    _lowerCAmelCase				,   [
													        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 			UpperCAmelCase__		(							self							:   Any      )    ->				Union[str, Any]:







													"""simple docstring"""
													UpperCAmelCase_	:					Any     =     XLNetTokenizer.from_pretrained('''xlnet-base-cased'''      )

													UpperCAmelCase_	:					Optional[Any]     =     tokenizer.encode('''sequence builders'''				,   add_special_tokens=_lowerCAmelCase      )
													UpperCAmelCase_	:					Dict     =     tokenizer.encode('''multi-sequence build'''				,   add_special_tokens=_lowerCAmelCase      )

													UpperCAmelCase_	:					Dict     =     tokenizer.build_inputs_with_special_tokens(_lowerCAmelCase      )
													UpperCAmelCase_	:					List[Any]     =     tokenizer.build_inputs_with_special_tokens(_lowerCAmelCase				,   _lowerCAmelCase      )

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



							@slow
							def 			UpperCAmelCase__		(							self							:   Optional[int]      )    ->				List[str]:







													"""simple docstring"""
													# fmt: off
													UpperCAmelCase_	:					Dict     =     {"input_ids": [[17, 2_14_42, 2_70, 17, 10, 1_46_45, 3_18, 34, 17, 45_46, 31_45, 7_87, 13, 77_52, 2_20_18, 23, 21, 17, 45_46, 31_45, 7_87, 13, 33_52, 1_44_31, 13, 55_00, 11, 11_76, 5_80, 13, 1_68_19, 47_97, 23, 17, 10, 1_71_35, 6_58, 19, 4_57, 79_32, 13, 1_84, 19, 31_54, 1_71_35, 64_68, 19, 14_04, 1_22_69, 19, 42_29, 53_56, 1_62_64, 46, 19, 17, 2_05_45, 1_03_95, 9, 9, 9, 11, 28, 64_21, 95_31, 2_07_29, 17, 10, 3_53, 1_70_22, 11, 21, 64_21, 95_31, 1_69_49, 17, 10, 1_15_09, 7_53, 11, 33, 95, 24_21, 73_85, 9_56, 1_44_31, 26_26, 25, 8_42, 73_85, 48_36, 21, 14_29, 22_72, 98_55, 31_20, 1_61, 2_47_38, 19, 1_32_03, 6_58, 2_18, 7_87, 21, 4_30, 1_84_82, 8_47, 26_37, 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, 3_22, 2_21_78, 27, 10_64, 22, 9_56, 13, 1_11_01, 14_29, 58_54, 2_43_13, 1_89_53, 40, 4_22, 2_43_66, 68, 17_58, 37, 1_04_83, 1_42_57, 31, 2_07, 2_63, 21, 2_03, 37_73, 25, 71, 97_35, 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, 20_49, 34_42, 17, 1_38_94, 33_80, 23, 95, 18, 1_76_34, 22_88, 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=_lowerCAmelCase				,   model_name='''xlnet-base-cased'''				,   revision='''c841166438c31ec7ca9a106dee7bb312b73ae511'''				,   )











import os

import pytest
from attr import dataclass


_UpperCAmelCase		:  List[str]	=   "us-east-1"  # defaults region




@dataclass
class       __lowerCAmelCase				:
       _a           =  42
       _a           =  '''arn:aws:iam::558105141721:role/sagemaker_execution_role'''
       _a           =  {
           '''task_name''': '''mnli''',
           '''per_device_train_batch_size''': 16,
           '''per_device_eval_batch_size''': 16,
           '''do_train''': True,
           '''do_eval''': True,
           '''do_predict''': True,
           '''output_dir''': '''/opt/ml/model''',
           '''overwrite_output_dir''': True,
           '''max_steps''': 500,
           '''save_steps''': 5500,
       }
       _a           =  {**hyperparameters, '''max_steps''': 1000}






       @property
       def     SCREAMING_SNAKE_CASE			(      self:    str ):
         if self.framework == "pytorch":
           return [
               {"Name": "train_runtime", "Regex": r"train_runtime.*=\D*(.*?)$"},
               {"Name": "eval_accuracy", "Regex": r"eval_accuracy.*=\D*(.*?)$"},
               {"Name": "eval_loss", "Regex": r"eval_loss.*=\D*(.*?)$"},
           ]
         else:
           return [
               {"Name": "train_runtime", "Regex": r"train_runtime.*=\D*(.*?)$"},
               {"Name": "eval_accuracy", "Regex": r"loss.*=\D*(.*?)]?$"},
               {"Name": "eval_loss", "Regex": r"sparse_categorical_accuracy.*=\D*(.*?)]?$"},
           ]






       @property
       def     SCREAMING_SNAKE_CASE			(      self:    Dict ):
         return F"{self.framework}-transfromers-test"






       @property
       def     SCREAMING_SNAKE_CASE			(      self:    Any ):
         return F"./tests/sagemaker/scripts/{self.framework}"






       @property
       def     SCREAMING_SNAKE_CASE			(      self:    Optional[int] ):
         if self.framework == "pytorch":
           return "763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-training:1.7.1-transformers4.6.1-gpu-py36-cu110-ubuntu18.04"
         else:
           return "763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-tensorflow-training:2.4.1-transformers4.6.1-gpu-py37-cu110-ubuntu18.04"







@pytest.fixture(scope="class"      )
def 					UpperCAmelCase__     (   lowerCamelCase      ):
  lowercase			:Union[str, Any]							=  SageMakerTestEnvironment(framework=request.cls.framework      )



