


"""simple docstring"""






from collections import OrderedDict
from typing import Any, Mapping, Optional

from ... import PreTrainedTokenizer
from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig, OnnxConfigWithPast, OnnxSeqaSeqConfigWithPast
from ...onnx.utils import compute_effective_axis_dimension
from ...utils import TensorType, is_torch_available, logging


UpperCamelCase__							:Optional[int]       =  logging.get_logger(__name__)

UpperCamelCase__							:str       =  {
    """facebook/mbart-large-cc25""": """https://huggingface.co/facebook/mbart-large-cc25/resolve/main/config.json""",
    # See all MBART models at https://huggingface.co/models?filter=mbart
}






class     A(     __UpperCAmelCase		):

  """simple docstring"""





  A         =       "mbart"
  A         =       ["past_key_values"]
  A         =       {"num_attention_heads": "encoder_attention_heads", "hidden_size": "d_model"}
  def __init__(   self				,							SCREAMING_SNAKE_CASE__=5_02_65				,							SCREAMING_SNAKE_CASE__=10_24				,							SCREAMING_SNAKE_CASE__=12				,							SCREAMING_SNAKE_CASE__=40_96				,							SCREAMING_SNAKE_CASE__=16				,							SCREAMING_SNAKE_CASE__=12				,							SCREAMING_SNAKE_CASE__=40_96				,							SCREAMING_SNAKE_CASE__=16				,							SCREAMING_SNAKE_CASE__=0.0				,							SCREAMING_SNAKE_CASE__=0.0				,							SCREAMING_SNAKE_CASE__=True				,							SCREAMING_SNAKE_CASE__=True				,							SCREAMING_SNAKE_CASE__="gelu"				,							SCREAMING_SNAKE_CASE__=10_24				,							SCREAMING_SNAKE_CASE__=0.1				,							SCREAMING_SNAKE_CASE__=0.0				,							SCREAMING_SNAKE_CASE__=0.0				,							SCREAMING_SNAKE_CASE__=0.0_2				,							SCREAMING_SNAKE_CASE__=0.0				,							SCREAMING_SNAKE_CASE__=False				,							SCREAMING_SNAKE_CASE__=1				,							SCREAMING_SNAKE_CASE__=0				,							SCREAMING_SNAKE_CASE__=2				,							SCREAMING_SNAKE_CASE__=2				,							**SCREAMING_SNAKE_CASE__				,							)			->  Optional[Any]:

     """simple docstring"""



     _UpperCamelCase				:Dict				    =  vocab_size
     _UpperCamelCase				:Dict				    =  max_position_embeddings
     _UpperCamelCase				:Any				    =  d_model
     _UpperCamelCase				:List[str]				    =  encoder_ffn_dim
     _UpperCamelCase				:Union[str, Any]				    =  encoder_layers
     _UpperCamelCase				:List[str]				    =  encoder_attention_heads
     _UpperCamelCase				:List[Any]				    =  decoder_ffn_dim
     _UpperCamelCase				:Optional[int]				    =  decoder_layers
     _UpperCamelCase				:List[str]				    =  decoder_attention_heads
     _UpperCamelCase				:Any				    =  dropout
     _UpperCamelCase				:int				    =  attention_dropout
     _UpperCamelCase				:str				    =  activation_dropout
     _UpperCamelCase				:List[str]				    =  activation_function
     _UpperCamelCase				:Tuple				    =  init_std
     _UpperCamelCase				:str				    =  encoder_layerdrop
     _UpperCamelCase				:Tuple				    =  decoder_layerdrop
     _UpperCamelCase				:Optional[Any]				    =  classifier_dropout
     _UpperCamelCase				:List[Any]				    =  use_cache
     _UpperCamelCase				:List[str]				    =  encoder_layers
     _UpperCamelCase				:Any				    =  scale_embedding  # scale factor will be sqrt(d_model) if True
     super().__init__(
         pad_token_id=lowercase_				,							bos_token_id=lowercase_				,							eos_token_id=lowercase_				,							is_encoder_decoder=lowercase_				,							forced_eos_token_id=lowercase_				,							**lowercase_				,							)






