

import os
import unittest

from transformers import RealmTokenizerFast
from transformers.models.bert.tokenization_bert import (
    VOCAB_FILES_NAMES,
    BasicTokenizer,
    WordpieceTokenizer,
    _is_control,
    _is_punctuation,
    _is_whitespace,
)
from transformers.models.realm.tokenization_realm import RealmTokenizer
from transformers.testing_utils import require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin, filter_non_english
@require_tokenizers
class 		SCREAMING_SNAKE_CASE__					(		lowerCamelCase__						,	unittest.TestCase   ):







						"""simple docstring"""




						lowercase  :				List[Any]											=							RealmTokenizer
						lowercase  :				Union[str, Any]											=							RealmTokenizerFast
						lowercase  :				Any											=							True
						lowercase  :				Any											=							True
						lowercase  :				Optional[int]											=							filter_non_english

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




									'''simple docstring'''


									super().setUp()

									__UpperCamelCase    :    List[Any]								=      [
									    "[UNK]",
									    "[CLS]",
									    "[SEP]",
									    "[PAD]",
									    "[MASK]",
									    "want",
									    "##want",
									    "##ed",
									    "wa",
									    "un",
									    "runn",
									    "##ing",
									    ",",
									    "low",
									    "lowest",
									]
									__UpperCamelCase    :    Any								=      os.path.join(self.tmpdirname , VOCAB_FILES_NAMES["vocab_file"]    )
									with open(self.vocab_file , "w" , encoding="utf-8"    ) as vocab_writer:
												vocab_writer.write("".join([x + "\n" for x in vocab_tokens]    )    )

						def __lowerCamelCase					(				self , __UpperCamelCase    )							->	str:




									'''simple docstring'''


									__UpperCamelCase    :    int								=      "UNwant\u00E9d,running"
									__UpperCamelCase    :    str								=      "unwanted, running"
									return input_text, output_text

						def __lowerCamelCase					(				self    )							->	int:




									'''simple docstring'''


									__UpperCamelCase    :    List[str]								=      self.tokenizer_class(self.vocab_file    )

									__UpperCamelCase    :    Tuple								=      tokenizer.tokenize("UNwant\u00E9d,running"    )
									self.assertListEqual(__UpperCamelCase , ["un", "##want", "##ed", ",", "runn", "##ing"]    )
									self.assertListEqual(tokenizer.convert_tokens_to_ids(__UpperCamelCase    ) , [9, 6, 7, 12, 10, 11]    )

						def __lowerCamelCase					(				self    )							->	Tuple:




									'''simple docstring'''


									if not self.test_rust_tokenizer:
												return

									__UpperCamelCase    :    Tuple								=      self.get_tokenizer()
									__UpperCamelCase    :    int								=      self.get_rust_tokenizer()

									__UpperCamelCase    :    Optional[Any]								=      "UNwant\u00E9d,running"

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

									__UpperCamelCase    :    Optional[int]								=      tokenizer.encode(__UpperCamelCase , add_special_tokens=__UpperCamelCase    )
									__UpperCamelCase    :    Optional[int]								=      rust_tokenizer.encode(__UpperCamelCase , add_special_tokens=__UpperCamelCase    )
									self.assertListEqual(__UpperCamelCase , __UpperCamelCase    )

									__UpperCamelCase    :    Tuple								=      self.get_rust_tokenizer()
									__UpperCamelCase    :    Any								=      tokenizer.encode(__UpperCamelCase    )
									__UpperCamelCase    :    Dict								=      rust_tokenizer.encode(__UpperCamelCase    )
									self.assertListEqual(__UpperCamelCase , __UpperCamelCase    )

									# With lower casing
									__UpperCamelCase    :    Any								=      self.get_tokenizer(do_lower_case=__UpperCamelCase    )
									__UpperCamelCase    :    int								=      self.get_rust_tokenizer(do_lower_case=__UpperCamelCase    )

									__UpperCamelCase    :    Dict								=      "UNwant\u00E9d,running"

									__UpperCamelCase    :    Optional[int]								=      tokenizer.tokenize(__UpperCamelCase    )
									__UpperCamelCase    :    Optional[Any]								=      rust_tokenizer.tokenize(__UpperCamelCase    )
									self.assertListEqual(__UpperCamelCase , __UpperCamelCase    )

									__UpperCamelCase    :    List[str]								=      tokenizer.encode(__UpperCamelCase , add_special_tokens=__UpperCamelCase    )
									__UpperCamelCase    :    Tuple								=      rust_tokenizer.encode(__UpperCamelCase , add_special_tokens=__UpperCamelCase    )
									self.assertListEqual(__UpperCamelCase , __UpperCamelCase    )

									__UpperCamelCase    :    Any								=      self.get_rust_tokenizer()
									__UpperCamelCase    :    Optional[Any]								=      tokenizer.encode(__UpperCamelCase    )
									__UpperCamelCase    :    Dict								=      rust_tokenizer.encode(__UpperCamelCase    )
									self.assertListEqual(__UpperCamelCase , __UpperCamelCase    )

						def __lowerCamelCase					(				self    )							->	str:




									'''simple docstring'''


									__UpperCamelCase    :    Dict								=      BasicTokenizer()

									self.assertListEqual(tokenizer.tokenize("ah\u535A\u63A8zz"    ) , ["ah", "\u535A", "\u63A8", "zz"]    )

						def __lowerCamelCase					(				self    )							->	Any:




									'''simple docstring'''


									__UpperCamelCase    :    Optional[Any]								=      BasicTokenizer(do_lower_case=__UpperCamelCase    )

									self.assertListEqual(
									    tokenizer.tokenize(" \tHeLLo!how  \n Are yoU?  "    ) , ["hello", "!", "how", "are", "you", "?"]    )
									self.assertListEqual(tokenizer.tokenize("H\u00E9llo"    ) , ["hello"]    )

						def __lowerCamelCase					(				self    )							->	Tuple:




									'''simple docstring'''


									__UpperCamelCase    :    Optional[int]								=      BasicTokenizer(do_lower_case=__UpperCamelCase , strip_accents=__UpperCamelCase    )

									self.assertListEqual(
									    tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "    ) , ["hällo", "!", "how", "are", "you", "?"]    )
									self.assertListEqual(tokenizer.tokenize("H\u00E9llo"    ) , ["h\u00E9llo"]    )

						def __lowerCamelCase					(				self    )							->	Tuple:




									'''simple docstring'''


									__UpperCamelCase    :    Tuple								=      BasicTokenizer(do_lower_case=__UpperCamelCase , strip_accents=__UpperCamelCase    )

									self.assertListEqual(
									    tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "    ) , ["hallo", "!", "how", "are", "you", "?"]    )
									self.assertListEqual(tokenizer.tokenize("H\u00E9llo"    ) , ["hello"]    )

						def __lowerCamelCase					(				self    )							->	Any:




									'''simple docstring'''


									__UpperCamelCase    :    Tuple								=      BasicTokenizer(do_lower_case=__UpperCamelCase    )

									self.assertListEqual(
									    tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "    ) , ["hallo", "!", "how", "are", "you", "?"]    )
									self.assertListEqual(tokenizer.tokenize("H\u00E9llo"    ) , ["hello"]    )

						def __lowerCamelCase					(				self    )							->	Any:




									'''simple docstring'''


									__UpperCamelCase    :    Union[str, Any]								=      BasicTokenizer(do_lower_case=__UpperCamelCase    )

									self.assertListEqual(
									    tokenizer.tokenize(" \tHeLLo!how  \n Are yoU?  "    ) , ["HeLLo", "!", "how", "Are", "yoU", "?"]    )

						def __lowerCamelCase					(				self    )							->	Dict:




									'''simple docstring'''


									__UpperCamelCase    :    List[str]								=      BasicTokenizer(do_lower_case=__UpperCamelCase , strip_accents=__UpperCamelCase    )

									self.assertListEqual(
									    tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "    ) , ["HäLLo", "!", "how", "Are", "yoU", "?"]    )

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




									'''simple docstring'''


									__UpperCamelCase    :    List[str]								=      BasicTokenizer(do_lower_case=__UpperCamelCase , strip_accents=__UpperCamelCase    )

									self.assertListEqual(
									    tokenizer.tokenize(" \tHäLLo!how  \n Are yoU?  "    ) , ["HaLLo", "!", "how", "Are", "yoU", "?"]    )

						def __lowerCamelCase					(				self    )							->	int:




									'''simple docstring'''


									__UpperCamelCase    :    Optional[Any]								=      BasicTokenizer(do_lower_case=__UpperCamelCase , never_split=["[UNK]"]    )

									self.assertListEqual(
									    tokenizer.tokenize(" \tHeLLo!how  \n Are yoU? [UNK]"    ) , ["HeLLo", "!", "how", "Are", "yoU", "?", "[UNK]"]    )

						def __lowerCamelCase					(				self    )							->	Any:




									'''simple docstring'''


									__UpperCamelCase    :    int								=      ["[UNK]", "[CLS]", "[SEP]", "want", "##want", "##ed", "wa", "un", "runn", "##ing"]

									__UpperCamelCase    :    Dict								=      {}
									for i, token in enumerate(__UpperCamelCase    ):
												__UpperCamelCase    :    List[str]								=      i
									__UpperCamelCase    :    Tuple								=      WordpieceTokenizer(vocab=__UpperCamelCase , unk_token="[UNK]"    )

									self.assertListEqual(tokenizer.tokenize(""    ) , []    )

									self.assertListEqual(tokenizer.tokenize("unwanted running"    ) , ["un", "##want", "##ed", "runn", "##ing"]    )

									self.assertListEqual(tokenizer.tokenize("unwantedX running"    ) , ["[UNK]", "runn", "##ing"]    )

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




									'''simple docstring'''


									self.assertTrue(_is_whitespace(" "    )    )
									self.assertTrue(_is_whitespace("\t"    )    )
									self.assertTrue(_is_whitespace("\r"    )    )
									self.assertTrue(_is_whitespace("\n"    )    )
									self.assertTrue(_is_whitespace("\u00A0"    )    )

									self.assertFalse(_is_whitespace("A"    )    )
									self.assertFalse(_is_whitespace("-"    )    )

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




									'''simple docstring'''


									self.assertTrue(_is_control("\u0005"    )    )

									self.assertFalse(_is_control("A"    )    )
									self.assertFalse(_is_control(" "    )    )
									self.assertFalse(_is_control("\t"    )    )
									self.assertFalse(_is_control("\r"    )    )

						def __lowerCamelCase					(				self    )							->	Union[str, Any]:




									'''simple docstring'''


									self.assertTrue(_is_punctuation("-"    )    )
									self.assertTrue(_is_punctuation("$"    )    )
									self.assertTrue(_is_punctuation("`"    )    )
									self.assertTrue(_is_punctuation("."    )    )

									self.assertFalse(_is_punctuation("A"    )    )
									self.assertFalse(_is_punctuation(" "    )    )

						def __lowerCamelCase					(				self    )							->	Any:




									'''simple docstring'''


									__UpperCamelCase    :    List[str]								=      self.get_tokenizer()

									# Example taken from the issue https://github.com/huggingface/tokenizers/issues/340
									self.assertListEqual([tokenizer.tokenize(__UpperCamelCase    ) for t in ["Test", "\xad", "test"]] , [["[UNK]"], [], ["[UNK]"]]    )

									if self.test_rust_tokenizer:
												__UpperCamelCase    :    Dict								=      self.get_rust_tokenizer()
												self.assertListEqual(
												    [rust_tokenizer.tokenize(__UpperCamelCase    ) for t in ["Test", "\xad", "test"]] , [["[UNK]"], [], ["[UNK]"]]    )

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




									'''simple docstring'''


									__UpperCamelCase    :    List[Any]								=      self.tokenizer_class.from_pretrained("bert-base-uncased"    )

									__UpperCamelCase    :    List[str]								=      tokenizer.encode("sequence builders" , add_special_tokens=__UpperCamelCase    )
									__UpperCamelCase    :    Optional[Any]								=      tokenizer.encode("multi-sequence build" , add_special_tokens=__UpperCamelCase    )

									__UpperCamelCase    :    str								=      tokenizer.build_inputs_with_special_tokens(__UpperCamelCase    )
									__UpperCamelCase    :    Optional[Any]								=      tokenizer.build_inputs_with_special_tokens(__UpperCamelCase , __UpperCamelCase    )

									assert encoded_sentence == [1_01] + text + [1_02]
									assert encoded_pair == [1_01] + text + [1_02] + text_a + [1_02]

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




									'''simple docstring'''


									for tokenizer, pretrained_name, kwargs in self.tokenizers_list:
												with self.subTest(f'''{tokenizer.__class__.__name__} ({pretrained_name})'''    ):
															__UpperCamelCase    :    Any								=      self.rust_tokenizer_class.from_pretrained(__UpperCamelCase , **__UpperCamelCase    )

															__UpperCamelCase    :    int								=      f'''A, naïve {tokenizer_r.mask_token} AllenNLP sentence.'''
															__UpperCamelCase    :    List[str]								=      tokenizer_r.encode_plus(
															    __UpperCamelCase , return_attention_mask=__UpperCamelCase , return_token_type_ids=__UpperCamelCase , return_offsets_mapping=__UpperCamelCase , add_special_tokens=__UpperCamelCase , )

															__UpperCamelCase    :    Optional[int]								=      tokenizer_r.do_lower_case if hasattr(__UpperCamelCase , "do_lower_case"    ) else False
															__UpperCamelCase    :    Optional[Any]								=      (
															    [
															        ((0, 0), tokenizer_r.cls_token),
															        ((0, 1), "A"),
															        ((1, 2), ","),
															        ((3, 5), "na"),
															        ((5, 6), "##ï"),
															        ((6, 8), "##ve"),
															        ((9, 15), tokenizer_r.mask_token),
															        ((16, 21), "Allen"),
															        ((21, 23), "##NL"),
															        ((23, 24), "##P"),
															        ((25, 33), "sentence"),
															        ((33, 34), "."),
															        ((0, 0), tokenizer_r.sep_token),
															    ]
															    if not do_lower_case
															    else [
															        ((0, 0), tokenizer_r.cls_token),
															        ((0, 1), "a"),
															        ((1, 2), ","),
															        ((3, 8), "naive"),
															        ((9, 15), tokenizer_r.mask_token),
															        ((16, 21), "allen"),
															        ((21, 23), "##nl"),
															        ((23, 24), "##p"),
															        ((25, 33), "sentence"),
															        ((33, 34), "."),
															        ((0, 0), tokenizer_r.sep_token),
															    ]
															)

															self.assertEqual(
															    [e[1] for e in expected_results] , tokenizer_r.convert_ids_to_tokens(tokens["input_ids"]    )    )
															self.assertEqual([e[0] for e in expected_results] , tokens["offset_mapping"]    )




						@slow
						def __lowerCamelCase					(				self    )							->	Optional[int]:




									'''simple docstring'''


									for tokenizer, pretrained_name, kwargs in self.tokenizers_list:
												with self.subTest(f'''{tokenizer.__class__.__name__} ({pretrained_name})'''    ):
															__UpperCamelCase    :    Union[str, Any]								=      self.rust_tokenizer_class.from_pretrained(__UpperCamelCase , **__UpperCamelCase    )
															__UpperCamelCase    :    List[Any]								=      self.tokenizer_class.from_pretrained(__UpperCamelCase , **__UpperCamelCase    )
															__UpperCamelCase    :    List[str]								=      [["Hello world!", "Nice to meet you!"], ["The cute cat.", "The adorable dog."]]

															__UpperCamelCase    :    int								=      tokenizer_r.batch_encode_candidates(__UpperCamelCase , max_length=10 , return_tensors="np"    )
															__UpperCamelCase    :    int								=      tokenizer_p.batch_encode_candidates(__UpperCamelCase , max_length=10 , return_tensors="np"    )

															__UpperCamelCase    :    List[str]								=      (2, 2, 10)

															self.assertEqual(encoded_sentence_r["input_ids"].shape , __UpperCamelCase    )
															self.assertEqual(encoded_sentence_r["attention_mask"].shape , __UpperCamelCase    )
															self.assertEqual(encoded_sentence_r["token_type_ids"].shape , __UpperCamelCase    )

															self.assertEqual(encoded_sentence_p["input_ids"].shape , __UpperCamelCase    )
															self.assertEqual(encoded_sentence_p["attention_mask"].shape , __UpperCamelCase    )
															self.assertEqual(encoded_sentence_p["token_type_ids"].shape , __UpperCamelCase    )


import random
import sys

from . import cryptomath_module as cryptomath

lowercase     :       Optional[Any]        =       (
    r" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`"
    r"abcdefghijklmnopqrstuvwxyz{|}~"
)







def  UpperCAmelCase_   (_lowerCAmelCase :		int     ,			_lowerCAmelCase :		int     ,			_lowerCAmelCase :		str		):
			if mode == "encrypt":
						if key_a == 1:
									sys.exit(
									    "The affine cipher becomes weak when key "
									    "A is set to 1. Choose different key"		)
						if key_b == 0:
									sys.exit(
									    "The affine cipher becomes weak when key "
									    "B is set to 0. Choose different key"		)
			if key_a < 0 or key_b < 0 or key_b > len(_lowerCAmelCase		) - 1:
						sys.exit(
						    "Key A must be greater than 0 and key B must "
						    F'''be between 0 and {len(_lowerCAmelCase		) - 1}.'''		)
			if cryptomath.gcd(_lowerCAmelCase     ,			len(_lowerCAmelCase		)		) != 1:
						sys.exit(
						    F'''Key A {key_a} and the symbol set size {len(_lowerCAmelCase		)} '''
						    "are not relatively prime. Choose a different key."		)







def  UpperCAmelCase_   (_lowerCAmelCase :		int     ,			_lowerCAmelCase :		str		):
			__UpperCamelCase							,				__UpperCamelCase    :    int								=      divmod(_lowerCAmelCase     ,			len(_lowerCAmelCase		)		)
			check_keys(_lowerCAmelCase     ,			_lowerCAmelCase     ,			"encrypt"		)
			__UpperCamelCase    :    List[Any]								=      ""
			for symbol in message:
						if symbol in SYMBOLS:
									__UpperCamelCase    :    Tuple								=      SYMBOLS.find(_lowerCAmelCase		)
									cipher_text += SYMBOLS[(sym_index * key_a + key_b) % len(_lowerCAmelCase		)]
						else:
									cipher_text += symbol
			return cipher_text







def  UpperCAmelCase_   (_lowerCAmelCase :		int     ,			_lowerCAmelCase :		str		):
			__UpperCamelCase							,				__UpperCamelCase    :    List[str]								=      divmod(_lowerCAmelCase     ,			len(_lowerCAmelCase		)		)
			check_keys(_lowerCAmelCase     ,			_lowerCAmelCase     ,			"decrypt"		)
			__UpperCamelCase    :    List[Any]								=      ""
			__UpperCamelCase    :    Tuple								=      cryptomath.find_mod_inverse(_lowerCAmelCase     ,			len(_lowerCAmelCase		)		)
			for symbol in message:
						if symbol in SYMBOLS:
									__UpperCamelCase    :    List[Any]								=      SYMBOLS.find(_lowerCAmelCase		)
									plain_text += SYMBOLS[
									    (sym_index - key_b) * mod_inverse_of_key_a % len(_lowerCAmelCase		)
									]
						else:
									plain_text += symbol
			return plain_text







def  UpperCAmelCase_   ():
			while True:
						__UpperCamelCase    :    Optional[int]								=      random.randint(2     ,			len(_lowerCAmelCase		)		)
						__UpperCamelCase    :    Optional[int]								=      random.randint(2     ,			len(_lowerCAmelCase		)		)
						if cryptomath.gcd(_lowerCAmelCase     ,			len(_lowerCAmelCase		)		) == 1 and key_b % len(_lowerCAmelCase		) != 0:
									return key_b * len(_lowerCAmelCase		) + key_b







def  UpperCAmelCase_   ():
			__UpperCamelCase    :    List[Any]								=      input("Enter message: "		).strip()
			__UpperCamelCase    :    List[Any]								=      int(input("Enter key [2000 - 9000]: "		).strip()		)
			__UpperCamelCase    :    Optional[int]								=      input("Encrypt/Decrypt [E/D]: "		).strip().lower()

			if mode.startswith("e"		):
						__UpperCamelCase    :    str								=      "encrypt"
						__UpperCamelCase    :    str								=      encrypt_message(_lowerCAmelCase     ,			_lowerCAmelCase		)
			elif mode.startswith("d"		):
						__UpperCamelCase    :    int								=      "decrypt"
						__UpperCamelCase    :    Dict								=      decrypt_message(_lowerCAmelCase     ,			_lowerCAmelCase		)
			print(F'''\n{mode.title()}ed text: \n{translated}'''		)


if __name__ == "__main__":
					import doctest

					doctest.testmod()
					# main()