
"""simple docstring"""






import unittest

from transformers import PegasusTokenizer, PegasusTokenizerFast
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, require_torch, slow
from transformers.utils import cached_property

from ...test_tokenization_common import TokenizerTesterMixin


lowerCamelCase__ :       Dict						     =			get_tests_dir("fixtures/test_sentencepiece_no_bos.model")




@require_sentencepiece
@require_tokenizers
class 				lowercase__(				_UpperCAmelCase		,						unittest.TestCase   ):
	'''simple docstring'''

	UpperCamelCase				=  PegasusTokenizer
	UpperCamelCase				=  PegasusTokenizerFast
	UpperCamelCase				=  True
	UpperCamelCase				=  True





	def   __lowerCAmelCase (						self    :Any					)							->			List[str]:







			'''simple docstring'''




			super().setUp()

			# We have a SentencePiece fixture for testing
			SCREAMING_SNAKE_CASE       :     Optional[int]				= PegasusTokenizer(lowerCamelCase_					)
			tokenizer.save_pretrained(self.tmpdirname					)





	@cached_property
	def   __lowerCAmelCase (						self    :Tuple					)							->			Union[str, Any]:







			'''simple docstring'''




			return PegasusTokenizer.from_pretrained('''google/pegasus-large'''					)





	def   __lowerCAmelCase (						self    :int		, **lowerCamelCase_    :Tuple					)							->			PegasusTokenizer:







			'''simple docstring'''




			return PegasusTokenizer.from_pretrained(self.tmpdirname		, **lowerCamelCase_					)





	def   __lowerCAmelCase (						self    :int		, lowerCamelCase_    :Optional[Any]					)							->			Optional[Any]:







			'''simple docstring'''




			return ("This is a test", "This is a test")





	def   __lowerCAmelCase (						self    :Optional[int]					)							->			Dict:







			'''simple docstring'''




			SCREAMING_SNAKE_CASE       :     int				= '''</s>'''
			SCREAMING_SNAKE_CASE       :     int				= 1

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





	def   __lowerCAmelCase (						self    :Any					)							->			List[str]:







			'''simple docstring'''




			SCREAMING_SNAKE_CASE       :     int				= list(self.get_tokenizer().get_vocab().keys()					)

			self.assertEqual(vocab_keys[0]		, '''<pad>'''					)
			self.assertEqual(vocab_keys[1]		, '''</s>'''					)
			self.assertEqual(vocab_keys[-1]		, '''v'''					)
			self.assertEqual(len(lowerCamelCase_					)		, 11_03					)





	def   __lowerCAmelCase (						self    :Dict					)							->			int:







			'''simple docstring'''




			self.assertEqual(self.get_tokenizer().vocab_size		, 11_03					)





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







			'''simple docstring'''




			SCREAMING_SNAKE_CASE       :     List[Any]				= self.rust_tokenizer_class.from_pretrained(self.tmpdirname					)
			SCREAMING_SNAKE_CASE       :     Any				= self.tokenizer_class.from_pretrained(self.tmpdirname					)
			SCREAMING_SNAKE_CASE       :     Optional[int]				= (
			    '''Let\'s see which <unk> is the better <unk_token_11> one <mask_1> It seems like this <mask_2> was important'''
			    ''' </s> <pad> <pad> <pad>'''
			)
			SCREAMING_SNAKE_CASE       :     Optional[int]				= rust_tokenizer([raw_input_str]		, return_tensors=lowerCamelCase_		, add_special_tokens=lowerCamelCase_					).input_ids[0]
			SCREAMING_SNAKE_CASE       :     Union[str, Any]				= py_tokenizer([raw_input_str]		, return_tensors=lowerCamelCase_		, add_special_tokens=lowerCamelCase_					).input_ids[0]
			self.assertListEqual(lowerCamelCase_		, lowerCamelCase_					)





	def   __lowerCAmelCase (						self    :Dict					)							->			Dict:







			'''simple docstring'''




			SCREAMING_SNAKE_CASE       :     List[str]				= self._large_tokenizer
			# <mask_1> masks whole sentence while <mask_2> masks single word
			SCREAMING_SNAKE_CASE       :     int				= '''<mask_1> To ensure a <mask_2> flow of bank resolutions.'''
			SCREAMING_SNAKE_CASE       :     List[str]				= [2, 4_13, 6_15, 1_14, 3, 19_71, 1_13, 16_79, 1_07_10, 1_07, 1]
			SCREAMING_SNAKE_CASE       :     Tuple				= tokenizer([raw_input_str]		, return_tensors=lowerCamelCase_					).input_ids[0]
			self.assertListEqual(lowerCamelCase_		, lowerCamelCase_					)





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







			'''simple docstring'''




			SCREAMING_SNAKE_CASE       :     Optional[int]				= self._large_tokenizer
			# The tracebacks for the following asserts are **better** without messages or self.assertEqual
			assert tokenizer.vocab_size == 9_61_03
			assert tokenizer.pad_token_id == 0
			assert tokenizer.eos_token_id == 1
			assert tokenizer.offset == 1_03
			assert tokenizer.unk_token_id == tokenizer.offset + 2 == 1_05
			assert tokenizer.unk_token == "<unk>"
			assert tokenizer.model_max_length == 10_24
			SCREAMING_SNAKE_CASE       :     Tuple				= '''To ensure a smooth flow of bank resolutions.'''
			SCREAMING_SNAKE_CASE       :     str				= [4_13, 6_15, 1_14, 22_91, 19_71, 1_13, 16_79, 1_07_10, 1_07, 1]
			SCREAMING_SNAKE_CASE       :     str				= tokenizer([raw_input_str]		, return_tensors=lowerCamelCase_					).input_ids[0]
			self.assertListEqual(lowerCamelCase_		, lowerCamelCase_					)
			assert tokenizer.convert_ids_to_tokens([0, 1, 2, 3]					) == ["<pad>", "</s>", "<mask_1>", "<mask_2>"]





	@require_torch
	def   __lowerCAmelCase (						self    :Union[str, Any]					)							->			Union[str, Any]:







			'''simple docstring'''




			SCREAMING_SNAKE_CASE       :     List[Any]				= ['''This is going to be way too long.''' * 1_50, '''short example''']
			SCREAMING_SNAKE_CASE       :     List[Any]				= ['''not super long but more than 5 tokens''', '''tiny''']
			SCREAMING_SNAKE_CASE       :     str				= self._large_tokenizer(lowerCamelCase_		, padding=lowerCamelCase_		, truncation=lowerCamelCase_		, return_tensors='''pt'''					)
			SCREAMING_SNAKE_CASE       :     Tuple				= self._large_tokenizer(
			    text_target=lowerCamelCase_		, max_length=5		, padding=lowerCamelCase_		, truncation=lowerCamelCase_		, return_tensors='''pt'''					)

			assert batch.input_ids.shape == (2, 10_24)
			assert batch.attention_mask.shape == (2, 10_24)
			assert targets["input_ids"].shape == (2, 5)
			assert len(lowerCamelCase_					) == 2  # input_ids, attention_mask.







	@slow
	def   __lowerCAmelCase (						self    :Optional[Any]					)							->			str:







			'''simple docstring'''




			SCREAMING_SNAKE_CASE       :     Any				= {'''input_ids''': [[3_89_79, 1_43, 1_84_85, 6_06, 1_30, 2_66_69, 8_76_86, 1_21, 5_41_89, 11_29, 1_11, 2_66_69, 8_76_86, 1_21, 91_14, 1_47_87, 1_21, 1_32_49, 1_58, 5_92, 9_56, 1_21, 1_46_21, 3_15_76, 1_43, 6_26_13, 1_08, 96_88, 9_30, 4_34_30, 1_15_62, 6_26_13, 3_04, 1_08, 1_14_43, 8_97, 1_08, 93_14, 1_74_15, 6_33_99, 1_08, 1_14_43, 76_14, 1_83_16, 1_18, 42_84, 71_48, 1_24_30, 1_43, 14_00, 2_57_03, 1_58, 1_11, 42_84, 71_48, 1_17_72, 1_43, 2_12_97, 10_64, 1_58, 1_22, 2_04, 35_06, 17_54, 11_33, 1_47_87, 15_81, 1_15, 3_32_24, 44_82, 1_11, 13_55, 1_10, 2_91_73, 3_17, 5_08_33, 1_08, 2_01_47, 9_46_65, 1_11, 7_71_98, 1_07, 1], [1_10, 6_26_13, 1_17, 6_38, 1_12, 11_33, 1_21, 2_00_98, 13_55, 7_90_50, 1_38_72, 1_35, 15_96, 5_35_41, 13_52, 1_41, 1_30_39, 55_42, 1_24, 3_02, 5_18, 1_11, 2_68, 29_56, 1_15, 1_49, 44_27, 1_07, 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], [1_39, 12_35, 27_99, 1_82_89, 1_77_80, 2_04, 1_09, 94_74, 12_96, 1_07, 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]], '''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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]}  # noqa: E501
			# fmt: on

			self.tokenizer_integration_test_util(
			    expected_encoding=lowerCamelCase_		, model_name='''google/bigbird-pegasus-large-arxiv'''		, revision='''ba85d0851d708441f91440d509690f1ab6353415'''		, )





@require_sentencepiece
@require_tokenizers
class 				lowercase__(				_UpperCAmelCase		,						unittest.TestCase   ):
	'''simple docstring'''

	UpperCamelCase				=  PegasusTokenizer
	UpperCamelCase				=  PegasusTokenizerFast
	UpperCamelCase				=  True
	UpperCamelCase				=  True





	def   __lowerCAmelCase (						self    :List[Any]					)							->			Optional[int]:







			'''simple docstring'''




			super().setUp()

			# We have a SentencePiece fixture for testing
			SCREAMING_SNAKE_CASE       :     Optional[int]				= PegasusTokenizer(lowerCamelCase_		, offset=0		, mask_token_sent=lowerCamelCase_		, mask_token='''[MASK]'''					)
			tokenizer.save_pretrained(self.tmpdirname					)





	@cached_property
	def   __lowerCAmelCase (						self    :Dict					)							->			Optional[int]:







			'''simple docstring'''




			return PegasusTokenizer.from_pretrained('''google/bigbird-pegasus-large-arxiv'''					)





	def   __lowerCAmelCase (						self    :Any		, **lowerCamelCase_    :int					)							->			PegasusTokenizer:







			'''simple docstring'''




			return PegasusTokenizer.from_pretrained(self.tmpdirname		, **lowerCamelCase_					)





	def   __lowerCAmelCase (						self    :Optional[int]		, lowerCamelCase_    :str					)							->			Tuple:







			'''simple docstring'''




			return ("This is a test", "This is a test")





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







			'''simple docstring'''




			SCREAMING_SNAKE_CASE       :     int				= self.rust_tokenizer_class.from_pretrained(self.tmpdirname					)
			SCREAMING_SNAKE_CASE       :     Any				= self.tokenizer_class.from_pretrained(self.tmpdirname					)
			SCREAMING_SNAKE_CASE       :     Dict				= (
			    '''Let\'s see which <unk> is the better <unk_token> one [MASK] It seems like this [MASK] was important </s>'''
			    ''' <pad> <pad> <pad>'''
			)
			SCREAMING_SNAKE_CASE       :     Any				= rust_tokenizer([raw_input_str]		, return_tensors=lowerCamelCase_		, add_special_tokens=lowerCamelCase_					).input_ids[0]
			SCREAMING_SNAKE_CASE       :     Union[str, Any]				= py_tokenizer([raw_input_str]		, return_tensors=lowerCamelCase_		, add_special_tokens=lowerCamelCase_					).input_ids[0]
			self.assertListEqual(lowerCamelCase_		, lowerCamelCase_					)





	@require_torch
	def   __lowerCAmelCase (						self    :List[str]					)							->			int:







			'''simple docstring'''




			SCREAMING_SNAKE_CASE       :     Dict				= ['''This is going to be way too long.''' * 10_00, '''short example''']
			SCREAMING_SNAKE_CASE       :     List[str]				= ['''not super long but more than 5 tokens''', '''tiny''']
			SCREAMING_SNAKE_CASE       :     List[str]				= self._large_tokenizer(lowerCamelCase_		, padding=lowerCamelCase_		, truncation=lowerCamelCase_		, return_tensors='''pt'''					)
			SCREAMING_SNAKE_CASE       :     str				= self._large_tokenizer(
			    text_target=lowerCamelCase_		, max_length=5		, padding=lowerCamelCase_		, truncation=lowerCamelCase_		, return_tensors='''pt'''					)

			assert batch.input_ids.shape == (2, 40_96)
			assert batch.attention_mask.shape == (2, 40_96)
			assert targets["input_ids"].shape == (2, 5)
			assert len(lowerCamelCase_					) == 2  # input_ids, attention_mask.







	def   __lowerCAmelCase (						self    :Optional[int]					)							->			List[Any]:







			'''simple docstring'''




			SCREAMING_SNAKE_CASE       :     Optional[int]				= (
			    '''This is an example string that is used to test the original TF implementation against the HF'''
			    ''' implementation'''
			)

			SCREAMING_SNAKE_CASE       :     List[str]				= self._large_tokenizer(lowerCamelCase_					).input_ids

			self.assertListEqual(
			    lowerCamelCase_		, [1_82, 1_17, 1_42, 5_87, 42_11, 1_20, 1_17, 2_63, 1_12, 8_04, 1_09, 8_56, 2_50_16, 31_37, 4_64, 1_09, 2_69_55, 31_37, 1]		, )







