


import unittest

from transformers import AlbertTokenizer, AlbertTokenizerFast
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin


lowerCAmelCase       		=    get_tests_dir("""fixtures/spiece.model""")




@require_sentencepiece
@require_tokenizers
class 							lowerCamelCase   (  SCREAMING_SNAKE_CASE_							,						unittest.TestCase ):
	_lowerCAmelCase     :		Optional[int]										=						AlbertTokenizer
	_lowerCAmelCase     :		str										=						AlbertTokenizerFast
	_lowerCAmelCase     :		Union[str, Any]										=						True
	_lowerCAmelCase     :		int										=						True
	_lowerCAmelCase     :		List[str]										=						True


	def  A(    self):
							super().setUp()

							# We have a SentencePiece fixture for testing
							__UpperCAmelCase			:							str	    =	AlbertTokenizer(__a)
							tokenizer.save_pretrained(self.tmpdirname)


	def  A(    self				,     lowercase__):
							__UpperCAmelCase			:							int	    =	'this is a test'
							__UpperCAmelCase			:							Dict	    =	'this is a test'
							return input_text, output_text


	def  A(    self):
							__UpperCAmelCase			:							Union[str, Any]	    =	'<pad>'
							__UpperCAmelCase			:							str	    =	0

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


	def  A(    self):
							__UpperCAmelCase			:							Any	    =	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(__a)				,     3_0_0_0_0)


	def  A(    self):
							self.assertEqual(self.get_tokenizer().vocab_size				,     3_0_0_0_0)


	def  A(    self):
							if not self.test_rust_tokenizer:
													return

							__UpperCAmelCase			:							Optional[Any]	    =	self.get_tokenizer()
							__UpperCAmelCase			:							List[Any]	    =	self.get_rust_tokenizer()

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

							__UpperCAmelCase			:							List[Any]	    =	tokenizer.tokenize(__a)
							__UpperCAmelCase			:							Union[str, Any]	    =	rust_tokenizer.tokenize(__a)
							self.assertListEqual(__a				,     __a)

							__UpperCAmelCase			:							int	    =	tokenizer.encode(__a				,     add_special_tokens=__a)
							__UpperCAmelCase			:							Union[str, Any]	    =	rust_tokenizer.encode(__a				,     add_special_tokens=__a)
							self.assertListEqual(__a				,     __a)

							__UpperCAmelCase			:							Dict	    =	self.get_rust_tokenizer()
							__UpperCAmelCase			:							Optional[int]	    =	tokenizer.encode(__a)
							__UpperCAmelCase			:							Union[str, Any]	    =	rust_tokenizer.encode(__a)
							self.assertListEqual(__a				,     __a)


	def  A(    self):
							__UpperCAmelCase			:							Optional[Any]	    =	AlbertTokenizer(__a				,     keep_accents=__a)

							__UpperCAmelCase			:							Union[str, Any]	    =	tokenizer.tokenize('''This is a test''')
							self.assertListEqual(__a				,     ['''▁this''', '''▁is''', '''▁a''', '''▁test'''])

							self.assertListEqual(tokenizer.convert_tokens_to_ids(__a)				,     [4_8, 2_5, 2_1, 1_2_8_9])

							__UpperCAmelCase			:							Tuple	    =	tokenizer.tokenize('''I was born in 92000, and this is falsé.''')
							self.assertListEqual(
							    __a				,     ['''▁i''', '''▁was''', '''▁born''', '''▁in''', '''▁9''', '''2000''', ''',''', '''▁and''', '''▁this''', '''▁is''', '''▁fal''', '''s''', '''é''', '''.'''])
							__UpperCAmelCase			:							Optional[Any]	    =	tokenizer.convert_tokens_to_ids(__a)
							self.assertListEqual(__a				,     [3_1, 2_3, 3_8_6, 1_9, 5_6_1, 3_0_5_0, 1_5, 1_7, 4_8, 2_5, 8_2_5_6, 1_8, 1, 9])

							__UpperCAmelCase			:							Any	    =	tokenizer.convert_ids_to_tokens(__a)
							self.assertListEqual(
							    __a				,     ['''▁i''', '''▁was''', '''▁born''', '''▁in''', '''▁9''', '''2000''', ''',''', '''▁and''', '''▁this''', '''▁is''', '''▁fal''', '''s''', '''<unk>''', '''.''']				,     )


	def  A(    self):
							__UpperCAmelCase			:							str	    =	AlbertTokenizer(__a)

							__UpperCAmelCase			:							Tuple	    =	tokenizer.encode('''sequence builders''')
							__UpperCAmelCase			:							List[Any]	    =	tokenizer.encode('''multi-sequence build''')

							__UpperCAmelCase			:							Dict	    =	tokenizer.build_inputs_with_special_tokens(__a)
							__UpperCAmelCase			:							Dict	    =	tokenizer.build_inputs_with_special_tokens(__a				,     __a)

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


	@slow
	def  A(    self):
							__UpperCAmelCase			:							Any	    =	{'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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'input_ids': [[2, 2_1_9_7_0, 1_3, 5, 6_0_9_2, 1_6_7, 2_8, 7_1_0_3, 2_1_5_3, 6_7_3, 8, 7_0_2_8, 1_2_0_5_1, 1_8, 1_7, 7_1_0_3, 2_1_5_3, 6_7_3, 8, 3_5_1_5, 1_8_6_8_4, 8, 4_4_6_1, 6, 1_9_2_7, 2_9_7, 8, 1_2_0_6_0, 2_6_0_7, 1_8, 1_3, 5, 4_4_6_1, 1_5, 1_0_5_3_8, 3_8, 8, 1_3_5, 1_5, 8_2_2, 5_8, 1_5, 9_9_3, 1_0_3_6_3, 1_5, 1_4_6_0, 8_0_0_5, 4_4_6_1, 1_5, 9_9_3, 2_5_5, 2_3_2_8, 9, 9, 9, 6, 2_6, 1_1_1_2, 8_1_6, 3_2_6_0, 1_3, 5, 1_0_3, 2_3_7_7, 6, 1_7, 1_1_1_2, 8_1_6, 2_7_8_2, 1_3, 5, 1_0_3, 1_0_6_4_1, 6, 2_9, 8_4, 2_5_1_2, 2_4_3_0, 7_8_2, 1_8_6_8_4, 2_7_6_1, 1_9, 8_0_8, 2_4_3_0, 2_5_5_6, 1_7, 8_5_5, 1_4_8_0, 9_4_7_7, 4_0_9_1, 1_2_8, 1_1_7_1_2, 1_5, 7_1_0_3, 2_1_5_3, 6_7_3, 1_7, 2_4_8_8_3, 9_9_9_0, 9, 3], [2, 1_1_5_0_2, 2_5, 1_0_0_6, 2_0, 7_8_2, 8, 1_1_8_0_9, 8_5_5, 1_7_3_2, 1_9_3_9_3, 1_8_6_6_7, 3_7, 3_6_7, 2_1_0_1_8, 6_9, 1_8_5_4, 3_4, 1_1_8_6_0, 1_9_1_2_4, 2_7, 1_5_6, 2_2_5, 1_7, 1_9_3, 4_1_4_1, 1_9, 6_5, 9_1_2_4, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [2, 1_4, 2_2_3_1, 8_8_6, 2_3_8_5, 1_7_6_5_9, 8_4, 1_4, 1_6_7_9_2, 1_9_5_2, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'token_type_ids': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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='''albert-base-v2'''				,     revision='''6b6560eaf5ff2e250b00c50f380c5389a9c2d82e'''				,     )






'''simple docstring'''





from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tokenizers_available, is_torch_available


A__    :   Optional[Any]           =					{
    '''configuration_squeezebert''': [
        '''SQUEEZEBERT_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''SqueezeBertConfig''',
        '''SqueezeBertOnnxConfig''',
    ],
    '''tokenization_squeezebert''': ['''SqueezeBertTokenizer'''],
}

try:
    if not is_tokenizers_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    A__    :   Tuple           =					['''SqueezeBertTokenizerFast''']

try:
    if not is_torch_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    A__    :   str           =					[
        '''SQUEEZEBERT_PRETRAINED_MODEL_ARCHIVE_LIST''',
        '''SqueezeBertForMaskedLM''',
        '''SqueezeBertForMultipleChoice''',
        '''SqueezeBertForQuestionAnswering''',
        '''SqueezeBertForSequenceClassification''',
        '''SqueezeBertForTokenClassification''',
        '''SqueezeBertModel''',
        '''SqueezeBertModule''',
        '''SqueezeBertPreTrainedModel''',
    ]


if TYPE_CHECKING:
    from .configuration_squeezebert import (
        SQUEEZEBERT_PRETRAINED_CONFIG_ARCHIVE_MAP,
        SqueezeBertConfig,
        SqueezeBertOnnxConfig,
    )
    from .tokenization_squeezebert import SqueezeBertTokenizer

    try:
        if not is_tokenizers_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .tokenization_squeezebert_fast import SqueezeBertTokenizerFast

    try:
        if not is_torch_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_squeezebert import (
            SQUEEZEBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
            SqueezeBertForMaskedLM,
            SqueezeBertForMultipleChoice,
            SqueezeBertForQuestionAnswering,
            SqueezeBertForSequenceClassification,
            SqueezeBertForTokenClassification,
            SqueezeBertModel,
            SqueezeBertModule,
            SqueezeBertPreTrainedModel,
        )

else:
    import sys

    A__    :   List[Any]           =					_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)



