


import unittest

from transformers import SPIECE_UNDERLINE
from transformers.models.speechta import SpeechTaTokenizer
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, slow
from transformers.tokenization_utils import AddedToken

from ...test_tokenization_common import TokenizerTesterMixin


snake_case							:       str     			=      get_tests_dir('''fixtures/test_sentencepiece_bpe_char.model''')







@require_sentencepiece
@require_tokenizers
class        snake_case_   (lowerCamelCase_	,						unittest.TestCase      ):
					UpperCAmelCase__					:    Dict          =			SpeechTaTokenizer
					UpperCAmelCase__					:    Dict          =			False
					UpperCAmelCase__					:    Any          =			True
					def  lowerCamelCase__(      self   :Optional[int]      )					->    Tuple:
												super().setUp()

												# We have a SentencePiece fixture for testing
												a__             =     SpeechTaTokenizer(__snake_case      )

												a__             =     AddedToken('<mask>'			,lstrip=__snake_case			,rstrip=__snake_case      )
												a__             =     mask_token
												tokenizer.add_special_tokens({'mask_token': mask_token}      )
												tokenizer.add_tokens(['<ctc_blank>']      )

												tokenizer.save_pretrained(self.tmpdirname      )
					def  lowerCamelCase__(      self   :Dict			,__snake_case   :List[Any]      )					->    List[Any]:
												a__             =     'this is a test'
												a__             =     'this is a test'
												return input_text, output_text
					def  lowerCamelCase__(      self   :Dict			,__snake_case   :Optional[int]			,__snake_case   :Optional[int]=False			,__snake_case   :List[Any]=20			,__snake_case   :Optional[Any]=5      )					->    Optional[Any]:
												a__      ,					a__             =     self.get_input_output_texts(__snake_case      )
												a__             =     tokenizer.encode(__snake_case			,add_special_tokens=__snake_case      )
												a__             =     tokenizer.decode(__snake_case			,clean_up_tokenization_spaces=__snake_case      )
												return text, ids
					def  lowerCamelCase__(      self   :Any      )					->    Any:
												a__             =     '<pad>'
												a__             =     1

												self.assertEqual(self.get_tokenizer()._convert_token_to_id(__snake_case      )			,__snake_case      )
												self.assertEqual(self.get_tokenizer()._convert_id_to_token(__snake_case      )			,__snake_case      )
					def  lowerCamelCase__(      self   :str      )					->    Optional[Any]:
												a__             =     list(self.get_tokenizer().get_vocab().keys()      )

												self.assertEqual(vocab_keys[0]			,'<s>'      )
												self.assertEqual(vocab_keys[1]			,'<pad>'      )
												self.assertEqual(vocab_keys[-4]			,'œ'      )
												self.assertEqual(vocab_keys[-2]			,'<mask>'      )
												self.assertEqual(vocab_keys[-1]			,'<ctc_blank>'      )
												self.assertEqual(len(__snake_case      )			,81      )
					def  lowerCamelCase__(      self   :List[str]      )					->    Any:
												self.assertEqual(self.get_tokenizer().vocab_size			,79      )
					def  lowerCamelCase__(      self   :Dict      )					->    str:
												a__             =     self.get_tokenizers(do_lower_case=__snake_case      )
												for tokenizer in tokenizers:
																			with self.subTest(F'{tokenizer.__class__.__name__}'      ):
																										a__             =     tokenizer.vocab_size
																										a__             =     len(__snake_case      )

																										self.assertNotEqual(__snake_case			,0      )

																										# We usually have added tokens from the start in tests because our vocab fixtures are
																										# smaller than the original vocabs - let's not assert this
																										# self.assertEqual(vocab_size, all_size)

																										a__             =     ['aaaaa bbbbbb', 'cccccccccdddddddd']
																										a__             =     tokenizer.add_tokens(__snake_case      )
																										a__             =     tokenizer.vocab_size
																										a__             =     len(__snake_case      )

																										self.assertNotEqual(__snake_case			,0      )
																										self.assertEqual(__snake_case			,__snake_case      )
																										self.assertEqual(__snake_case			,len(__snake_case      )      )
																										self.assertEqual(__snake_case			,all_size + len(__snake_case      )      )

																										a__             =     tokenizer.encode('aaaaa bbbbbb low cccccccccdddddddd l'			,add_special_tokens=__snake_case      )

																										self.assertGreaterEqual(len(__snake_case      )			,4      )
																										self.assertGreater(tokens[0]			,tokenizer.vocab_size - 1      )
																										self.assertGreater(tokens[-3]			,tokenizer.vocab_size - 1      )

																										a__             =     {'eos_token': '>>>>|||<||<<|<<', 'pad_token': '<<<<<|||>|>>>>|>'}
																										a__             =     tokenizer.add_special_tokens(__snake_case      )
																										a__             =     tokenizer.vocab_size
																										a__             =     len(__snake_case      )

																										self.assertNotEqual(__snake_case			,0      )
																										self.assertEqual(__snake_case			,__snake_case      )
																										self.assertEqual(__snake_case			,len(__snake_case      )      )
																										self.assertEqual(__snake_case			,all_size_a + len(__snake_case      )      )

																										a__             =     tokenizer.encode(
																										    '>>>>|||<||<<|<< aaaaabbbbbb low cccccccccdddddddd <<<<<|||>|>>>>|> l'			,add_special_tokens=__snake_case      )

																										self.assertGreaterEqual(len(__snake_case      )			,6      )
																										self.assertGreater(tokens[0]			,tokenizer.vocab_size - 1      )
																										self.assertGreater(tokens[0]			,tokens[1]      )
																										self.assertGreater(tokens[-3]			,tokenizer.vocab_size - 1      )
																										self.assertGreater(tokens[-3]			,tokens[-4]      )
																										self.assertEqual(tokens[0]			,tokenizer.eos_token_id      )
																										self.assertEqual(tokens[-3]			,tokenizer.pad_token_id      )
					def  lowerCamelCase__(      self   :Tuple      )					->    List[Any]:
												pass
					def  lowerCamelCase__(      self   :str      )					->    str:
												pass
					def  lowerCamelCase__(      self   :Optional[int]      )					->    Union[str, Any]:
												a__             =     self.get_tokenizer()

												a__             =     tokenizer.tokenize('This is a test'      )
												# fmt: off
												self.assertListEqual(__snake_case			,[SPIECE_UNDERLINE, 'T', 'h', 'i', 's', SPIECE_UNDERLINE, 'i', 's', SPIECE_UNDERLINE, 'a', SPIECE_UNDERLINE, 't', 'e', 's', 't']      )
												# fmt: on

												self.assertListEqual(
												    tokenizer.convert_tokens_to_ids(__snake_case      )			,[4, 32, 11, 10, 12, 4, 10, 12, 4, 7, 4, 6, 5, 12, 6]			,)

												a__             =     tokenizer.tokenize('I was born in 92000, and this is falsé.'      )
												self.assertListEqual(
												    __snake_case			,[SPIECE_UNDERLINE, 'I', SPIECE_UNDERLINE, 'w', 'a', 's', SPIECE_UNDERLINE, 'b', 'o', 'r', 'n', SPIECE_UNDERLINE, 'i', 'n', SPIECE_UNDERLINE, '92000', ',', SPIECE_UNDERLINE, 'a', 'n', 'd', SPIECE_UNDERLINE, 't', 'h', 'i', 's', SPIECE_UNDERLINE, 'i', 's', SPIECE_UNDERLINE, 'f', 'a', 'l', 's', 'é', '.']      )

												a__             =     tokenizer.convert_tokens_to_ids(__snake_case      )
												# fmt: off
												self.assertListEqual(__snake_case			,[4, 30, 4, 20, 7, 12, 4, 25, 8, 13, 9, 4, 10, 9, 4, 3, 23, 4, 7, 9, 14, 4, 6, 11, 10, 12, 4, 10, 12, 4, 19, 7, 15, 12, 73, 26]      )
												# fmt: on

												a__             =     tokenizer.convert_ids_to_tokens(__snake_case      )
												self.assertListEqual(
												    __snake_case			,[SPIECE_UNDERLINE, 'I', SPIECE_UNDERLINE, 'w', 'a', 's', SPIECE_UNDERLINE, 'b', 'o', 'r', 'n', SPIECE_UNDERLINE, 'i', 'n', SPIECE_UNDERLINE, '<unk>', ',', SPIECE_UNDERLINE, 'a', 'n', 'd', SPIECE_UNDERLINE, 't', 'h', 'i', 's', SPIECE_UNDERLINE, 'i', 's', SPIECE_UNDERLINE, 'f', 'a', 'l', 's', 'é', '.']      )



					@slow
					def  lowerCamelCase__(      self   :str      )					->    Optional[int]:
												# Use custom sequence because this tokenizer does not handle numbers.
												a__             =     [
												    'Transformers (formerly known as pytorch-transformers and pytorch-pretrained-bert) provides '
												    'general-purpose architectures (BERT, GPT, RoBERTa, XLM, DistilBert, XLNet...) for Natural '
												    'Language Understanding (NLU) and Natural Language Generation (NLG) with over thirty-two pretrained '
												    'models in one hundred plus languages and deep interoperability between Jax, PyTorch and TensorFlow.',
												    'BERT is designed to pre-train deep bidirectional representations from unlabeled text by jointly '
												    'conditioning on both left and right context in all layers.',
												    'The quick brown fox jumps over the lazy dog.',
												]

												# fmt: off
												a__             =     {
												    'input_ids': [
												        [4, 32, 13, 7, 9, 12, 19, 8, 13, 18, 5, 13, 12, 4, 64, 19, 8, 13, 18, 5, 13, 15, 22, 4, 28, 9, 8, 20, 9, 4, 7, 12, 4, 24, 22, 6, 8, 13, 17, 11, 39, 6, 13, 7, 9, 12, 19, 8, 13, 18, 5, 13, 12, 4, 7, 9, 14, 4, 24, 22, 6, 8, 13, 17, 11, 39, 24, 13, 5, 6, 13, 7, 10, 9, 5, 14, 39, 25, 5, 13, 6, 63, 4, 24, 13, 8, 27, 10, 14, 5, 12, 4, 21, 5, 9, 5, 13, 7, 15, 39, 24, 16, 13, 24, 8, 12, 5, 4, 7, 13, 17, 11, 10, 6, 5, 17, 6, 16, 13, 5, 12, 4, 64, 40, 47, 54, 32, 23, 4, 53, 49, 32, 23, 4, 54, 8, 40, 47, 54, 32, 7, 23, 4, 69, 52, 43, 23, 4, 51, 10, 12, 6, 10, 15, 40, 5, 13, 6, 23, 4, 69, 52, 48, 5, 6, 26, 26, 26, 63, 4, 19, 8, 13, 4, 48, 7, 6, 16, 13, 7, 15, 4, 52, 7, 9, 21, 16, 7, 21, 5, 4, 61, 9, 14, 5, 13, 12, 6, 7, 9, 14, 10, 9, 21, 4, 64, 48, 52, 61, 63, 4, 7, 9, 14, 4, 48, 7, 6, 16, 13, 7, 15, 4, 52, 7, 9, 21, 16, 7, 21, 5, 4, 53, 5, 9, 5, 13, 7, 6, 10, 8, 9, 4, 64, 48, 52, 53, 63, 4, 20, 10, 6, 11, 4, 8, 27, 5, 13, 4, 6, 11, 10, 13, 6, 22, 39, 6, 20, 8, 4, 24, 13, 5, 6, 13, 7, 10, 9, 5, 14, 4, 18, 8, 14, 5, 15, 12, 4, 10, 9, 4, 8, 9, 5, 4, 11, 16, 9, 14, 13, 5, 14, 4, 24, 15, 16, 12, 4, 15, 7, 9, 21, 16, 7, 21, 5, 12, 4, 7, 9, 14, 4, 14, 5, 5, 24, 4, 10, 9, 6, 5, 13, 8, 24, 5, 13, 7, 25, 10, 15, 10, 6, 22, 4, 25, 5, 6, 20, 5, 5, 9, 4, 58, 7, 37, 23, 4, 49, 22, 32, 8, 13, 17, 11, 4, 7, 9, 14, 4, 32, 5, 9, 12, 8, 13, 55, 15, 8, 20, 26, 2],
												        [4, 40, 47, 54, 32, 4, 10, 12, 4, 14, 5, 12, 10, 21, 9, 5, 14, 4, 6, 8, 4, 24, 13, 5, 39, 6, 13, 7, 10, 9, 4, 14, 5, 5, 24, 4, 25, 10, 14, 10, 13, 5, 17, 6, 10, 8, 9, 7, 15, 4, 13, 5, 24, 13, 5, 12, 5, 9, 6, 7, 6, 10, 8, 9, 12, 4, 19, 13, 8, 18, 4, 16, 9, 15, 7, 25, 5, 15, 5, 14, 4, 6, 5, 37, 6, 4, 25, 22, 4, 46, 8, 10, 9, 6, 15, 22, 4, 17, 8, 9, 14, 10, 6, 10, 8, 9, 10, 9, 21, 4, 8, 9, 4, 25, 8, 6, 11, 4, 15, 5, 19, 6, 4, 7, 9, 14, 4, 13, 10, 21, 11, 6, 4, 17, 8, 9, 6, 5, 37, 6, 4, 10, 9, 4, 7, 15, 15, 4, 15, 7, 22, 5, 13, 12, 26, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
												        [4, 32, 11, 5, 4, 45, 16, 10, 17, 28, 4, 25, 13, 8, 20, 9, 4, 19, 8, 37, 4, 46, 16, 18, 24, 12, 4, 8, 27, 5, 13, 4, 6, 11, 5, 4, 15, 7, 57, 22, 4, 14, 8, 21, 26, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
												    ],
												    '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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
												        [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
												    ]
												}
												# fmt: on

												self.tokenizer_integration_test_util(
												    expected_encoding=__snake_case			,model_name='microsoft/speecht5_asr'			,revision='c5ef64c71905caeccde0e4462ef3f9077224c524'			,sequences=__snake_case			,)








import json
from typing import List, Optional, Tuple

from tokenizers import normalizers

from ...tokenization_utils_fast import PreTrainedTokenizerFast
from ...utils import logging
from .tokenization_distilbert import DistilBertTokenizer


snake_case							:       Dict     			=      logging.get_logger(__name__)

snake_case							:       Dict     			=      {'''vocab_file''': '''vocab.txt''', '''tokenizer_file''': '''tokenizer.json'''}

snake_case							:       List[Any]     			=      {
    '''vocab_file''': {
        '''distilbert-base-uncased''': '''https://huggingface.co/distilbert-base-uncased/resolve/main/vocab.txt''',
        '''distilbert-base-uncased-distilled-squad''': (
            '''https://huggingface.co/distilbert-base-uncased-distilled-squad/resolve/main/vocab.txt'''
        ),
        '''distilbert-base-cased''': '''https://huggingface.co/distilbert-base-cased/resolve/main/vocab.txt''',
        '''distilbert-base-cased-distilled-squad''': (
            '''https://huggingface.co/distilbert-base-cased-distilled-squad/resolve/main/vocab.txt'''
        ),
        '''distilbert-base-german-cased''': '''https://huggingface.co/distilbert-base-german-cased/resolve/main/vocab.txt''',
        '''distilbert-base-multilingual-cased''': (
            '''https://huggingface.co/distilbert-base-multilingual-cased/resolve/main/vocab.txt'''
        ),
    },
    '''tokenizer_file''': {
        '''distilbert-base-uncased''': '''https://huggingface.co/distilbert-base-uncased/resolve/main/tokenizer.json''',
        '''distilbert-base-uncased-distilled-squad''': (
            '''https://huggingface.co/distilbert-base-uncased-distilled-squad/resolve/main/tokenizer.json'''
        ),
        '''distilbert-base-cased''': '''https://huggingface.co/distilbert-base-cased/resolve/main/tokenizer.json''',
        '''distilbert-base-cased-distilled-squad''': (
            '''https://huggingface.co/distilbert-base-cased-distilled-squad/resolve/main/tokenizer.json'''
        ),
        '''distilbert-base-german-cased''': (
            '''https://huggingface.co/distilbert-base-german-cased/resolve/main/tokenizer.json'''
        ),
        '''distilbert-base-multilingual-cased''': (
            '''https://huggingface.co/distilbert-base-multilingual-cased/resolve/main/tokenizer.json'''
        ),
    },
}

snake_case							:       int     			=      {
    '''distilbert-base-uncased''': 5_12,
    '''distilbert-base-uncased-distilled-squad''': 5_12,
    '''distilbert-base-cased''': 5_12,
    '''distilbert-base-cased-distilled-squad''': 5_12,
    '''distilbert-base-german-cased''': 5_12,
    '''distilbert-base-multilingual-cased''': 5_12,
}


snake_case							:       Union[str, Any]     			=      {
    '''distilbert-base-uncased''': {'''do_lower_case''': True},
    '''distilbert-base-uncased-distilled-squad''': {'''do_lower_case''': True},
    '''distilbert-base-cased''': {'''do_lower_case''': False},
    '''distilbert-base-cased-distilled-squad''': {'''do_lower_case''': False},
    '''distilbert-base-german-cased''': {'''do_lower_case''': False},
    '''distilbert-base-multilingual-cased''': {'''do_lower_case''': False},
}







class        snake_case_   (lowerCamelCase_      ):
					UpperCAmelCase__					:    Any          =			VOCAB_FILES_NAMES
					UpperCAmelCase__					:    str          =			PRETRAINED_VOCAB_FILES_MAP
					UpperCAmelCase__					:    int          =			PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
					UpperCAmelCase__					:    Tuple          =			PRETRAINED_INIT_CONFIGURATION
					UpperCAmelCase__					:    Optional[Any]          =			['''input_ids''', '''attention_mask''']
					UpperCAmelCase__					:    Optional[int]          =			DistilBertTokenizer
					def __init__(      self   :Dict			,__snake_case   :Dict=None			,__snake_case   :Optional[Any]=None			,__snake_case   :Optional[Any]=True			,__snake_case   :List[Any]="[UNK]"			,__snake_case   :str="[SEP]"			,__snake_case   :List[Any]="[PAD]"			,__snake_case   :Tuple="[CLS]"			,__snake_case   :Optional[int]="[MASK]"			,__snake_case   :Dict=True			,__snake_case   :Dict=None			,**__snake_case   :List[Any]			,)					->    Optional[int]:
												super().__init__(
												    __snake_case			,tokenizer_file=__snake_case			,do_lower_case=__snake_case			,unk_token=__snake_case			,sep_token=__snake_case			,pad_token=__snake_case			,cls_token=__snake_case			,mask_token=__snake_case			,tokenize_chinese_chars=__snake_case			,strip_accents=__snake_case			,**__snake_case			,)

												a__             =     json.loads(self.backend_tokenizer.normalizer.__getstate__()      )
												if (
												    normalizer_state.get('lowercase'			,__snake_case      ) != do_lower_case
												    or normalizer_state.get('strip_accents'			,__snake_case      ) != strip_accents
												    or normalizer_state.get('handle_chinese_chars'			,__snake_case      ) != tokenize_chinese_chars
												):
																			a__             =     getattr(__snake_case			,normalizer_state.pop('type'      )      )
																			a__             =     do_lower_case
																			a__             =     strip_accents
																			a__             =     tokenize_chinese_chars
																			a__             =     normalizer_class(**__snake_case      )

												a__             =     do_lower_case
					def  lowerCamelCase__(      self   :Any			,__snake_case   :List[str]			,__snake_case   :int=None      )					->    Dict:
												a__             =     [self.cls_token_id] + token_ids_a + [self.sep_token_id]

												if token_ids_a:
																			output += token_ids_a + [self.sep_token_id]

												return output
					def  lowerCamelCase__(      self   :List[str]			,__snake_case   :List[int]			,__snake_case   :Optional[List[int]] = None      )					->    List[int]:
												a__             =     [self.sep_token_id]
												a__             =     [self.cls_token_id]
												if token_ids_a is None:
																			return len(cls + token_ids_a + sep      ) * [0]
												return len(cls + token_ids_a + sep      ) * [0] + len(token_ids_a + sep      ) * [1]



					def  lowerCamelCase__(      self   :Union[str, Any]			,__snake_case   :str			,__snake_case   :Optional[str] = None      )					->    Tuple[str]:
												a__             =     self._tokenizer.model.save(__snake_case			,name=__snake_case      )
												return tuple(__snake_case      )




