





import unittest

from transformers import AlbertTokenizer, AlbertTokenizerFast
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin


_A :   List[Any]  			=  get_tests_dir('fixtures/spiece.model')


@require_sentencepiece
@require_tokenizers
class        __SCREAMING_SNAKE_CASE      (			lowerCAmelCase_					,unittest.TestCase ):
       _UpperCAmelCase				:  Dict			   =   AlbertTokenizer
       _UpperCAmelCase				:  Any			   =   AlbertTokenizerFast
       _UpperCAmelCase				:  int			   =   True
       _UpperCAmelCase				:  List[Any]			   =   True
       _UpperCAmelCase				:  Dict			   =   True







       def 						__lowerCamelCase   (				self					:     List[str]      )       ->Tuple:
          super().setUp()

          # We have a SentencePiece fixture for testing
          lowerCamelCase__       :						int        =							AlbertTokenizer(A      )
          tokenizer.save_pretrained(self.tmpdirname      )







       def 						__lowerCamelCase   (				self					:     Union[str, Any]		, A					:     List[str]      )       ->int:
          lowerCamelCase__       :						str        =							'''this is a test'''
          lowerCamelCase__       :						Dict        =							'''this is a test'''
          return input_text, output_text







       def 						__lowerCamelCase   (				self					:     Dict      )       ->Any:
          lowerCamelCase__       :						Dict        =							'''<pad>'''
          lowerCamelCase__       :						Union[str, Any]        =							0

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







       def 						__lowerCamelCase   (				self					:     List[Any]      )       ->Union[str, Any]:
          lowerCamelCase__       :						Dict        =							list(self.get_tokenizer().get_vocab().keys()      )

          self.assertEqual(vocab_keys[0]		, '''<pad>'''      )
          self.assertEqual(vocab_keys[1]		, '''<unk>'''      )
          self.assertEqual(vocab_keys[-1]		, '''▁eloquent'''      )
          self.assertEqual(len(A      )		, 3_0_0_0_0      )







       def 						__lowerCamelCase   (				self					:     int      )       ->Optional[Any]:
          self.assertEqual(self.get_tokenizer().vocab_size		, 3_0_0_0_0      )







       def 						__lowerCamelCase   (				self					:     Optional[Any]      )       ->List[str]:
          if not self.test_rust_tokenizer:
             return

          lowerCamelCase__       :						List[Any]        =							self.get_tokenizer()
          lowerCamelCase__       :						Union[str, Any]        =							self.get_rust_tokenizer()

          lowerCamelCase__       :						int        =							'''I was born in 92000, and this is falsé.'''

          lowerCamelCase__       :						List[Any]        =							tokenizer.tokenize(A      )
          lowerCamelCase__       :						Optional[Any]        =							rust_tokenizer.tokenize(A      )
          self.assertListEqual(A		, A      )

          lowerCamelCase__       :						Union[str, Any]        =							tokenizer.encode(A		, add_special_tokens=A      )
          lowerCamelCase__       :						Optional[Any]        =							rust_tokenizer.encode(A		, add_special_tokens=A      )
          self.assertListEqual(A		, A      )

          lowerCamelCase__       :						Tuple        =							self.get_rust_tokenizer()
          lowerCamelCase__       :						Dict        =							tokenizer.encode(A      )
          lowerCamelCase__       :						List[Any]        =							rust_tokenizer.encode(A      )
          self.assertListEqual(A		, A      )







       def 						__lowerCamelCase   (				self					:     Any      )       ->Dict:
          lowerCamelCase__       :						int        =							AlbertTokenizer(A		, keep_accents=A      )

          lowerCamelCase__       :						int        =							tokenizer.tokenize('''This is a test'''      )
          self.assertListEqual(A		, ['''▁this''', '''▁is''', '''▁a''', '''▁test''']      )

          self.assertListEqual(tokenizer.convert_tokens_to_ids(A      )		, [4_8, 2_5, 2_1, 1_2_8_9]      )

          lowerCamelCase__       :						Union[str, Any]        =							tokenizer.tokenize('''I was born in 92000, and this is falsé.'''      )
          self.assertListEqual(
              A		, ['''▁i''', '''▁was''', '''▁born''', '''▁in''', '''▁9''', '''2000''', ''',''', '''▁and''', '''▁this''', '''▁is''', '''▁fal''', '''s''', '''é''', '''.''']      )
          lowerCamelCase__       :						str        =							tokenizer.convert_tokens_to_ids(A      )
          self.assertListEqual(A		, [3_1, 2_3, 3_8_6, 1_9, 5_6_1, 3_0_5_0, 1_5, 1_7, 4_8, 2_5, 8_2_5_6, 1_8, 1, 9]      )

          lowerCamelCase__       :						Optional[Any]        =							tokenizer.convert_ids_to_tokens(A      )
          self.assertListEqual(
              A		, ['''▁i''', '''▁was''', '''▁born''', '''▁in''', '''▁9''', '''2000''', ''',''', '''▁and''', '''▁this''', '''▁is''', '''▁fal''', '''s''', '''<unk>''', '''.''']		, )







       def 						__lowerCamelCase   (				self					:     Union[str, Any]      )       ->List[str]:
          lowerCamelCase__       :						Optional[int]        =							AlbertTokenizer(A      )

          lowerCamelCase__       :						Tuple        =							tokenizer.encode('''sequence builders'''      )
          lowerCamelCase__       :						Tuple        =							tokenizer.encode('''multi-sequence build'''      )

          lowerCamelCase__       :						str        =							tokenizer.build_inputs_with_special_tokens(A      )
          lowerCamelCase__       :						Dict        =							tokenizer.build_inputs_with_special_tokens(A		, A      )

          assert encoded_sentence == [tokenizer.cls_token_id] + text + [tokenizer.sep_token_id]
          assert encoded_pair == [tokenizer.cls_token_id] + text + [tokenizer.sep_token_id] + text_a + [
              tokenizer.sep_token_id
          ]







       @slow
       def 						__lowerCamelCase   (				self					:     Any      )       ->Tuple:
          # fmt: off
          lowerCamelCase__       :						Dict        =							{'''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, 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], [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]], '''input_ids''': [[2, 2_1_9_7_0, 1_3, 5, 6_0_9_2, 1_6_7, 2_8, 7_1_0_3, 2_1_5_3, 6_7_3, 8, 7_0_2_8, 1_2_0_5_1, 1_8, 1_7, 7_1_0_3, 2_1_5_3, 6_7_3, 8, 3_5_1_5, 1_8_6_8_4, 8, 4_4_6_1, 6, 1_9_2_7, 2_9_7, 8, 1_2_0_6_0, 2_6_0_7, 1_8, 1_3, 5, 4_4_6_1, 1_5, 1_0_5_3_8, 3_8, 8, 1_3_5, 1_5, 8_2_2, 5_8, 1_5, 9_9_3, 1_0_3_6_3, 1_5, 1_4_6_0, 8_0_0_5, 4_4_6_1, 1_5, 9_9_3, 2_5_5, 2_3_2_8, 9, 9, 9, 6, 2_6, 1_1_1_2, 8_1_6, 3_2_6_0, 1_3, 5, 1_0_3, 2_3_7_7, 6, 1_7, 1_1_1_2, 8_1_6, 2_7_8_2, 1_3, 5, 1_0_3, 1_0_6_4_1, 6, 2_9, 8_4, 2_5_1_2, 2_4_3_0, 7_8_2, 1_8_6_8_4, 2_7_6_1, 1_9, 8_0_8, 2_4_3_0, 2_5_5_6, 1_7, 8_5_5, 1_4_8_0, 9_4_7_7, 4_0_9_1, 1_2_8, 1_1_7_1_2, 1_5, 7_1_0_3, 2_1_5_3, 6_7_3, 1_7, 2_4_8_8_3, 9_9_9_0, 9, 3], [2, 1_1_5_0_2, 2_5, 1_0_0_6, 2_0, 7_8_2, 8, 1_1_8_0_9, 8_5_5, 1_7_3_2, 1_9_3_9_3, 1_8_6_6_7, 3_7, 3_6_7, 2_1_0_1_8, 6_9, 1_8_5_4, 3_4, 1_1_8_6_0, 1_9_1_2_4, 2_7, 1_5_6, 2_2_5, 1_7, 1_9_3, 4_1_4_1, 1_9, 6_5, 9_1_2_4, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1_4, 2_2_3_1, 8_8_6, 2_3_8_5, 1_7_6_5_9, 8_4, 1_4, 1_6_7_9_2, 1_9_5_2, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], '''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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]}  # noqa: E501
          # fmt: on

          self.tokenizer_integration_test_util(
              expected_encoding=A		, model_name='''albert-base-v2'''		, revision='''6b6560eaf5ff2e250b00c50f380c5389a9c2d82e'''		, )










def 	_a						(   UpperCAmelCase					)    ->    int:







   """simple docstring"""

   if not isinstance(UpperCAmelCase      ,  UpperCAmelCase					):
      raise TypeError('''only integers accepted as input'''					)
   else:
      lowerCamelCase__       :						Any        =							str(abs(UpperCAmelCase					)					)
      lowerCamelCase__       :						Union[str, Any]        =							[list(UpperCAmelCase					) for char in range(len(UpperCAmelCase					)					)]
      for index in range(len(UpperCAmelCase					)					):
         num_transpositions[index].pop(UpperCAmelCase					)
      return max(
          int(''''''.join(list(UpperCAmelCase					)					)					) for transposition in num_transpositions					)


if __name__ == "__main__":
       __import__('doctest').testmod()