class     A(     __UpperCAmelCase		):

  """simple docstring"""





  @property
  def      _UpperCamelCase(   self      )			->  Mapping[str, Mapping[int, str]]:

     """simple docstring"""



     if self.task in ["default", "seq2seq-lm"]:
        _UpperCamelCase				:str				    =  OrderedDict(
            [
                ('''input_ids''', {0: '''batch''', 1: '''encoder_sequence'''}),
                ('''attention_mask''', {0: '''batch''', 1: '''encoder_sequence'''}),
            ]      )

        if self.use_past:
           _UpperCamelCase				:List[Any]				    =  {0: '''batch'''}
           _UpperCamelCase				:List[str]				    =  {0: '''batch''', 1: '''past_decoder_sequence + sequence'''}
        else:
           _UpperCamelCase				:Optional[int]				    =  {0: '''batch''', 1: '''decoder_sequence'''}
           _UpperCamelCase				:List[str]				    =  {0: '''batch''', 1: '''decoder_sequence'''}

        if self.use_past:
           self.fill_with_past_key_values_(lowercase_				,							direction='''inputs'''      )
     elif self.task == "causal-lm":
        # TODO: figure this case out.
        _UpperCamelCase				:int				    =  OrderedDict(
            [
                ('''input_ids''', {0: '''batch''', 1: '''encoder_sequence'''}),
                ('''attention_mask''', {0: '''batch''', 1: '''encoder_sequence'''}),
            ]      )
        if self.use_past:
           _UpperCamelCase				:List[Any]				    =  self.num_layers
           for i in range(lowercase_      ):
              _UpperCamelCase				:int				    =  {0: '''batch''', 2: '''past_sequence + sequence'''}
              _UpperCamelCase				:Dict				    =  {0: '''batch''', 2: '''past_sequence + sequence'''}
     else:
        _UpperCamelCase				:Any				    =  OrderedDict(
            [
                ('''input_ids''', {0: '''batch''', 1: '''encoder_sequence'''}),
                ('''attention_mask''', {0: '''batch''', 1: '''encoder_sequence'''}),
                ('''decoder_input_ids''', {0: '''batch''', 1: '''decoder_sequence'''}),
                ('''decoder_attention_mask''', {0: '''batch''', 1: '''decoder_sequence'''}),
            ]      )

     return common_inputs
  @property
  def      _UpperCamelCase(   self      )			->  Mapping[str, Mapping[int, str]]:

     """simple docstring"""



     if self.task in ["default", "seq2seq-lm"]:
        _UpperCamelCase				:List[Any]				    =  super().outputs
     else:
        _UpperCamelCase				:Optional[int]				    =  super(lowercase_				,							self      ).outputs
        if self.use_past:
           _UpperCamelCase				:Union[str, Any]				    =  self.num_layers
           for i in range(lowercase_      ):
              _UpperCamelCase				:List[str]				    =  {0: '''batch''', 2: '''past_sequence + sequence'''}
              _UpperCamelCase				:int				    =  {0: '''batch''', 2: '''past_sequence + sequence'''}
     return common_outputs
  def      _UpperCamelCase(   self				,							SCREAMING_SNAKE_CASE__				,							SCREAMING_SNAKE_CASE__ = -1				,							SCREAMING_SNAKE_CASE__ = -1				,							SCREAMING_SNAKE_CASE__ = False				,							SCREAMING_SNAKE_CASE__ = None				,							)			->  Mapping[str, Any]:

     """simple docstring"""



     _UpperCamelCase				:Optional[int]				    =  self._generate_dummy_inputs_for_sequence_classification_and_question_answering(
         lowercase_				,							lowercase_				,							lowercase_				,							lowercase_				,							lowercase_      )

     # Generate decoder inputs
     _UpperCamelCase				:Optional[Any]				    =  seq_length if not self.use_past else 1
     _UpperCamelCase				:Optional[int]				    =  self._generate_dummy_inputs_for_sequence_classification_and_question_answering(
         lowercase_				,							lowercase_				,							lowercase_				,							lowercase_				,							lowercase_      )
     _UpperCamelCase				:Any				    =  {f"decoder_{name}": tensor for name, tensor in decoder_inputs.items()}
     _UpperCamelCase				:Optional[Any]				    =  dict(**lowercase_				,							**lowercase_      )

     if self.use_past:
        if not is_torch_available():
           raise ValueError('''Cannot generate dummy past_keys inputs without PyTorch installed.'''      )
        else:
           import torch
        _UpperCamelCase				:Dict				    =  common_inputs['''input_ids'''].shape
        _UpperCamelCase				:Dict				    =  common_inputs['''decoder_input_ids'''].shape[1]
        _UpperCamelCase				:List[str]				    =  self.num_attention_heads
        _UpperCamelCase				:Optional[int]				    =  (
            batch,
            num_encoder_attention_heads,
            encoder_seq_length,
            self._config.hidden_size // num_encoder_attention_heads,
        )
        _UpperCamelCase				:List[Any]				    =  decoder_seq_length + 3
        _UpperCamelCase				:Optional[Any]				    =  (
            batch,
            num_decoder_attention_heads,
            decoder_past_length,
            self._config.hidden_size // num_decoder_attention_heads,
        )

        _UpperCamelCase				:List[Any]				    =  torch.cat(
            [common_inputs['''decoder_attention_mask'''], torch.ones(lowercase_				,							lowercase_      )]				,							dim=1      )

        _UpperCamelCase				:List[str]				    =  []
        # If the number of encoder and decoder layers are present in the model configuration, both are considered
        _UpperCamelCase				:Tuple				    =  self.num_layers
        _UpperCamelCase				:Union[str, Any]				    =  min(lowercase_				,							lowercase_      )
        _UpperCamelCase				:Optional[int]				    =  max(lowercase_				,							lowercase_      ) - min_num_layers
        _UpperCamelCase				:Union[str, Any]				    =  '''encoder''' if num_encoder_layers > num_decoder_layers else '''decoder'''

        for _ in range(lowercase_      ):
           common_inputs["past_key_values"].append(
               (
                   torch.zeros(lowercase_      ),
                   torch.zeros(lowercase_      ),
                   torch.zeros(lowercase_      ),
                   torch.zeros(lowercase_      ),
               )      )
        # TODO: test this.
        _UpperCamelCase				:Optional[int]				    =  encoder_shape if remaining_side_name == '''encoder''' else decoder_shape
        for _ in range(lowercase_				,							lowercase_      ):
           common_inputs["past_key_values"].append((torch.zeros(lowercase_      ), torch.zeros(lowercase_      ))      )
     return common_inputs
  def      _UpperCamelCase(   self				,							SCREAMING_SNAKE_CASE__				,							SCREAMING_SNAKE_CASE__ = -1				,							SCREAMING_SNAKE_CASE__ = -1				,							SCREAMING_SNAKE_CASE__ = False				,							SCREAMING_SNAKE_CASE__ = None				,							)			->  Mapping[str, Any]:

     """simple docstring"""



     _UpperCamelCase				:Any				    =  self._generate_dummy_inputs_for_sequence_classification_and_question_answering(
         lowercase_				,							lowercase_				,							lowercase_				,							lowercase_				,							lowercase_      )

     if self.use_past:
        if not is_torch_available():
           raise ValueError('''Cannot generate dummy past_keys inputs without PyTorch installed.'''      )
        else:
           import torch
        _UpperCamelCase				:Dict				    =  common_inputs['''input_ids'''].shape
        # Not using the same length for past_key_values
        _UpperCamelCase				:Optional[int]				    =  seqlen + 2
        _UpperCamelCase				:str				    =  self.num_layers
        _UpperCamelCase				:Optional[int]				    =  self.num_attention_heads
        _UpperCamelCase				:Union[str, Any]				    =  (
            batch,
            num_encoder_attention_heads,
            past_key_values_length,
            self._config.hidden_size // num_encoder_attention_heads,
        )

        _UpperCamelCase				:Optional[Any]				    =  common_inputs['''attention_mask'''].dtype
        _UpperCamelCase				:List[Any]				    =  torch.cat(
            [common_inputs['''attention_mask'''], torch.ones(lowercase_				,							lowercase_				,							dtype=lowercase_      )]				,							dim=1      )
        _UpperCamelCase				:List[str]				    =  [
            (torch.zeros(lowercase_      ), torch.zeros(lowercase_      )) for _ in range(lowercase_      )
        ]
     return common_inputs
  def      _UpperCamelCase(   self				,							SCREAMING_SNAKE_CASE__				,							SCREAMING_SNAKE_CASE__ = -1				,							SCREAMING_SNAKE_CASE__ = -1				,							SCREAMING_SNAKE_CASE__ = False				,							SCREAMING_SNAKE_CASE__ = None				,							)			->  Mapping[str, Any]:

     """simple docstring"""



     _UpperCamelCase				:str				    =  compute_effective_axis_dimension(
         lowercase_				,							fixed_dimension=OnnxConfig.default_fixed_batch				,							num_token_to_add=0      )

     # If dynamic axis (-1) we forward with a fixed dimension of 8 tokens to avoid optimizations made by ONNX
     _UpperCamelCase				:List[str]				    =  tokenizer.num_special_tokens_to_add(lowercase_      )
     _UpperCamelCase				:List[Any]				    =  compute_effective_axis_dimension(
         lowercase_				,							fixed_dimension=OnnxConfig.default_fixed_sequence				,							num_token_to_add=lowercase_      )

     # Generate dummy inputs according to compute batch and sequence
     _UpperCamelCase				:List[Any]				    =  [''' '''.join([tokenizer.unk_token]      ) * seq_length] * batch_size
     _UpperCamelCase				:int				    =  dict(tokenizer(lowercase_				,							return_tensors=lowercase_      )      )
     return common_inputs
  def      _UpperCamelCase(   self				,							SCREAMING_SNAKE_CASE__				,							SCREAMING_SNAKE_CASE__ = -1				,							SCREAMING_SNAKE_CASE__ = -1				,							SCREAMING_SNAKE_CASE__ = False				,							SCREAMING_SNAKE_CASE__ = None				,							)			->  Mapping[str, Any]:

     """simple docstring"""



     if self.task in ["default", "seq2seq-lm"]:
        _UpperCamelCase				:Union[str, Any]				    =  self._generate_dummy_inputs_for_default_and_seqaseq_lm(
            lowercase_				,							batch_size=lowercase_				,							seq_length=lowercase_				,							is_pair=lowercase_				,							framework=lowercase_      )

     elif self.task == "causal-lm":
        _UpperCamelCase				:Optional[int]				    =  self._generate_dummy_inputs_for_causal_lm(
            lowercase_				,							batch_size=lowercase_				,							seq_length=lowercase_				,							is_pair=lowercase_				,							framework=lowercase_      )
     else:
        _UpperCamelCase				:List[str]				    =  self._generate_dummy_inputs_for_sequence_classification_and_question_answering(
            lowercase_				,							batch_size=lowercase_				,							seq_length=lowercase_				,							is_pair=lowercase_				,							framework=lowercase_      )

     return common_inputs





  def      _UpperCamelCase(   self				,							SCREAMING_SNAKE_CASE__				,							SCREAMING_SNAKE_CASE__				,							SCREAMING_SNAKE_CASE__				,							SCREAMING_SNAKE_CASE__      )			->  Dict:

     """simple docstring"""



     if self.task in ["default", "seq2seq-lm"]:
        _UpperCamelCase				:Optional[int]				    =  super()._flatten_past_key_values_(lowercase_				,							lowercase_				,							lowercase_				,							lowercase_      )
     else:
        _UpperCamelCase				:Union[str, Any]				    =  super(lowercase_				,							self      )._flatten_past_key_values_(
            lowercase_				,							lowercase_				,							lowercase_				,							lowercase_      )