"""simple docstring"""






from __future__ import annotations

from fractions import Fraction





def __A						(   a_ :							int		,		a_ :							int     )->							bool:




		'''simple docstring'''






		return (
		    num != den and num % 10 == den // 10 and (num // 10) / (den % 10) == num / den
		)





def __A						(   a_ :							int     )->							list[str]:




		'''simple docstring'''






		SCREAMING_SNAKE_CASE       :     Union[str, Any]				= []
		SCREAMING_SNAKE_CASE       :     List[str]				= 11
		SCREAMING_SNAKE_CASE       :     Union[str, Any]				= int('''1''' + '''0''' * digit_len     )
		for num in range(a_		,		a_     ):
				while den <= 99:
						if (num != den) and (num % 10 == den // 10) and (den % 10 != 0):
								if is_digit_cancelling(a_		,		a_     ):
										solutions.append(F"{num}/{den}"     )
						den += 1
				num += 1
				SCREAMING_SNAKE_CASE       :     Optional[Any]				= 10
		return solutions





def __A						(   a_ :							int = 2     )->							int:




		'''simple docstring'''






		SCREAMING_SNAKE_CASE       :     Optional[Any]				= 1.0
		for fraction in fraction_list(a_     ):
				SCREAMING_SNAKE_CASE       :     List[str]				= Fraction(a_     )
				result *= frac.denominator / frac.numerator
		return int(a_     )


if __name__ == "__main__":
					print(solution())





