



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


lowercase_								=     get_tests_dir("""fixtures/test_sentencepiece_bpe_char.model""")
@require_sentencepiece
@require_tokenizers
class 				_snake_case			(					_SCREAMING_SNAKE_CASE    ,	unittest.TestCase):
				UpperCamelCase__     		=SpeechTaTokenizer
				UpperCamelCase__     		=False
				UpperCamelCase__     		=True




				def 							A__      (						self					:						Optional[Any]						):
							super().setUp()

							# We have a SentencePiece fixture for testing
							lowercase__					  =				SpeechTaTokenizer(A_						)

							lowercase__					  =				AddedToken("<mask>",					lstrip=A_,					rstrip=A_						)
							lowercase__					  =				mask_token
							tokenizer.add_special_tokens({"mask_token": mask_token}						)
							tokenizer.add_tokens(["<ctc_blank>"]						)

							tokenizer.save_pretrained(self.tmpdirname						)




				def 							A__      (						self					:						Optional[Any],					__lowercase					:						Optional[int]						):
							lowercase__					  =				"this is a test"
							lowercase__					  =				"this is a test"
							return input_text, output_text




				def 							A__      (						self					:						Any,					__lowercase					:						List[str],					__lowercase					:						Optional[Any]=False,					__lowercase					:						Optional[Any]=20,					__lowercase					:						Union[str, Any]=5						):
							lowercase__  ,       lowercase__					  =				self.get_input_output_texts(A_						)
							lowercase__					  =				tokenizer.encode(A_,					add_special_tokens=A_						)
							lowercase__					  =				tokenizer.decode(A_,					clean_up_tokenization_spaces=A_						)
							return text, ids




				def 							A__      (						self					:						int						):
							lowercase__					  =				"<pad>"
							lowercase__					  =				1

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




				def 							A__      (						self					:						str						):
							lowercase__					  =				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(A_						),					81						)




				def 							A__      (						self					:						Any						):
							self.assertEqual(self.get_tokenizer().vocab_size,					79						)




				def 							A__      (						self					:						Optional[Any]						):
							lowercase__					  =				self.get_tokenizers(do_lower_case=A_						)
							for tokenizer in tokenizers:
										with self.subTest(F'''{tokenizer.__class__.__name__}'''						):
													lowercase__					  =				tokenizer.vocab_size
													lowercase__					  =				len(A_						)

													self.assertNotEqual(A_,					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)

													lowercase__					  =				["aaaaa bbbbbb", "cccccccccdddddddd"]
													lowercase__					  =				tokenizer.add_tokens(A_						)
													lowercase__					  =				tokenizer.vocab_size
													lowercase__					  =				len(A_						)

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

													lowercase__					  =				tokenizer.encode("aaaaa bbbbbb low cccccccccdddddddd l",					add_special_tokens=A_						)

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

													lowercase__					  =				{"eos_token": ">>>>|||<||<<|<<", "pad_token": "<<<<<|||>|>>>>|>"}
													lowercase__					  =				tokenizer.add_special_tokens(A_						)
													lowercase__					  =				tokenizer.vocab_size
													lowercase__					  =				len(A_						)

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

													lowercase__					  =				tokenizer.encode(
													    ">>>>|||<||<<|<< aaaaabbbbbb low cccccccccdddddddd <<<<<|||>|>>>>|> l",					add_special_tokens=A_						)

													self.assertGreaterEqual(len(A_						),					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 							A__      (						self					:						List[Any]						):
							pass




				def 							A__      (						self					:						Dict						):
							pass




				def 							A__      (						self					:						Dict						):
							lowercase__					  =				self.get_tokenizer()

							lowercase__					  =				tokenizer.tokenize("This is a test"						)
							# fmt: off
							self.assertListEqual(A_,					[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(A_						),					[4, 32, 11, 10, 12, 4, 10, 12, 4, 7, 4, 6, 5, 12, 6],					)

							lowercase__					  =				tokenizer.tokenize("I was born in 92000, and this is falsé."						)
							self.assertListEqual(
							    A_,					[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", "é", "."]						)

							lowercase__					  =				tokenizer.convert_tokens_to_ids(A_						)
							# fmt: off
							self.assertListEqual(A_,					[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

							lowercase__					  =				tokenizer.convert_ids_to_tokens(A_						)
							self.assertListEqual(
							    A_,					[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 							A__      (						self					:						Optional[int]						):
							lowercase__					  =				[
							    "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
							lowercase__					  =				{
							    "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=A_,					model_name="microsoft/speecht5_asr",					revision="c5ef64c71905caeccde0e4462ef3f9077224c524",					sequences=A_,					)









import argparse
import os

import numpy as np
import tensorflow as tf
import torch

from transformers import BertModel



def __lowerCAmelCase (     SCREAMING_SNAKE_CASE_						,  SCREAMING_SNAKE_CASE_						,  SCREAMING_SNAKE_CASE_  ):
			lowercase__					  =				("dense.weight", "attention.self.query", "attention.self.key", "attention.self.value")

			lowercase__					  =				(
			    ("layer.", "layer_"),
			    ("word_embeddings.weight", "word_embeddings"),
			    ("position_embeddings.weight", "position_embeddings"),
			    ("token_type_embeddings.weight", "token_type_embeddings"),
			    (".", "/"),
			    ("LayerNorm/weight", "LayerNorm/gamma"),
			    ("LayerNorm/bias", "LayerNorm/beta"),
			    ("weight", "kernel"),
			)

			if not os.path.isdir(SCREAMING_SNAKE_CASE_  ):
						os.makedirs(SCREAMING_SNAKE_CASE_  )

			lowercase__					  =				model.state_dict()

			def to_tf_var_name(SCREAMING_SNAKE_CASE_  ):
						for patt, repl in iter(SCREAMING_SNAKE_CASE_  ):
									lowercase__					  =				name.replace(SCREAMING_SNAKE_CASE_						,  SCREAMING_SNAKE_CASE_  )
						return f'''bert/{name}'''

			def create_tf_var(SCREAMING_SNAKE_CASE_						,  SCREAMING_SNAKE_CASE_						,  SCREAMING_SNAKE_CASE_  ):
						lowercase__					  =				tf.dtypes.as_dtype(tensor.dtype  )
						lowercase__					  =				tf.get_variable(dtype=SCREAMING_SNAKE_CASE_						,  shape=tensor.shape						,  name=SCREAMING_SNAKE_CASE_						,  initializer=tf.zeros_initializer()  )
						session.run(tf.variables_initializer([tf_var]  )  )
						session.run(SCREAMING_SNAKE_CASE_  )
						return tf_var

			tf.reset_default_graph()
			with tf.Session() as session:
						for var_name in state_dict:
									lowercase__					  =				to_tf_var_name(SCREAMING_SNAKE_CASE_  )
									lowercase__					  =				state_dict[var_name].numpy()
									if any(x in var_name for x in tensors_to_transpose  ):
												lowercase__					  =				torch_tensor.T
									lowercase__					  =				create_tf_var(tensor=SCREAMING_SNAKE_CASE_						,  name=SCREAMING_SNAKE_CASE_						,  session=SCREAMING_SNAKE_CASE_  )
									tf.keras.backend.set_value(SCREAMING_SNAKE_CASE_						,  SCREAMING_SNAKE_CASE_  )
									lowercase__					  =				session.run(SCREAMING_SNAKE_CASE_  )
									print(f'''Successfully created {tf_name}: {np.allclose(SCREAMING_SNAKE_CASE_						,  SCREAMING_SNAKE_CASE_  )}'''  )

						lowercase__					  =				tf.train.Saver(tf.trainable_variables()  )
						saver.save(SCREAMING_SNAKE_CASE_						,  os.path.join(SCREAMING_SNAKE_CASE_						,  model_name.replace("-"						,  "_"  ) + ".ckpt"  )  )



def __lowerCAmelCase (     SCREAMING_SNAKE_CASE_=None  ):
			lowercase__					  =				argparse.ArgumentParser()
			parser.add_argument("--model_name"						,  type=SCREAMING_SNAKE_CASE_						,  required=SCREAMING_SNAKE_CASE_						,  help="model name e.g. bert-base-uncased"  )
			parser.add_argument(
			    "--cache_dir"						,  type=SCREAMING_SNAKE_CASE_						,  default=SCREAMING_SNAKE_CASE_						,  required=SCREAMING_SNAKE_CASE_						,  help="Directory containing pytorch model"  )
			parser.add_argument("--pytorch_model_path"						,  type=SCREAMING_SNAKE_CASE_						,  required=SCREAMING_SNAKE_CASE_						,  help="/path/to/<pytorch-model-name>.bin"  )
			parser.add_argument("--tf_cache_dir"						,  type=SCREAMING_SNAKE_CASE_						,  required=SCREAMING_SNAKE_CASE_						,  help="Directory in which to save tensorflow model"  )
			lowercase__					  =				parser.parse_args(SCREAMING_SNAKE_CASE_  )

			lowercase__					  =				BertModel.from_pretrained(
			    pretrained_model_name_or_path=args.model_name						,  state_dict=torch.load(args.pytorch_model_path  )						,  cache_dir=args.cache_dir						,  )

			convert_pytorch_checkpoint_to_tf(model=SCREAMING_SNAKE_CASE_						,  ckpt_dir=args.tf_cache_dir						,  model_name=args.model_name  )


if __name__ == "__main__":
							main()