"""simple docstring"""






import unittest

from transformers import ErnieMTokenizer
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin


UpperCamelCase__							:Optional[int]       =  get_tests_dir("""fixtures/spiece.model""")






@require_sentencepiece
@require_tokenizers
class     A(     lowerCamelCase__							,       unittest.TestCase		):

		"""simple docstring"""





		A         =       ErnieMTokenizer
		A         =       False
		A         =       True
		A         =       False
		A         =       False
		def      _UpperCamelCase(   self      )			->  Union[str, Any]:

					"""simple docstring"""



					super().setUp()

					# We have a SentencePiece fixture for testing
					_UpperCamelCase				:int				    =  ErnieMTokenizer(SCREAMING_SNAKE_CASE__				,							unk_token='''<unk>'''				,							pad_token='''<pad>'''      )
					tokenizer.save_pretrained(self.tmpdirname      )
		def      _UpperCamelCase(   self				,							SCREAMING_SNAKE_CASE__      )			->  List[Any]:

					"""simple docstring"""



					_UpperCamelCase				:List[Any]				    =  '''this is a test'''
					_UpperCamelCase				:Optional[Any]				    =  '''this is a test'''
					return input_text, output_text
		def      _UpperCamelCase(   self      )			->  Union[str, Any]:

					"""simple docstring"""



					_UpperCamelCase				:Dict				    =  '''<pad>'''
					_UpperCamelCase				:Optional[Any]				    =  0

					self.assertEqual(self.get_tokenizer()._convert_token_to_id(SCREAMING_SNAKE_CASE__      )				,							SCREAMING_SNAKE_CASE__      )
					self.assertEqual(self.get_tokenizer()._convert_id_to_token(SCREAMING_SNAKE_CASE__      )				,							SCREAMING_SNAKE_CASE__      )
		def      _UpperCamelCase(   self      )			->  int:

					"""simple docstring"""



					_UpperCamelCase				: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(SCREAMING_SNAKE_CASE__      )				,							3_00_00      )
		def      _UpperCamelCase(   self      )			->  str:

					"""simple docstring"""



					self.assertEqual(self.get_tokenizer().vocab_size				,							3_00_00      )
		def      _UpperCamelCase(   self      )			->  Dict:

					"""simple docstring"""



					if not self.test_rust_tokenizer:
								return

					_UpperCamelCase				:Tuple				    =  self.get_tokenizer()
					_UpperCamelCase				:str				    =  self.get_rust_tokenizer()

					_UpperCamelCase				:List[Any]				    =  '''I was born in 92000, and this is falsé.'''

					_UpperCamelCase				:Any				    =  tokenizer.tokenize(SCREAMING_SNAKE_CASE__      )
					_UpperCamelCase				:List[Any]				    =  rust_tokenizer.tokenize(SCREAMING_SNAKE_CASE__      )
					self.assertListEqual(SCREAMING_SNAKE_CASE__				,							SCREAMING_SNAKE_CASE__      )

					_UpperCamelCase				:List[str]				    =  tokenizer.encode(SCREAMING_SNAKE_CASE__				,							add_special_tokens=SCREAMING_SNAKE_CASE__      )
					_UpperCamelCase				:List[str]				    =  rust_tokenizer.encode(SCREAMING_SNAKE_CASE__				,							add_special_tokens=SCREAMING_SNAKE_CASE__      )
					self.assertListEqual(SCREAMING_SNAKE_CASE__				,							SCREAMING_SNAKE_CASE__      )

					_UpperCamelCase				:Any				    =  self.get_rust_tokenizer()
					_UpperCamelCase				:List[Any]				    =  tokenizer.encode(SCREAMING_SNAKE_CASE__      )
					_UpperCamelCase				:int				    =  rust_tokenizer.encode(SCREAMING_SNAKE_CASE__      )
					self.assertListEqual(SCREAMING_SNAKE_CASE__				,							SCREAMING_SNAKE_CASE__      )
		def      _UpperCamelCase(   self      )			->  Dict:

					"""simple docstring"""



					_UpperCamelCase				:Any				    =  ErnieMTokenizer(SCREAMING_SNAKE_CASE__				,							do_lower_case=SCREAMING_SNAKE_CASE__				,							unk_token='''<unk>'''				,							pad_token='''<pad>'''      )

					_UpperCamelCase				:List[str]				    =  tokenizer.tokenize('''This is a test'''      )
					self.assertListEqual(SCREAMING_SNAKE_CASE__				,							['''▁this''', '''▁is''', '''▁a''', '''▁test''']      )

					self.assertListEqual(tokenizer.convert_tokens_to_ids(SCREAMING_SNAKE_CASE__      )				,							[48, 25, 21, 12_89]      )

					_UpperCamelCase				:str				    =  tokenizer.tokenize('''I was born in 92000, and this is falsé.'''      )
					# ErnieMTokenizer(paddlenlp implementation) outputs '9' instead of '_9' so to mimic that '_9' is changed to '9'
					self.assertListEqual(
					    SCREAMING_SNAKE_CASE__				,							['''▁i''', '''▁was''', '''▁born''', '''▁in''', '''9''', '''2000''', ''',''', '''▁and''', '''▁this''', '''▁is''', '''▁fal''', '''s''', '''é''', '''.''']      )
					_UpperCamelCase				:Optional[int]				    =  tokenizer.convert_tokens_to_ids(SCREAMING_SNAKE_CASE__      )
					self.assertListEqual(SCREAMING_SNAKE_CASE__				,							[31, 23, 3_86, 19, 5_18, 30_50, 15, 17, 48, 25, 82_56, 18, 1, 9]      )

					_UpperCamelCase				:Dict				    =  tokenizer.convert_ids_to_tokens(SCREAMING_SNAKE_CASE__      )
					self.assertListEqual(
					    SCREAMING_SNAKE_CASE__				,							['''▁i''', '''▁was''', '''▁born''', '''▁in''', '''9''', '''2000''', ''',''', '''▁and''', '''▁this''', '''▁is''', '''▁fal''', '''s''', '''<unk>''', '''.''']				,							)
		def      _UpperCamelCase(   self      )			->  List[str]:

					"""simple docstring"""



					_UpperCamelCase				:Dict				    =  ErnieMTokenizer(SCREAMING_SNAKE_CASE__				,							unk_token='''<unk>'''				,							pad_token='''<pad>'''      )

					_UpperCamelCase				:str				    =  tokenizer.encode('''sequence builders'''      )
					_UpperCamelCase				:Optional[Any]				    =  tokenizer.encode('''multi-sequence build'''      )

					_UpperCamelCase				:int				    =  tokenizer.build_inputs_with_special_tokens(SCREAMING_SNAKE_CASE__      )
					_UpperCamelCase				:Union[str, Any]				    =  tokenizer.build_inputs_with_special_tokens(SCREAMING_SNAKE_CASE__				,							SCREAMING_SNAKE_CASE__      )

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





		@slow
		def      _UpperCamelCase(   self      )			->  int:

					"""simple docstring"""



					_UpperCamelCase				:List[str]				    =  {'''input_ids''': [[0, 1_10_62, 8_27_72, 7, 15, 8_27_72, 5_38, 5_15_29, 2_37, 1_71_98, 12_90, 2_06, 9, 21_51_75, 13_14, 1_36, 1_71_98, 12_90, 2_06, 9, 5_63_59, 42, 12_20_09, 9, 1_64_66, 16, 8_73_44, 45_37, 9, 47_17, 7_83_81, 6, 15_99_58, 7, 15, 2_44_80, 6_18, 4, 5_27, 2_26_93, 9, 3_04, 4, 27_77, 2_44_80, 98_74, 4, 4_35_23, 5_94, 4, 8_03, 1_83_92, 3_31_89, 18, 4, 4_35_23, 2_44_47, 5, 5, 5, 16, 1_00, 2_49_55, 8_36_58, 96_26, 14_40_57, 15, 8_39, 2_23_35, 16, 1_36, 2_49_55, 8_36_58, 8_34_79, 15, 3_91_02, 7_24, 16, 6_78, 6_45, 64_60, 13_28, 45_89, 42, 12_20_09, 11_57_74, 23, 35_59, 13_28, 4_68_76, 7, 1_36, 5_38_94, 19_40, 4_22_27, 4_11_59, 1_77_21, 8_23, 4_25, 4, 2_75_12, 9_87_22, 2_06, 1_36, 55_31, 49_70, 9_19, 1_73_36, 5, 2], [0, 2_00_80, 6_18, 83, 8_27_75, 47, 4_79, 9, 15_17, 73, 5_38_94, 3_33, 8_05_81, 11_01_17, 1_88_11, 52_56, 12_95, 51, 15_25_26, 2_97, 79_86, 3_90, 12_44_16, 5_38, 3_54_31, 2_14, 98, 1_50_44, 2_57_37, 1_36, 71_08, 4_37_01, 23, 7_56, 13_53_55, 7, 5, 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], [0, 5_81, 6_37_73, 11_94_55, 6, 14_77_97, 8_82_03, 7, 6_45, 70, 21, 32_85, 1_02_69, 5, 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]]}
					# fmt: on

					self.tokenizer_integration_test_util(
					    expected_encoding=SCREAMING_SNAKE_CASE__				,							model_name='''susnato/ernie-m-base_pytorch'''				,							sequences=[
					        '''Transformers (formerly known as pytorch-transformers and pytorch-pretrained-bert) provides '''
					        '''general-purpose architectures (BERT, GPT-2, RoBERTa, XLM, DistilBert, XLNet...) for Natural '''
					        '''Language Understanding (NLU) and Natural Language Generation (NLG) with over32+ pretrained '''
					        '''models in100+ 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.''',
					    ]				,							)

