

import unittest

from transformers import SPIECE_UNDERLINE, XLNetTokenizer, XLNetTokenizerFast
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin


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






@require_sentencepiece
@require_tokenizers
class _UpperCamelCase							(							__A							,	unittest.TestCase   ):
			'''simple docstring'''







			lowerCamelCase__           =XLNetTokenizer
			lowerCamelCase__           =XLNetTokenizerFast
			lowerCamelCase__           =True
			lowerCamelCase__           =True
			def 							__UpperCamelCase (			self							: str	)							->       Tuple:

				"""simple docstring"""

				super().setUp()

				# We have a SentencePiece fixture for testing
				SCREAMING_SNAKE_CASE   :      Optional[int]				     =       XLNetTokenizer(a      ,      keep_accents=a	)
				tokenizer.sanitize_special_tokens()
				tokenizer.save_pretrained(self.tmpdirname	)
			def 							__UpperCamelCase (			self							: str	)							->       List[Any]:

				"""simple docstring"""

				SCREAMING_SNAKE_CASE   :      List[str]				     =       "<s>"
				SCREAMING_SNAKE_CASE   :      Any				     =       1

				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							: Any	)							->       Any:

				"""simple docstring"""

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

				self.assertEqual(vocab_keys[0]      ,      "<unk>"	)
				self.assertEqual(vocab_keys[1]      ,      "<s>"	)
				self.assertEqual(vocab_keys[-1]      ,      "<eod>"	)
				self.assertEqual(len(a	)      ,      1006	)
			def 							__UpperCamelCase (			self							: str	)							->       Optional[int]:

				"""simple docstring"""

				self.assertEqual(self.get_tokenizer().vocab_size      ,      1000	)
			def 							__UpperCamelCase (			self							: int	)							->       Dict:

				"""simple docstring"""

				SCREAMING_SNAKE_CASE   :      List[Any]				     =       XLNetTokenizer(a      ,      keep_accents=a	)

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

				self.assertListEqual(tokenizer.convert_tokens_to_ids(a	)      ,      [285, 46, 10, 170, 382]	)

				SCREAMING_SNAKE_CASE   :      Any				     =       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",
				        "é",
				        ".",
				    ]      ,      )
				SCREAMING_SNAKE_CASE   :      Any				     =       tokenizer.convert_tokens_to_ids(a	)
				self.assertListEqual(a      ,      [8, 21, 84, 55, 24, 19, 7, 0, 602, 347, 347, 347, 3, 12, 66, 46, 72, 80, 6, 0, 4]	)

				SCREAMING_SNAKE_CASE   :      Tuple				     =       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>",
				        ".",
				    ]      ,      )
			def 							__UpperCamelCase (			self							: Tuple	)							->       int:

				"""simple docstring"""

				SCREAMING_SNAKE_CASE   :      Tuple				     =       XLNetTokenizer(a      ,      do_lower_case=a	)
				SCREAMING_SNAKE_CASE   :      Optional[int]				     =       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",
				        "se",
				        ".",
				    ]      ,      )
				self.assertListEqual(tokenizer.tokenize("H\u00E9llo"	)      ,      ["▁he", "ll", "o"]	)
			def 							__UpperCamelCase (			self							: Tuple	)							->       Any:

				"""simple docstring"""

				SCREAMING_SNAKE_CASE   :      Any				     =       XLNetTokenizer(a      ,      do_lower_case=a	)
				SCREAMING_SNAKE_CASE   :      Optional[int]				     =       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",
				        "se",
				        ".",
				    ]      ,      )
			@slow
			def 							__UpperCamelCase (			self							: List[str]	)							->       Tuple:

				"""simple docstring"""

				SCREAMING_SNAKE_CASE   :      str				     =       XLNetTokenizer.from_pretrained("xlnet-base-cased"	)

				SCREAMING_SNAKE_CASE   :      str				     =       tokenizer.encode("sequence builders"      ,      add_special_tokens=a	)
				SCREAMING_SNAKE_CASE   :      Dict				     =       tokenizer.encode("multi-sequence build"      ,      add_special_tokens=a	)

				SCREAMING_SNAKE_CASE   :      Union[str, Any]				     =       tokenizer.build_inputs_with_special_tokens(a	)
				SCREAMING_SNAKE_CASE   :      Optional[int]				     =       tokenizer.build_inputs_with_special_tokens(a      ,      a	)

				assert encoded_sentence == text + [4, 3]
				assert encoded_pair == text + [4] + text_a + [4, 3]






			@slow
			def 							__UpperCamelCase (			self							: Any	)							->       Any:

				"""simple docstring"""

				SCREAMING_SNAKE_CASE   :      List[Any]				     =       {"input_ids": [[17, 2_1442, 270, 17, 10, 1_4645, 318, 34, 17, 4546, 3145, 787, 13, 7752, 2_2018, 23, 21, 17, 4546, 3145, 787, 13, 3352, 1_4431, 13, 5500, 11, 1176, 580, 13, 1_6819, 4797, 23, 17, 10, 1_7135, 658, 19, 457, 7932, 13, 184, 19, 3154, 1_7135, 6468, 19, 1404, 1_2269, 19, 4229, 5356, 1_6264, 46, 19, 17, 2_0545, 1_0395, 9, 9, 9, 11, 28, 6421, 9531, 2_0729, 17, 10, 353, 1_7022, 11, 21, 6421, 9531, 1_6949, 17, 10, 1_1509, 753, 11, 33, 95, 2421, 7385, 956, 1_4431, 2626, 25, 842, 7385, 4836, 21, 1429, 2272, 9855, 3120, 161, 2_4738, 19, 1_3203, 658, 218, 787, 21, 430, 1_8482, 847, 2637, 9, 4, 3], [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 322, 2_2178, 27, 1064, 22, 956, 13, 1_1101, 1429, 5854, 2_4313, 1_8953, 40, 422, 2_4366, 68, 1758, 37, 1_0483, 1_4257, 31, 207, 263, 21, 203, 3773, 25, 71, 9735, 9, 4, 3], [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 32, 2049, 3442, 17, 1_3894, 3380, 23, 95, 18, 1_7634, 2288, 9, 4, 3]], "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, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 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, 2], [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2]], "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], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 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]]}  # noqa: E501
				# fmt: on

				self.tokenizer_integration_test_util(
				    expected_encoding=a      ,      model_name="xlnet-base-cased"      ,      revision="c841166438c31ec7ca9a106dee7bb312b73ae511"      ,      )


