




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


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

@require_sentencepiece
class 	_snake_case(			_a       , unittest.TestCase      ):
 __snake_case:							Any						=					XLMProphetNetTokenizer
 __snake_case:							Tuple						=					False
 __snake_case:							Any						=					True






 def 						_UpperCamelCase (self       :  str    )       ->   Dict:






    """simple docstring"""


    super().setUp()

    # We have a SentencePiece fixture for testing
    A__       =     XLMProphetNetTokenizer(a    ,		keep_accents=a    )
    tokenizer.save_pretrained(self.tmpdirname    )






 def 						_UpperCamelCase (self       :  Any    )       ->   Dict:






    """simple docstring"""


    A__       =     '[PAD]'
    A__       =     0

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






 def 						_UpperCamelCase (self       :  Optional[Any]    )       ->   Optional[Any]:






    """simple docstring"""


    A__       =     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(a    )    ,		10_12    )






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






    """simple docstring"""


    self.assertEqual(self.get_tokenizer().vocab_size    ,		10_12    )






 def 						_UpperCamelCase (self       :  Any    )       ->   Tuple:






    """simple docstring"""


    A__       =     XLMProphetNetTokenizer(a    ,		keep_accents=a    )

    A__       =     tokenizer.tokenize('This is a test'    )
    self.assertListEqual(a    ,		['▁This', '▁is', '▁a', '▁t', 'est']    )

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

    A__       =     tokenizer.tokenize('I was born in 92000, and this is falsé.'    )
    self.assertListEqual(
        a    ,		[
            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',
            'é',
            '.',
        ]    ,		)
    A__       =     tokenizer.convert_tokens_to_ids(a    )
    self.assertListEqual(
        a    ,		[
            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]
        ]    ,		)

    A__       =     tokenizer.convert_ids_to_tokens(a    )
    self.assertListEqual(
        a    ,		[
            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 						_UpperCamelCase (self       :  List[str]    )       ->   Union[str, Any]:






    """simple docstring"""


    return XLMProphetNetTokenizer.from_pretrained('microsoft/xprophetnet-large-wiki100-cased'    )






 @slow
 def 						_UpperCamelCase (self       :  Union[str, Any]    )       ->   List[str]:






    """simple docstring"""


    A__       =     'Hello World!'
    A__       =     [3_53_89, 66_72, 49, 2]
    self.assertListEqual(a    ,		self.big_tokenizer.encode(a    )    )






 @slow
 def 						_UpperCamelCase (self       :  Any    )       ->   List[Any]:






    """simple docstring"""


    A__       =     {'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=a    ,		model_name='microsoft/xprophetnet-large-wiki100-cased'    ,		revision='1acad1643ddd54a44df6a1b797ada8373685d90e'    ,		)






A				:       Any      =  '\n# Transformers installation\n! pip install transformers datasets\n# To install from source instead of the last release, comment the command above and uncomment the following one.\n# ! pip install git+https://github.com/huggingface/transformers.git\n'

A				:       Optional[int]      =  [{'type': 'code', 'content': INSTALL_CONTENT}]
A				:       Optional[int]      =  {
    '{processor_class}': 'FakeProcessorClass',
    '{model_class}': 'FakeModelClass',
    '{object_class}': 'FakeObjectClass',
}





