'''simple docstring'''






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


SCREAMING_SNAKE_CASE_	   =			get_tests_dir('fixtures/test_sentencepiece_bpe_char.model')




@require_sentencepiece
@require_tokenizers
class    a (       __lowerCAmelCase						,  unittest.TestCase				):



  """simple docstring"""
  __lowerCAmelCase				      =					SpeechTaTokenizer
  __lowerCAmelCase				      =					False
  __lowerCAmelCase				      =					True







  def    lowercase_  (							self					):

    '''simple docstring'''







    super().setUp()

    # We have a SentencePiece fixture for testing
    __UpperCAmelCase:					List[str]		= SpeechTaTokenizer(snake_case_					)

    __UpperCAmelCase:					Optional[Any]		= AddedToken("""<mask>"""   ,    lstrip=snake_case_   ,    rstrip=snake_case_					)
    __UpperCAmelCase:					Any		= mask_token
    tokenizer.add_special_tokens({"""mask_token""": mask_token}					)
    tokenizer.add_tokens(["""<ctc_blank>"""]					)

    tokenizer.save_pretrained(self.tmpdirname					)







  def    lowercase_  (							self   ,    snake_case_					):

    '''simple docstring'''







    __UpperCAmelCase:					List[Any]		= """this is a test"""
    __UpperCAmelCase:					Optional[Any]		= """this is a test"""
    return input_text, output_text







  def    lowercase_  (							self   ,    snake_case_   ,    snake_case_=False   ,    snake_case_=20   ,    snake_case_=5					):

    '''simple docstring'''







    __UpperCAmelCase, __UpperCAmelCase:					Union[str, Any]		= self.get_input_output_texts(snake_case_					)
    __UpperCAmelCase:					str		= tokenizer.encode(snake_case_   ,    add_special_tokens=snake_case_					)
    __UpperCAmelCase:					Any		= tokenizer.decode(snake_case_   ,    clean_up_tokenization_spaces=snake_case_					)
    return text, ids







  def    lowercase_  (							self					):

    '''simple docstring'''







    __UpperCAmelCase:					int		= """<pad>"""
    __UpperCAmelCase:					List[Any]		= 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    lowercase_  (							self					):

    '''simple docstring'''







    __UpperCAmelCase:					str		= 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    lowercase_  (							self					):

    '''simple docstring'''







    self.assertEqual(self.get_tokenizer().vocab_size   ,    79					)







  def    lowercase_  (							self					):

    '''simple docstring'''







    __UpperCAmelCase:					Union[str, Any]		= self.get_tokenizers(do_lower_case=snake_case_					)
    for tokenizer in tokenizers:
      with self.subTest(F'''{tokenizer.__class__.__name__}'''					):
        __UpperCAmelCase:					int		= tokenizer.vocab_size
        __UpperCAmelCase:					str		= 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)

        __UpperCAmelCase:					Union[str, Any]		= ["""aaaaa bbbbbb""", """cccccccccdddddddd"""]
        __UpperCAmelCase:					Optional[Any]		= tokenizer.add_tokens(snake_case_					)
        __UpperCAmelCase:					Union[str, Any]		= tokenizer.vocab_size
        __UpperCAmelCase:					Dict		= 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_					)					)

        __UpperCAmelCase:					Any		= 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					)

        __UpperCAmelCase:					List[str]		= {"""eos_token""": """>>>>|||<||<<|<<""", """pad_token""": """<<<<<|||>|>>>>|>"""}
        __UpperCAmelCase:					int		= tokenizer.add_special_tokens(snake_case_					)
        __UpperCAmelCase:					List[str]		= tokenizer.vocab_size
        __UpperCAmelCase:					Dict		= 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_					)					)

        __UpperCAmelCase:					List[Any]		= 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    lowercase_  (							self					):

    '''simple docstring'''







    pass







  def    lowercase_  (							self					):

    '''simple docstring'''







    pass







  def    lowercase_  (							self					):

    '''simple docstring'''







    __UpperCAmelCase:					Union[str, Any]		= self.get_tokenizer()

    __UpperCAmelCase:					List[str]		= 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]   ,    )

    __UpperCAmelCase:					Any		= 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""", """é""", """."""]					)

    __UpperCAmelCase:					List[Any]		= 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

    __UpperCAmelCase:					Optional[int]		= 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    lowercase_  (							self					):

    '''simple docstring'''







    __UpperCAmelCase:					List[Any]		= [
        """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
    __UpperCAmelCase:					str		= {
        """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_   ,    )
'''simple docstring'''






from __future__ import annotations

import math
import random
from collections.abc import Collection
from typing import overload




class    a :



  """simple docstring"""







  def __init__(							self   ,    snake_case_ = None					):

    '''simple docstring'''







    if components is None:
      __UpperCAmelCase:					List[Any]		= []
    __UpperCAmelCase:					Tuple		= list(snake_case_					)







  def __len__(							self					):

    '''simple docstring'''







    return len(self.__components					)







  def __str__(							self					):

    '''simple docstring'''







    return "(" + ",".join(map(snake_case_   ,    self.__components					)					) + ")"







  def __add__(							self   ,    snake_case_					):

    '''simple docstring'''







    __UpperCAmelCase:					int		= len(self					)
    if size == len(snake_case_					):
      __UpperCAmelCase:					str		= [self.__components[i] + other.component(snake_case_					) for i in range(snake_case_					)]
      return Vector(snake_case_					)
    else:
      raise Exception("""must have the same size"""					)







  def __sub__(							self   ,    snake_case_					):

    '''simple docstring'''







    __UpperCAmelCase:					Dict		= len(self					)
    if size == len(snake_case_					):
      __UpperCAmelCase:					Dict		= [self.__components[i] - other.component(snake_case_					) for i in range(snake_case_					)]
      return Vector(snake_case_					)
    else:  # error case
      raise Exception("""must have the same size"""					)







  @overload
  def __mul__(							self   ,    snake_case_					):

    '''simple docstring'''







    ...







  @overload
  def __mul__(							self   ,    snake_case_					):

    '''simple docstring'''







    ...







  def __mul__(							self   ,    snake_case_					):

    '''simple docstring'''







    if isinstance(snake_case_   ,    (float, int)					):
      __UpperCAmelCase:					str		= [c * other for c in self.__components]
      return Vector(snake_case_					)
    elif isinstance(snake_case_   ,    snake_case_					) and len(self					) == len(snake_case_					):
      __UpperCAmelCase:					Dict		= len(self					)
      __UpperCAmelCase:					List[str]		= [self.__components[i] * other.component(snake_case_					) for i in range(snake_case_					)]
      return sum(snake_case_					)
    else:  # error case
      raise Exception("""invalid operand!"""					)







  def    lowercase_  (							self					):

    '''simple docstring'''







    return Vector(self.__components					)







  def    lowercase_  (							self   ,    snake_case_					):

    '''simple docstring'''







    if isinstance(snake_case_   ,    snake_case_					) and -len(self.__components					) <= i < len(self.__components					):
      return self.__components[i]
    else:
      raise Exception("""index out of range"""					)







  def    lowercase_  (							self   ,    snake_case_   ,    snake_case_					):

    '''simple docstring'''







    assert -len(self.__components					) <= pos < len(self.__components					)
    __UpperCAmelCase:					List[str]		= value







  def    lowercase_  (							self					):

    '''simple docstring'''







    if len(self.__components					) == 0:
      raise Exception("""Vector is empty"""					)
    __UpperCAmelCase:					Optional[Any]		= [c**2 for c in self.__components]
    return math.sqrt(sum(snake_case_					)					)







  def    lowercase_  (							self   ,    snake_case_   ,    snake_case_ = False					):

    '''simple docstring'''







    __UpperCAmelCase:					List[Any]		= self * other
    __UpperCAmelCase:					Any		= self.euclidean_length() * other.euclidean_length()
    if deg:
      return math.degrees(math.acos(num / den					)					)
    else:
      return math.acos(num / den					)






def  UpperCamelCase__					(					_lowercase    :				int     )							->	Vector:
  assert isinstance(_lowercase   ,    _lowercase     )
  return Vector([0] * dimension     )






def  UpperCamelCase__					(					_lowercase    :				int   ,    _lowercase    :				int     )							->	Vector:
  assert isinstance(_lowercase   ,    _lowercase     ) and (isinstance(_lowercase   ,    _lowercase     ))
  __UpperCAmelCase:					int		= [0] * dimension
  __UpperCAmelCase:					int		= 1
  return Vector(_lowercase     )






def  UpperCamelCase__					(					_lowercase    :				float   ,    _lowercase    :				Vector   ,    _lowercase    :				Vector     )							->	Vector:
  assert (
      isinstance(_lowercase   ,    _lowercase     )
      and isinstance(_lowercase   ,    _lowercase     )
      and (isinstance(_lowercase   ,    (int, float)     ))
  )
  return x * scalar + y






def  UpperCamelCase__					(					_lowercase    :				int   ,    _lowercase    :				int   ,    _lowercase    :				int     )							->	Vector:
  random.seed(_lowercase     )
  __UpperCAmelCase:					str		= [random.randint(_lowercase   ,    _lowercase     ) for _ in range(_lowercase     )]
  return Vector(_lowercase     )




class    a :



  """simple docstring"""







  def __init__(							self   ,    snake_case_   ,    snake_case_   ,    snake_case_					):

    '''simple docstring'''







    __UpperCAmelCase:					List[str]		= matrix
    __UpperCAmelCase:					Dict		= w
    __UpperCAmelCase:					Tuple		= h







  def __str__(							self					):

    '''simple docstring'''







    __UpperCAmelCase:					Optional[int]		= """"""
    for i in range(self.__height					):
      ans += "|"
      for j in range(self.__width					):
        if j < self.__width - 1:
          ans += str(self.__matrix[i][j]					) + ","
        else:
          ans += str(self.__matrix[i][j]					) + "|\n"
    return ans







  def __add__(							self   ,    snake_case_					):

    '''simple docstring'''







    if self.__width == other.width() and self.__height == other.height():
      __UpperCAmelCase:					List[str]		= []
      for i in range(self.__height					):
        __UpperCAmelCase:					List[Any]		= [
            self.__matrix[i][j] + other.component(snake_case_   ,    snake_case_					)
            for j in range(self.__width					)
        ]
        matrix.append(snake_case_					)
      return Matrix(snake_case_   ,    self.__width   ,    self.__height					)
    else:
      raise Exception("""matrix must have the same dimension!"""					)







  def __sub__(							self   ,    snake_case_					):

    '''simple docstring'''







    if self.__width == other.width() and self.__height == other.height():
      __UpperCAmelCase:					int		= []
      for i in range(self.__height					):
        __UpperCAmelCase:					Any		= [
            self.__matrix[i][j] - other.component(snake_case_   ,    snake_case_					)
            for j in range(self.__width					)
        ]
        matrix.append(snake_case_					)
      return Matrix(snake_case_   ,    self.__width   ,    self.__height					)
    else:
      raise Exception("""matrices must have the same dimension!"""					)







  @overload
  def __mul__(							self   ,    snake_case_					):

    '''simple docstring'''







    ...







  @overload
  def __mul__(							self   ,    snake_case_					):

    '''simple docstring'''







    ...







  def __mul__(							self   ,    snake_case_					):

    '''simple docstring'''







    if isinstance(snake_case_   ,    snake_case_					):  # matrix-vector
      if len(snake_case_					) == self.__width:
        __UpperCAmelCase:					Optional[Any]		= zero_vector(self.__height					)
        for i in range(self.__height					):
          __UpperCAmelCase:					Dict		= [
              self.__matrix[i][j] * other.component(snake_case_					)
              for j in range(self.__width					)
          ]
          ans.change_component(snake_case_   ,    sum(snake_case_					)					)
        return ans
      else:
        raise Exception(
            """vector must have the same size as the """
            """number of columns of the matrix!"""					)
    elif isinstance(snake_case_   ,    (int, float)					):  # matrix-scalar
      __UpperCAmelCase:					Dict		= [
          [self.__matrix[i][j] * other for j in range(self.__width					)]
          for i in range(self.__height					)
      ]
      return Matrix(snake_case_   ,    self.__width   ,    self.__height					)
    return None







  def    lowercase_  (							self					):

    '''simple docstring'''







    return self.__height







  def    lowercase_  (							self					):

    '''simple docstring'''







    return self.__width







  def    lowercase_  (							self   ,    snake_case_   ,    snake_case_					):

    '''simple docstring'''







    if 0 <= x < self.__height and 0 <= y < self.__width:
      return self.__matrix[x][y]
    else:
      raise Exception("""change_component: indices out of bounds"""					)







  def    lowercase_  (							self   ,    snake_case_   ,    snake_case_   ,    snake_case_					):

    '''simple docstring'''







    if 0 <= x < self.__height and 0 <= y < self.__width:
      __UpperCAmelCase:					int		= value
    else:
      raise Exception("""change_component: indices out of bounds"""					)







  def    lowercase_  (							self   ,    snake_case_   ,    snake_case_					):

    '''simple docstring'''







    if self.__height != self.__width:
      raise Exception("""Matrix is not square"""					)
    __UpperCAmelCase:					int		= self.__matrix[:x] + self.__matrix[x + 1 :]
    for i in range(len(snake_case_					)					):
      __UpperCAmelCase:					Optional[Any]		= minor[i][:y] + minor[i][y + 1 :]
    return Matrix(snake_case_   ,    self.__width - 1   ,    self.__height - 1					).determinant()







  def    lowercase_  (							self   ,    snake_case_   ,    snake_case_					):

    '''simple docstring'''







    if self.__height != self.__width:
      raise Exception("""Matrix is not square"""					)
    if 0 <= x < self.__height and 0 <= y < self.__width:
      return (-1) ** (x + y) * self.minor(snake_case_   ,    snake_case_					)
    else:
      raise Exception("""Indices out of bounds"""					)







  def    lowercase_  (							self					):

    '''simple docstring'''







    if self.__height != self.__width:
      raise Exception("""Matrix is not square"""					)
    if self.__height < 1:
      raise Exception("""Matrix has no element"""					)
    elif self.__height == 1:
      return self.__matrix[0][0]
    elif self.__height == 2:
      return (
          self.__matrix[0][0] * self.__matrix[1][1]
          - self.__matrix[0][1] * self.__matrix[1][0]
      )
    else:
      __UpperCAmelCase:					Any		= [
          self.__matrix[0][y] * self.cofactor(0   ,    snake_case_					) for y in range(self.__width					)
      ]
      return sum(snake_case_					)






def  UpperCamelCase__					(					_lowercase    :				int     )							->	Matrix:
  __UpperCAmelCase:					list[list[float]]		= [[0] * n for _ in range(_lowercase     )]
  return Matrix(_lowercase   ,    _lowercase   ,    _lowercase     )







def  UpperCamelCase__					(					_lowercase    :				int   ,    _lowercase    :				int   ,    _lowercase    :				int   ,    _lowercase    :				int     )							->	Matrix:
  random.seed(_lowercase     )
  __UpperCAmelCase:					list[list[float]]		= [
      [random.randint(_lowercase   ,    _lowercase     ) for _ in range(_lowercase     )] for _ in range(_lowercase     )
  ]
  return Matrix(_lowercase   ,    _lowercase   ,    _lowercase     )