





"""simple docstring"""


# Copyright 2023 The HuggingFace Inc. team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from ..models.auto import AutoModelForSeqaSeqLM, AutoTokenizer
from .base import PipelineTool


__magic_name__       :					Optional[Any]						=			{
    """Acehnese Arabic""": """ace_Arab""",
    """Acehnese Latin""": """ace_Latn""",
    """Mesopotamian Arabic""": """acm_Arab""",
    """Ta'izzi-Adeni Arabic""": """acq_Arab""",
    """Tunisian Arabic""": """aeb_Arab""",
    """Afrikaans""": """afr_Latn""",
    """South Levantine Arabic""": """ajp_Arab""",
    """Akan""": """aka_Latn""",
    """Amharic""": """amh_Ethi""",
    """North Levantine Arabic""": """apc_Arab""",
    """Modern Standard Arabic""": """arb_Arab""",
    """Modern Standard Arabic Romanized""": """arb_Latn""",
    """Najdi Arabic""": """ars_Arab""",
    """Moroccan Arabic""": """ary_Arab""",
    """Egyptian Arabic""": """arz_Arab""",
    """Assamese""": """asm_Beng""",
    """Asturian""": """ast_Latn""",
    """Awadhi""": """awa_Deva""",
    """Central Aymara""": """ayr_Latn""",
    """South Azerbaijani""": """azb_Arab""",
    """North Azerbaijani""": """azj_Latn""",
    """Bashkir""": """bak_Cyrl""",
    """Bambara""": """bam_Latn""",
    """Balinese""": """ban_Latn""",
    """Belarusian""": """bel_Cyrl""",
    """Bemba""": """bem_Latn""",
    """Bengali""": """ben_Beng""",
    """Bhojpuri""": """bho_Deva""",
    """Banjar Arabic""": """bjn_Arab""",
    """Banjar Latin""": """bjn_Latn""",
    """Standard Tibetan""": """bod_Tibt""",
    """Bosnian""": """bos_Latn""",
    """Buginese""": """bug_Latn""",
    """Bulgarian""": """bul_Cyrl""",
    """Catalan""": """cat_Latn""",
    """Cebuano""": """ceb_Latn""",
    """Czech""": """ces_Latn""",
    """Chokwe""": """cjk_Latn""",
    """Central Kurdish""": """ckb_Arab""",
    """Crimean Tatar""": """crh_Latn""",
    """Welsh""": """cym_Latn""",
    """Danish""": """dan_Latn""",
    """German""": """deu_Latn""",
    """Southwestern Dinka""": """dik_Latn""",
    """Dyula""": """dyu_Latn""",
    """Dzongkha""": """dzo_Tibt""",
    """Greek""": """ell_Grek""",
    """English""": """eng_Latn""",
    """Esperanto""": """epo_Latn""",
    """Estonian""": """est_Latn""",
    """Basque""": """eus_Latn""",
    """Ewe""": """ewe_Latn""",
    """Faroese""": """fao_Latn""",
    """Fijian""": """fij_Latn""",
    """Finnish""": """fin_Latn""",
    """Fon""": """fon_Latn""",
    """French""": """fra_Latn""",
    """Friulian""": """fur_Latn""",
    """Nigerian Fulfulde""": """fuv_Latn""",
    """Scottish Gaelic""": """gla_Latn""",
    """Irish""": """gle_Latn""",
    """Galician""": """glg_Latn""",
    """Guarani""": """grn_Latn""",
    """Gujarati""": """guj_Gujr""",
    """Haitian Creole""": """hat_Latn""",
    """Hausa""": """hau_Latn""",
    """Hebrew""": """heb_Hebr""",
    """Hindi""": """hin_Deva""",
    """Chhattisgarhi""": """hne_Deva""",
    """Croatian""": """hrv_Latn""",
    """Hungarian""": """hun_Latn""",
    """Armenian""": """hye_Armn""",
    """Igbo""": """ibo_Latn""",
    """Ilocano""": """ilo_Latn""",
    """Indonesian""": """ind_Latn""",
    """Icelandic""": """isl_Latn""",
    """Italian""": """ita_Latn""",
    """Javanese""": """jav_Latn""",
    """Japanese""": """jpn_Jpan""",
    """Kabyle""": """kab_Latn""",
    """Jingpho""": """kac_Latn""",
    """Kamba""": """kam_Latn""",
    """Kannada""": """kan_Knda""",
    """Kashmiri Arabic""": """kas_Arab""",
    """Kashmiri Devanagari""": """kas_Deva""",
    """Georgian""": """kat_Geor""",
    """Central Kanuri Arabic""": """knc_Arab""",
    """Central Kanuri Latin""": """knc_Latn""",
    """Kazakh""": """kaz_Cyrl""",
    """Kabiyè""": """kbp_Latn""",
    """Kabuverdianu""": """kea_Latn""",
    """Khmer""": """khm_Khmr""",
    """Kikuyu""": """kik_Latn""",
    """Kinyarwanda""": """kin_Latn""",
    """Kyrgyz""": """kir_Cyrl""",
    """Kimbundu""": """kmb_Latn""",
    """Northern Kurdish""": """kmr_Latn""",
    """Kikongo""": """kon_Latn""",
    """Korean""": """kor_Hang""",
    """Lao""": """lao_Laoo""",
    """Ligurian""": """lij_Latn""",
    """Limburgish""": """lim_Latn""",
    """Lingala""": """lin_Latn""",
    """Lithuanian""": """lit_Latn""",
    """Lombard""": """lmo_Latn""",
    """Latgalian""": """ltg_Latn""",
    """Luxembourgish""": """ltz_Latn""",
    """Luba-Kasai""": """lua_Latn""",
    """Ganda""": """lug_Latn""",
    """Luo""": """luo_Latn""",
    """Mizo""": """lus_Latn""",
    """Standard Latvian""": """lvs_Latn""",
    """Magahi""": """mag_Deva""",
    """Maithili""": """mai_Deva""",
    """Malayalam""": """mal_Mlym""",
    """Marathi""": """mar_Deva""",
    """Minangkabau Arabic """: """min_Arab""",
    """Minangkabau Latin""": """min_Latn""",
    """Macedonian""": """mkd_Cyrl""",
    """Plateau Malagasy""": """plt_Latn""",
    """Maltese""": """mlt_Latn""",
    """Meitei Bengali""": """mni_Beng""",
    """Halh Mongolian""": """khk_Cyrl""",
    """Mossi""": """mos_Latn""",
    """Maori""": """mri_Latn""",
    """Burmese""": """mya_Mymr""",
    """Dutch""": """nld_Latn""",
    """Norwegian Nynorsk""": """nno_Latn""",
    """Norwegian Bokmål""": """nob_Latn""",
    """Nepali""": """npi_Deva""",
    """Northern Sotho""": """nso_Latn""",
    """Nuer""": """nus_Latn""",
    """Nyanja""": """nya_Latn""",
    """Occitan""": """oci_Latn""",
    """West Central Oromo""": """gaz_Latn""",
    """Odia""": """ory_Orya""",
    """Pangasinan""": """pag_Latn""",
    """Eastern Panjabi""": """pan_Guru""",
    """Papiamento""": """pap_Latn""",
    """Western Persian""": """pes_Arab""",
    """Polish""": """pol_Latn""",
    """Portuguese""": """por_Latn""",
    """Dari""": """prs_Arab""",
    """Southern Pashto""": """pbt_Arab""",
    """Ayacucho Quechua""": """quy_Latn""",
    """Romanian""": """ron_Latn""",
    """Rundi""": """run_Latn""",
    """Russian""": """rus_Cyrl""",
    """Sango""": """sag_Latn""",
    """Sanskrit""": """san_Deva""",
    """Santali""": """sat_Olck""",
    """Sicilian""": """scn_Latn""",
    """Shan""": """shn_Mymr""",
    """Sinhala""": """sin_Sinh""",
    """Slovak""": """slk_Latn""",
    """Slovenian""": """slv_Latn""",
    """Samoan""": """smo_Latn""",
    """Shona""": """sna_Latn""",
    """Sindhi""": """snd_Arab""",
    """Somali""": """som_Latn""",
    """Southern Sotho""": """sot_Latn""",
    """Spanish""": """spa_Latn""",
    """Tosk Albanian""": """als_Latn""",
    """Sardinian""": """srd_Latn""",
    """Serbian""": """srp_Cyrl""",
    """Swati""": """ssw_Latn""",
    """Sundanese""": """sun_Latn""",
    """Swedish""": """swe_Latn""",
    """Swahili""": """swh_Latn""",
    """Silesian""": """szl_Latn""",
    """Tamil""": """tam_Taml""",
    """Tatar""": """tat_Cyrl""",
    """Telugu""": """tel_Telu""",
    """Tajik""": """tgk_Cyrl""",
    """Tagalog""": """tgl_Latn""",
    """Thai""": """tha_Thai""",
    """Tigrinya""": """tir_Ethi""",
    """Tamasheq Latin""": """taq_Latn""",
    """Tamasheq Tifinagh""": """taq_Tfng""",
    """Tok Pisin""": """tpi_Latn""",
    """Tswana""": """tsn_Latn""",
    """Tsonga""": """tso_Latn""",
    """Turkmen""": """tuk_Latn""",
    """Tumbuka""": """tum_Latn""",
    """Turkish""": """tur_Latn""",
    """Twi""": """twi_Latn""",
    """Central Atlas Tamazight""": """tzm_Tfng""",
    """Uyghur""": """uig_Arab""",
    """Ukrainian""": """ukr_Cyrl""",
    """Umbundu""": """umb_Latn""",
    """Urdu""": """urd_Arab""",
    """Northern Uzbek""": """uzn_Latn""",
    """Venetian""": """vec_Latn""",
    """Vietnamese""": """vie_Latn""",
    """Waray""": """war_Latn""",
    """Wolof""": """wol_Latn""",
    """Xhosa""": """xho_Latn""",
    """Eastern Yiddish""": """ydd_Hebr""",
    """Yoruba""": """yor_Latn""",
    """Yue Chinese""": """yue_Hant""",
    """Chinese Simplified""": """zho_Hans""",
    """Chinese Traditional""": """zho_Hant""",
    """Standard Malay""": """zsm_Latn""",
    """Zulu""": """zul_Latn""",
}






