






"""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


_snake_case       :      List[str]       =					get_tests_dir("fixtures/spiece.model")




@require_sentencepiece
@require_tokenizers
class        __lowercase(       _UpperCamelCase						,							unittest.TestCase  ):
						lowerCAmelCase_		:							List[str]=       ErnieMTokenizer
						lowerCAmelCase_		:							List[str]=       False
						lowerCAmelCase_		:							Optional[int]=       True
						lowerCAmelCase_		:							Any=       False
						lowerCAmelCase_		:							int=       False






						def 		lowerCAmelCase   (					self)			->  List[str]:




											"""simple docstring"""





											super().setUp()

											# We have a SentencePiece fixture for testing
											lowerCamelCase__				=ErnieMTokenizer(_SCREAMING_SNAKE_CASE    ,						unk_token='<unk>'    ,						pad_token='<pad>')
											tokenizer.save_pretrained(self.tmpdirname)






						def 		lowerCAmelCase   (					self    ,						_SCREAMING_SNAKE_CASE)			->  str:




											"""simple docstring"""





											lowerCamelCase__				='this is a test'
											lowerCamelCase__				='this is a test'
											return input_text, output_text






						def 		lowerCAmelCase   (					self)			->  List[Any]:




											"""simple docstring"""





											lowerCamelCase__				='<pad>'
											lowerCamelCase__				=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 		lowerCAmelCase   (					self)			->  List[str]:




											"""simple docstring"""





											lowerCamelCase__				=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 		lowerCAmelCase   (					self)			->  str:




											"""simple docstring"""





											self.assertEqual(self.get_tokenizer().vocab_size    ,						3_00_00)






						def 		lowerCAmelCase   (					self)			->  Tuple:




											"""simple docstring"""





											if not self.test_rust_tokenizer:
																return

											lowerCamelCase__				=self.get_tokenizer()
											lowerCamelCase__				=self.get_rust_tokenizer()

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

											lowerCamelCase__				=tokenizer.tokenize(_SCREAMING_SNAKE_CASE)
											lowerCamelCase__				=rust_tokenizer.tokenize(_SCREAMING_SNAKE_CASE)
											self.assertListEqual(_SCREAMING_SNAKE_CASE    ,						_SCREAMING_SNAKE_CASE)

											lowerCamelCase__				=tokenizer.encode(_SCREAMING_SNAKE_CASE    ,						add_special_tokens=_SCREAMING_SNAKE_CASE)
											lowerCamelCase__				=rust_tokenizer.encode(_SCREAMING_SNAKE_CASE    ,						add_special_tokens=_SCREAMING_SNAKE_CASE)
											self.assertListEqual(_SCREAMING_SNAKE_CASE    ,						_SCREAMING_SNAKE_CASE)

											lowerCamelCase__				=self.get_rust_tokenizer()
											lowerCamelCase__				=tokenizer.encode(_SCREAMING_SNAKE_CASE)
											lowerCamelCase__				=rust_tokenizer.encode(_SCREAMING_SNAKE_CASE)
											self.assertListEqual(_SCREAMING_SNAKE_CASE    ,						_SCREAMING_SNAKE_CASE)






						def 		lowerCAmelCase   (					self)			->  Tuple:




											"""simple docstring"""





											lowerCamelCase__				=ErnieMTokenizer(_SCREAMING_SNAKE_CASE    ,						do_lower_case=_SCREAMING_SNAKE_CASE    ,						unk_token='<unk>'    ,						pad_token='<pad>')

											lowerCamelCase__				=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])

											lowerCamelCase__				=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', 'é', '.'])
											lowerCamelCase__				=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])

											lowerCamelCase__				=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 		lowerCAmelCase   (					self)			->  str:




											"""simple docstring"""





											lowerCamelCase__				=ErnieMTokenizer(_SCREAMING_SNAKE_CASE    ,						unk_token='<unk>'    ,						pad_token='<pad>')

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

											lowerCamelCase__				=tokenizer.build_inputs_with_special_tokens(_SCREAMING_SNAKE_CASE)
											lowerCamelCase__				=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 		lowerCAmelCase   (					self)			->  List[str]:




											"""simple docstring"""





											lowerCamelCase__				={'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.',
											    ]    ,						)







"""simple docstring"""



from doctest import testmod
from math import sqrt




def 						lowerCamelCase_				(  __A  :		int			):
					lowerCamelCase__				=[]
					if num < 1:
										return facs
					facs.append(1			)
					if num == 1:
										return facs
					facs.append(__A			)
					for i in range(2			,	int(sqrt(__A			)			) + 1			):
										if num % i == 0:  # If i is a factor of num
															facs.append(__A			)
															lowerCamelCase__				=num // i  # num//i is the other factor of num
															if d != i:  # If d and i are distinct
																				facs.append(__A			)  # we have found another factor
					facs.sort()
					return facs


if __name__ == "__main__":
						testmod(name="factors_of_a_number", verbose=True)