






'''simple docstring'''
import unittest

from transformers.models.xlm_prophetnet.tokenization_xlm_prophetnet import SPIECE_UNDERLINE, XLMProphetNetTokenizer
from transformers.testing_utils import get_tests_dir, require_sentencepiece, slow
from transformers.utils import cached_property

from ...test_tokenization_common import TokenizerTesterMixin


a_					=	get_tests_dir('fixtures/test_sentencepiece.model')






@require_sentencepiece
class        __SCREAMING_SNAKE_CASE (     lowerCamelCase		,			unittest.TestCase			):
 snake_case_												=							XLMProphetNetTokenizer
 snake_case_												=							False
 snake_case_												=							True




 def        __magic_name__		( self		:							Optional[Any] )		->  Any:
       super().setUp()

       # We have a SentencePiece fixture for testing
       SCREAMING_SNAKE_CASE__       :			Union[str, Any]													=XLMProphetNetTokenizer(__lowercase   , keep_accents=__lowercase )
       tokenizer.save_pretrained(self.tmpdirname )




 def        __magic_name__		( self		:							int )		->  Any:
       SCREAMING_SNAKE_CASE__       :			Optional[Any]													='''[PAD]'''
       SCREAMING_SNAKE_CASE__       :			Optional[Any]													=0

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




 def        __magic_name__		( self		:							Union[str, Any] )		->  int:
       SCREAMING_SNAKE_CASE__       :			Any													=list(self.get_tokenizer().get_vocab().keys() )

       self.assertEqual(vocab_keys[0]   , '''[PAD]''' )
       self.assertEqual(vocab_keys[1]   , '''[CLS]''' )
       self.assertEqual(vocab_keys[-1]   , '''j''' )
       self.assertEqual(len(__lowercase )   , 10_12 )




 def        __magic_name__		( self		:							List[str] )		->  Optional[int]:
       self.assertEqual(self.get_tokenizer().vocab_size   , 10_12 )




 def        __magic_name__		( self		:							Optional[Any] )		->  List[str]:
       SCREAMING_SNAKE_CASE__       :			int													=XLMProphetNetTokenizer(__lowercase   , keep_accents=__lowercase )

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

       self.assertListEqual(
           tokenizer.convert_tokens_to_ids(__lowercase )   , [value + tokenizer.fairseq_offset for value in [2_85, 46, 10, 1_70, 3_82]]   , )

       SCREAMING_SNAKE_CASE__       :			Tuple													=tokenizer.tokenize('''I was born in 92000, and this is falsé.''' )
       self.assertListEqual(
           __lowercase   , [
               SPIECE_UNDERLINE + '''I''',
               SPIECE_UNDERLINE + '''was''',
               SPIECE_UNDERLINE + '''b''',
               '''or''',
               '''n''',
               SPIECE_UNDERLINE + '''in''',
               SPIECE_UNDERLINE + '''''',
               '''9''',
               '''2''',
               '''0''',
               '''0''',
               '''0''',
               ''',''',
               SPIECE_UNDERLINE + '''and''',
               SPIECE_UNDERLINE + '''this''',
               SPIECE_UNDERLINE + '''is''',
               SPIECE_UNDERLINE + '''f''',
               '''al''',
               '''s''',
               '''é''',
               '''.''',
           ]   , )
       SCREAMING_SNAKE_CASE__       :			List[str]													=tokenizer.convert_tokens_to_ids(__lowercase )
       self.assertListEqual(
           __lowercase   , [
               value + tokenizer.fairseq_offset
               for value in [8, 21, 84, 55, 24, 19, 7, -9, 6_02, 3_47, 3_47, 3_47, 3, 12, 66, 46, 72, 80, 6, -9, 4]
           ]   , )

       SCREAMING_SNAKE_CASE__       :			Optional[Any]													=tokenizer.convert_ids_to_tokens(__lowercase )
       self.assertListEqual(
           __lowercase   , [
               SPIECE_UNDERLINE + '''I''',
               SPIECE_UNDERLINE + '''was''',
               SPIECE_UNDERLINE + '''b''',
               '''or''',
               '''n''',
               SPIECE_UNDERLINE + '''in''',
               SPIECE_UNDERLINE + '''''',
               '''[UNK]''',
               '''2''',
               '''0''',
               '''0''',
               '''0''',
               ''',''',
               SPIECE_UNDERLINE + '''and''',
               SPIECE_UNDERLINE + '''this''',
               SPIECE_UNDERLINE + '''is''',
               SPIECE_UNDERLINE + '''f''',
               '''al''',
               '''s''',
               '''[UNK]''',
               '''.''',
           ]   , )




 @cached_property
 def        __magic_name__		( self		:							int )		->  Union[str, Any]:
       return XLMProphetNetTokenizer.from_pretrained('''microsoft/xprophetnet-large-wiki100-cased''' )




 @slow
 def        __magic_name__		( self		:							Union[str, Any] )		->  List[Any]:
       SCREAMING_SNAKE_CASE__       :			List[str]													='''Hello World!'''
       SCREAMING_SNAKE_CASE__       :			Optional[Any]													=[3_53_89, 66_72, 49, 2]
       self.assertListEqual(__lowercase   , self.big_tokenizer.encode(__lowercase ) )




 @slow
 def        __magic_name__		( self		:							Dict )		->  Union[str, Any]:
       # fmt: off
       SCREAMING_SNAKE_CASE__       :			Optional[Any]													={'''input_ids''': [[1_10_73, 8_27_83, 18, 26, 8_27_83, 5_49, 5_15_40, 2_48, 1_72_09, 13_01, 2_17, 20, 21_51_86, 13_25, 1_47, 1_72_09, 13_01, 2_17, 20, 5_63_70, 53, 12_20_20, 20, 1_64_77, 27, 8_73_55, 45_48, 20, 47_28, 7_83_92, 17, 15_99_69, 18, 26, 2_44_91, 6_29, 15, 5_38, 2_27_04, 54_39, 15, 27_88, 2_44_91, 98_85, 15, 4_35_34, 6_05, 15, 8_14, 1_84_03, 3_32_00, 29, 15, 4_35_34, 2_44_58, 1_24_10, 1_11, 2_49_66, 8_36_69, 96_37, 14_40_68, 26, 8_50, 2_23_46, 27, 1_47, 2_49_66, 8_36_69, 8_34_90, 26, 3_91_13, 7_35, 27, 6_89, 6_56, 28_00, 13_39, 46_00, 53, 12_20_20, 11_57_85, 34, 8_16, 13_39, 4_68_87, 18, 1_47, 5_39_05, 19_51, 4_22_38, 4_11_70, 1_77_32, 8_34, 4_36, 15, 2_75_23, 9_87_33, 2_17, 1_47, 55_42, 49_81, 9_30, 1_73_47, 16, 2], [2_00_91, 6_29, 94, 8_27_86, 58, 4_90, 20, 15_28, 84, 5_39_05, 3_44, 8_05_92, 11_01_28, 1_88_22, 52_67, 13_06, 62, 15_25_37, 3_08, 79_97, 4_01, 12_44_27, 5_49, 3_54_42, 2_25, 1_09, 1_50_55, 2_57_48, 1_47, 71_19, 4_37_12, 34, 7_67, 13_53_66, 18, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [5_92, 6_37_84, 11_94_66, 17, 14_78_08, 8_82_14, 18, 6_56, 81, 32, 32_96, 1_02_80, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 1, 1, 1, 1, 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], [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]]}  # noqa: E501
       # fmt: on

       self.tokenizer_integration_test_util(
           expected_encoding=__lowercase   , model_name='''microsoft/xprophetnet-large-wiki100-cased'''   , revision='''1acad1643ddd54a44df6a1b797ada8373685d90e'''   , )







'''simple docstring'''
import math





def 	_a(					UpperCamelCase__			:  int							):




      '''simple docstring'''






      return math.sqrt(UpperCamelCase__							) * math.sqrt(UpperCamelCase__							) == num





def 	_a(					UpperCamelCase__			:  int							):




      '''simple docstring'''






      SCREAMING_SNAKE_CASE__       :			List[Any]													=0
      SCREAMING_SNAKE_CASE__       :			Any													=n
      while left <= right:
            SCREAMING_SNAKE_CASE__       :			str													=(left + right) // 2
            if mid**2 == n:
                  return True
            elif mid**2 > n:
                  SCREAMING_SNAKE_CASE__       :			Optional[Any]													=mid - 1
            else:
                  SCREAMING_SNAKE_CASE__       :			Tuple													=mid + 1
      return False


if __name__ == "__main__":
  import doctest

  doctest.testmod()