from typing import TYPE_CHECKING

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


a_						     =    {
    'configuration_bridgetower': [
        'BRIDGETOWER_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'BridgeTowerConfig',
        'BridgeTowerTextConfig',
        'BridgeTowerVisionConfig',
    ],
    'processing_bridgetower': ['BridgeTowerProcessor'],
}

try:
			if not is_vision_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			a_						     =    ['BridgeTowerImageProcessor']

try:
			if not is_torch_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			a_						     =    [
			    'BRIDGETOWER_PRETRAINED_MODEL_ARCHIVE_LIST',
			    'BridgeTowerForContrastiveLearning',
			    'BridgeTowerForImageAndTextRetrieval',
			    'BridgeTowerForMaskedLM',
			    'BridgeTowerModel',
			    'BridgeTowerPreTrainedModel',
			]


if TYPE_CHECKING:
			from .configuration_bridgetower import (
			    BRIDGETOWER_PRETRAINED_CONFIG_ARCHIVE_MAP,
			    BridgeTowerConfig,
			    BridgeTowerTextConfig,
			    BridgeTowerVisionConfig,
			)
			from .processing_bridgetower import BridgeTowerProcessor

			try:
						if not is_vision_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .image_processing_bridgetower import BridgeTowerImageProcessor

			try:
						if not is_torch_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_bridgetower import (
						    BRIDGETOWER_PRETRAINED_MODEL_ARCHIVE_LIST,
						    BridgeTowerForContrastiveLearning,
						    BridgeTowerForImageAndTextRetrieval,
						    BridgeTowerForMaskedLM,
						    BridgeTowerModel,
						    BridgeTowerPreTrainedModel,
						)


else:
			import sys

			a_						     =    _LazyModule(__name__, globals()['__file__'], _import_structure)