class 							lowercase__			(   __SCREAMING_SNAKE_CASE	):

			"""simple docstring"""
			__lowerCAmelCase     :				Tuple										=  """facebook/nllb-200-distilled-600M"""
			__lowerCAmelCase     :				str										=  (
			    """This is a tool that translates text from a language to another. It takes three inputs: `text`, which should """
			    """be the text to translate, `src_lang`, which should be the language of the text to translate and `tgt_lang`, """
			    """which should be the language for the desired ouput language. Both `src_lang` and `tgt_lang` are written in """
			    """plain English, such as 'Romanian', or 'Albanian'. It returns the text translated in `tgt_lang`."""
			)
			__lowerCAmelCase     :				List[str]										=  """translator"""
			__lowerCAmelCase     :				Union[str, Any]										=  AutoTokenizer
			__lowerCAmelCase     :				List[Any]										=  AutoModelForSeqaSeqLM
			__lowerCAmelCase     :				List[Any]										=  LANGUAGE_CODES

			__lowerCAmelCase     :				Union[str, Any]										=  ["""text""", """text""", """text"""]
			__lowerCAmelCase     :				Optional[Any]										=  ["""text"""]







			def   _a      (      self						,   _A						,   _A						,   _A    ):






									'''simple docstring'''







									if src_lang not in self.lang_to_code:
															raise ValueError(f"""{src_lang} is not a supported language."""    )
									if tgt_lang not in self.lang_to_code:
															raise ValueError(f"""{tgt_lang} is not a supported language."""    )
									UpperCamelCase				:		Dict				   =			self.lang_to_code[src_lang]
									UpperCamelCase				:		Tuple				   =			self.lang_to_code[tgt_lang]
									return self.pre_processor._build_translation_inputs(
									    _A						,   return_tensors="""pt"""						,   src_lang=_A						,   tgt_lang=_A    )







			def   _a      (      self						,   _A    ):






									'''simple docstring'''







									return self.model.generate(**_A    )







			def   _a      (      self						,   _A    ):






									'''simple docstring'''







									return self.post_processor.decode(outputs[0].tolist()						,   skip_special_tokens=_A    )










"""simple docstring"""


import json
import os
import re
import shutil
import tempfile
import unittest
from typing import Tuple

from transformers import AddedToken, BatchEncoding, PerceiverTokenizer
from transformers.utils import cached_property, is_tf_available, is_torch_available

from ...test_tokenization_common import TokenizerTesterMixin


if is_torch_available():
		__magic_name__       :					Any						=			"""pt"""
elif is_tf_available():
		__magic_name__       :					Optional[Any]						=			"""tf"""
else:
		__magic_name__       :					int						=			"""jax"""






class 							lowercase__			(   __SCREAMING_SNAKE_CASE					,     unittest.TestCase	):

			"""simple docstring"""
			__lowerCAmelCase     :				Any										=  PerceiverTokenizer
			__lowerCAmelCase     :				int										=  False







			def   _a      (      self    ):






									'''simple docstring'''







									super().setUp()
									UpperCamelCase				:		List[Any]				   =			PerceiverTokenizer()
									tokenizer.save_pretrained(self.tmpdirname    )







			@cached_property
			def   _a      (      self    ):






									'''simple docstring'''







									return PerceiverTokenizer.from_pretrained("""deepmind/language-perceiver"""    )







			def   _a      (      self						,   **_A    ):






									'''simple docstring'''







									return self.tokenizer_class.from_pretrained(self.tmpdirname						,   **_A    )







			def   _a      (      self						,   _A						,   _A=False						,   _A=2_0						,   _A=5    ):






									'''simple docstring'''







									UpperCamelCase				:		Tuple				   =			[]
									for i in range(len(_A    )    ):
															try:
																					UpperCamelCase				:		List[str]				   =			tokenizer.decode([i]						,   clean_up_tokenization_spaces=_A    )
															except UnicodeDecodeError:
																					pass
															toks.append((i, tok)    )

									UpperCamelCase				:		Dict				   =			list(filter(lambda _A    : re.match(r"""^[ a-zA-Z]+$"""						,   t[1]    )						,   _A    )    )
									UpperCamelCase				:		List[str]				   =			list(filter(lambda _A    : [t[0]] == tokenizer.encode(t[1]						,   add_special_tokens=_A    )						,   _A    )    )
									if max_length is not None and len(_A    ) > max_length:
															UpperCamelCase				:		int				   =			toks[:max_length]
									if min_length is not None and len(_A    ) < min_length and len(_A    ) > 0:
															while len(_A    ) < min_length:
																					UpperCamelCase				:		List[str]				   =			toks + toks
        # toks_str = [t[1] for t in toks]
									UpperCamelCase				:		Any				   =			[t[0] for t in toks]

									# Ensure consistency
									UpperCamelCase				:		List[str]				   =			tokenizer.decode(_A						,   clean_up_tokenization_spaces=_A    )
									if " " not in output_txt and len(_A    ) > 1:
															UpperCamelCase				:		Optional[Any]				   =			(
															    tokenizer.decode([toks_ids[0]]						,   clean_up_tokenization_spaces=_A    )
															    + """ """
															    + tokenizer.decode(toks_ids[1:]						,   clean_up_tokenization_spaces=_A    )
															)
									if with_prefix_space:
															UpperCamelCase				:		Dict				   =			""" """ + output_txt
									UpperCamelCase				:		List[Any]				   =			tokenizer.encode(_A						,   add_special_tokens=_A    )
									return output_txt, output_ids







			def   _a      (      self    ):






									'''simple docstring'''







									UpperCamelCase				:		Any				   =			self.perceiver_tokenizer
									UpperCamelCase				:		str				   =			"""Unicode €."""
									UpperCamelCase				:		Dict				   =			tokenizer(_A    )
									UpperCamelCase				:		Optional[Any]				   =			[4, 9_1, 1_1_6, 1_1_1, 1_0_5, 1_1_7, 1_0_6, 1_0_7, 3_8, 2_3_2, 1_3_6, 1_7_8, 5_2, 5]
									self.assertEqual(encoded["""input_ids"""]						,   _A    )

									# decoding
									UpperCamelCase				:		Optional[int]				   =			tokenizer.decode(_A    )
									self.assertEqual(_A						,   """[CLS]Unicode €.[SEP]"""    )

									UpperCamelCase				:		str				   =			tokenizer("""e è é ê ë"""    )
									UpperCamelCase				:		str				   =			[4, 1_0_7, 3_8, 2_0_1, 1_7_4, 3_8, 2_0_1, 1_7_5, 3_8, 2_0_1, 1_7_6, 3_8, 2_0_1, 1_7_7, 5]
									self.assertEqual(encoded["""input_ids"""]						,   _A    )
									# decoding
									UpperCamelCase				:		Any				   =			tokenizer.decode(_A    )
									self.assertEqual(_A						,   """[CLS]e è é ê ë[SEP]"""    )

									# encode/decode, but with `encode` instead of `__call__`
									self.assertEqual(tokenizer.decode(tokenizer.encode("""e è é ê ë"""    )    )						,   """[CLS]e è é ê ë[SEP]"""    )







			def   _a      (      self    ):






									'''simple docstring'''







									UpperCamelCase				:		Optional[int]				   =			self.perceiver_tokenizer
									UpperCamelCase				:		Optional[Any]				   =			["""A long paragraph for summarization.""", """Another paragraph for summarization."""]
									# fmt: off
									UpperCamelCase				:		List[Any]				   =			[4, 7_1, 3_8, 1_1_4, 1_1_7, 1_1_6, 1_0_9, 3_8, 1_1_8, 1_0_3, 1_2_0, 1_0_3, 1_0_9, 1_2_0, 1_0_3, 1_1_8, 1_1_0, 3_8, 1_0_8, 1_1_7, 1_2_0, 3_8, 1_2_1, 1_2_3, 1_1_5, 1_1_5, 1_0_3, 1_2_0, 1_1_1, 1_2_8, 1_0_3, 1_2_2, 1_1_1, 1_1_7, 1_1_6, 5_2, 5, 0]
									# fmt: on
									UpperCamelCase				:		Dict				   =			tokenizer(_A						,   padding=_A						,   return_tensors=_A    )
									self.assertIsInstance(_A						,   _A    )

									if FRAMEWORK != "jax":
															UpperCamelCase				:		Dict				   =			list(batch.input_ids.numpy()[0]    )
									else:
															UpperCamelCase				:		Optional[int]				   =			list(batch.input_ids.tolist()[0]    )

									self.assertListEqual(_A						,   _A    )

									self.assertEqual((2, 3_8)						,   batch.input_ids.shape    )
									self.assertEqual((2, 3_8)						,   batch.attention_mask.shape    )







			def   _a      (      self    ):






									'''simple docstring'''







									UpperCamelCase				:		Any				   =			self.perceiver_tokenizer
									UpperCamelCase				:		Optional[int]				   =			["""A long paragraph for summarization.""", """Another paragraph for summarization."""]
									UpperCamelCase				:		Any				   =			tokenizer(_A						,   padding=_A						,   return_tensors=_A    )
									# check if input_ids are returned and no decoder_input_ids
									self.assertIn("""input_ids"""						,   _A    )
									self.assertIn("""attention_mask"""						,   _A    )
									self.assertNotIn("""decoder_input_ids"""						,   _A    )
									self.assertNotIn("""decoder_attention_mask"""						,   _A    )







			def   _a      (      self    ):






									'''simple docstring'''







									UpperCamelCase				:		Optional[Any]				   =			self.perceiver_tokenizer
									UpperCamelCase				:		int				   =			[
									    """Summary of the text.""",
									    """Another summary.""",
									]
									UpperCamelCase				:		int				   =			tokenizer(
									    text_target=_A						,   max_length=3_2						,   padding="""max_length"""						,   truncation=_A						,   return_tensors=_A    )
									self.assertEqual(3_2						,   targets["""input_ids"""].shape[1]    )







			def   _a      (      self    ):






									'''simple docstring'''







									UpperCamelCase				:		Any				   =			self.get_tokenizers()
									for tokenizer in tokenizers:
															with self.subTest(f"""{tokenizer.__class__.__name__}"""    ):
																					self.assertNotEqual(tokenizer.model_max_length						,   4_2    )

        # Now let's start the test
									UpperCamelCase				:		Any				   =			self.get_tokenizers()
									for tokenizer in tokenizers:
															with self.subTest(f"""{tokenizer.__class__.__name__}"""    ):
																					# Isolate this from the other tests because we save additional tokens/etc
																					UpperCamelCase				:		int				   =			tempfile.mkdtemp()

																					UpperCamelCase				:		Tuple				   =			""" He is very happy, UNwant\u00E9d,running"""
																					UpperCamelCase				:		Dict				   =			tokenizer.encode(_A						,   add_special_tokens=_A    )
																					tokenizer.save_pretrained(_A    )

																					UpperCamelCase				:		Any				   =			tokenizer.__class__.from_pretrained(_A    )
																					UpperCamelCase				:		Tuple				   =			after_tokenizer.encode(_A						,   add_special_tokens=_A    )
																					self.assertListEqual(_A						,   _A    )

																					shutil.rmtree(_A    )

									UpperCamelCase				:		Union[str, Any]				   =			self.get_tokenizers(model_max_length=4_2    )
									for tokenizer in tokenizers:
															with self.subTest(f"""{tokenizer.__class__.__name__}"""    ):
																					# Isolate this from the other tests because we save additional tokens/etc
																					UpperCamelCase				:		List[Any]				   =			tempfile.mkdtemp()

																					UpperCamelCase				:		Union[str, Any]				   =			""" He is very happy, UNwant\u00E9d,running"""
																					tokenizer.add_tokens(["""bim""", """bambam"""]    )
																					UpperCamelCase				:		int				   =			tokenizer.additional_special_tokens
																					additional_special_tokens.append("""new_additional_special_token"""    )
																					tokenizer.add_special_tokens({"""additional_special_tokens""": additional_special_tokens}    )
																					UpperCamelCase				:		List[str]				   =			tokenizer.encode(_A						,   add_special_tokens=_A    )
																					tokenizer.save_pretrained(_A    )

																					UpperCamelCase				:		List[str]				   =			tokenizer.__class__.from_pretrained(_A    )
																					UpperCamelCase				:		Tuple				   =			after_tokenizer.encode(_A						,   add_special_tokens=_A    )
																					self.assertListEqual(_A						,   _A    )
																					self.assertIn("""new_additional_special_token"""						,   after_tokenizer.additional_special_tokens    )
																					self.assertEqual(after_tokenizer.model_max_length						,   4_2    )

																					UpperCamelCase				:		Any				   =			tokenizer.__class__.from_pretrained(_A						,   model_max_length=4_3    )
																					self.assertEqual(tokenizer.model_max_length						,   4_3    )

																					shutil.rmtree(_A    )







			def   _a      (      self    ):






									'''simple docstring'''







									UpperCamelCase				:		int				   =			[]
									if self.test_slow_tokenizer:
															tokenizer_list.append((self.tokenizer_class, self.get_tokenizer())    )

									if self.test_rust_tokenizer:
															tokenizer_list.append((self.rust_tokenizer_class, self.get_rust_tokenizer())    )

									for tokenizer_class, tokenizer_utils in tokenizer_list:
															with tempfile.TemporaryDirectory() as tmp_dir:
																					tokenizer_utils.save_pretrained(_A    )

																					with open(os.path.join(_A						,   """special_tokens_map.json"""    )						,   encoding="""utf-8"""    ) as json_file:
																											UpperCamelCase				:		Union[str, Any]				   =			json.load(_A    )

																					with open(os.path.join(_A						,   """tokenizer_config.json"""    )						,   encoding="""utf-8"""    ) as json_file:
																											UpperCamelCase				:		List[Any]				   =			json.load(_A    )

																					UpperCamelCase				:		Optional[int]				   =			[f"""<extra_id_{i}>""" for i in range(1_2_5    )]

																					UpperCamelCase				:		List[Any]				   =			added_tokens_extra_ids + [
																					    """an_additional_special_token"""
																					]
																					UpperCamelCase				:		int				   =			added_tokens_extra_ids + [
																					    """an_additional_special_token"""
																					]

																					with open(os.path.join(_A						,   """special_tokens_map.json"""    )						,   """w"""						,   encoding="""utf-8"""    ) as outfile:
																											json.dump(_A						,   _A    )
																					with open(os.path.join(_A						,   """tokenizer_config.json"""    )						,   """w"""						,   encoding="""utf-8"""    ) as outfile:
																											json.dump(_A						,   _A    )

																					# the following checks allow us to verify that our test works as expected, i.e. that the tokenizer takes
																					# into account the new value of additional_special_tokens given in the "tokenizer_config.json" and
																					# "special_tokens_map.json" files
																					UpperCamelCase				:		Tuple				   =			tokenizer_class.from_pretrained(
																					    _A						,   )
																					self.assertIn(
																					    """an_additional_special_token"""						,   tokenizer_without_change_in_init.additional_special_tokens    )
																					self.assertEqual(
																					    ["""an_additional_special_token"""]						,   tokenizer_without_change_in_init.convert_ids_to_tokens(
																					        tokenizer_without_change_in_init.convert_tokens_to_ids(["""an_additional_special_token"""]    )    )						,   )

																					# Now we test that we can change the value of additional_special_tokens in the from_pretrained
																					UpperCamelCase				:		List[str]				   =			added_tokens_extra_ids + [AddedToken("""a_new_additional_special_token"""						,   lstrip=_A    )]
																					UpperCamelCase				:		Optional[Any]				   =			tokenizer_class.from_pretrained(
																					    _A						,   additional_special_tokens=_A						,   )

																					self.assertIn("""a_new_additional_special_token"""						,   tokenizer.additional_special_tokens    )
																					self.assertEqual(
																					    ["""a_new_additional_special_token"""]						,   tokenizer.convert_ids_to_tokens(
																					        tokenizer.convert_tokens_to_ids(["""a_new_additional_special_token"""]    )    )						,   )







			def   _a      (      self    ):






									'''simple docstring'''







									UpperCamelCase				:		Dict				   =			self.perceiver_tokenizer
									self.assertEqual(tokenizer.decode([1_7_8]    )						,   """�"""    )







			def   _a      (      self    ):






									'''simple docstring'''







									pass







			def   _a      (      self    ):






									'''simple docstring'''







									pass







			def   _a      (      self    ):






									'''simple docstring'''







									pass







			def   _a      (      self    ):






									'''simple docstring'''







									pass







			def   _a      (      self    ):






									'''simple docstring'''







									UpperCamelCase				:		List[Any]				   =			self.get_tokenizers(fast=_A						,   do_lower_case=_A    )
									for tokenizer in tokenizers:
															with self.subTest(f"""{tokenizer.__class__.__name__}"""    ):
																					UpperCamelCase				:		Optional[Any]				   =			["""[CLS]""", """t""", """h""", """i""", """s""", """ """, """i""", """s""", """ """, """a""", """ """, """t""", """e""", """s""", """t""", """[SEP]"""]
																					UpperCamelCase				:		Dict				   =			tokenizer.convert_tokens_to_string(_A    )

																					self.assertIsInstance(_A						,   _A    )



