






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

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

from ...test_tokenization_common import TokenizerTesterMixin


if is_torch_available():
   _UpperCAmelCase			:		List[str]   				=    "pt"
elif is_tf_available():
   _UpperCAmelCase			:		str   				=    "tf"
else:
   _UpperCAmelCase			:		List[str]   				=    "jax"
class  lowerCAmelCase_       (				_snake_case     ,    unittest.TestCase					):
       UpperCamelCase_		:Union[str, Any]		      =    ByTaTokenizer
       UpperCamelCase_		:Optional[Any]		      =    False




       def 						__snake_case					(   self     :   List[str]	):
           super().setUp()
           lowerCAmelCase__      			=						ByTaTokenizer()
           tokenizer.save_pretrained(self.tmpdirname	)




       @cached_property
       def 						__snake_case					(   self     :   Dict	):
           return ByTaTokenizer.from_pretrained('''google/byt5-small'''	)




       def 						__snake_case					(   self     :   Any ,							**SCREAMING_SNAKE_CASE_     :   Union[str, Any]	):
           return self.tokenizer_class.from_pretrained(self.tmpdirname ,							**lowerCAmelCase__	)




       def 						__snake_case					(   self     :   Tuple ,							SCREAMING_SNAKE_CASE_     :   Dict ,							SCREAMING_SNAKE_CASE_     :   Union[str, Any]=False ,							SCREAMING_SNAKE_CASE_     :   Optional[int]=20 ,							SCREAMING_SNAKE_CASE_     :   str=5	):
           # XXX The default common tokenizer tests assume that every ID is decodable on its own.
           # This assumption is invalid for ByT5 because single bytes might not be
           # valid utf-8 (byte 128 for instance).
           # Here we're overriding the smallest possible method to provide
           # a clean sequence without making the same assumption.

           lowerCAmelCase__      			=						[]
           for i in range(len(lowerCAmelCase__	)	):
               try:
                   lowerCAmelCase__      			=						tokenizer.decode([i] ,							clean_up_tokenization_spaces=lowerCAmelCase__	)
               except UnicodeDecodeError:
                   pass
               toks.append((i, tok)	)

           lowerCAmelCase__      			=						list(filter(lambda SCREAMING_SNAKE_CASE_	: re.match(R'''^[ a-zA-Z]+$''' ,							t[1]	) ,							lowerCAmelCase__	)	)
           lowerCAmelCase__      			=						list(filter(lambda SCREAMING_SNAKE_CASE_	: [t[0]] == tokenizer.encode(t[1] ,							add_special_tokens=lowerCAmelCase__	) ,							lowerCAmelCase__	)	)
           if max_length is not None and len(lowerCAmelCase__	) > max_length:
               lowerCAmelCase__      			=						toks[:max_length]
           if min_length is not None and len(lowerCAmelCase__	) < min_length and len(lowerCAmelCase__	) > 0:
               while len(lowerCAmelCase__	) < min_length:
                   lowerCAmelCase__      			=						toks + toks
                    # toks_str = [t[1] for t in toks]
           lowerCAmelCase__      			=						[t[0] for t in toks]

           # Ensure consistency
           lowerCAmelCase__      			=						tokenizer.decode(lowerCAmelCase__ ,							clean_up_tokenization_spaces=lowerCAmelCase__	)
           if " " not in output_txt and len(lowerCAmelCase__	) > 1:
               lowerCAmelCase__      			=						(
                   tokenizer.decode([toks_ids[0]] ,							clean_up_tokenization_spaces=lowerCAmelCase__	)
                   + ''' '''
                   + tokenizer.decode(toks_ids[1:] ,							clean_up_tokenization_spaces=lowerCAmelCase__	)
               )
           if with_prefix_space:
               lowerCAmelCase__      			=						''' ''' + output_txt
           lowerCAmelCase__      			=						tokenizer.encode(lowerCAmelCase__ ,							add_special_tokens=lowerCAmelCase__	)
           return output_txt, output_ids




       def 						__snake_case					(   self     :   List[Any]	):
           lowerCAmelCase__      			=						self.ta_base_tokenizer
           lowerCAmelCase__      			=						tokenizer(['''hi</s>''', '''I went to the gym</s>''', '''</s>''']	)
           lowerCAmelCase__      			=						tokenizer(['''hi''', '''I went to the gym''', '''''']	)
           self.assertListEqual(batch_with_eos_added['''input_ids'''] ,							batch_without_eos_added['''input_ids''']	)




       def 						__snake_case					(   self     :   int	):
           lowerCAmelCase__      			=						self.ta_base_tokenizer
           lowerCAmelCase__      			=						'''Unicode €.'''
           lowerCAmelCase__      			=						tokenizer(lowerCAmelCase__	)
           lowerCAmelCase__      			=						[88, 113, 108, 102, 114, 103, 104, 35, 229, 133, 175, 49, 1]
           self.assertEqual(encoded['''input_ids'''] ,							lowerCAmelCase__	)

           # decoding
           lowerCAmelCase__      			=						tokenizer.decode(lowerCAmelCase__	)
           self.assertEqual(lowerCAmelCase__ ,							'''Unicode €.</s>'''	)

           lowerCAmelCase__      			=						tokenizer('''e è é ê ë'''	)
           lowerCAmelCase__      			=						[104, 35, 198, 171, 35, 198, 172, 35, 198, 173, 35, 198, 174, 1]
           self.assertEqual(encoded['''input_ids'''] ,							lowerCAmelCase__	)
           # decoding
           lowerCAmelCase__      			=						tokenizer.decode(lowerCAmelCase__	)
           self.assertEqual(lowerCAmelCase__ ,							'''e è é ê ë</s>'''	)

           # encode/decode, but with `encode` instead of `__call__`
           self.assertEqual(tokenizer.decode(tokenizer.encode('''e è é ê ë'''	)	) ,							'''e è é ê ë</s>'''	)




       def 						__snake_case					(   self     :   Optional[Any]	):
           lowerCAmelCase__      			=						self.ta_base_tokenizer
           lowerCAmelCase__      			=						['''A long paragraph for summarization.''', '''Another paragraph for summarization.''']
           # fmt: off
           lowerCAmelCase__      			=						[68, 35, 111, 114, 113, 106, 35, 115, 100, 117, 100, 106, 117, 100, 115, 107, 35, 105, 114, 117, 35, 118, 120, 112, 112, 100, 117, 108, 125, 100, 119, 108, 114, 113, 49, 1, 0]
           # fmt: on
           lowerCAmelCase__      			=						tokenizer(lowerCAmelCase__ ,							padding=lowerCAmelCase__ ,							return_tensors=lowerCAmelCase__	)
           self.assertIsInstance(lowerCAmelCase__ ,							lowerCAmelCase__	)

           if FRAMEWORK != "jax":
               lowerCAmelCase__      			=						list(batch.input_ids.numpy()[0]	)
           else:
               lowerCAmelCase__      			=						list(batch.input_ids.tolist()[0]	)

           self.assertListEqual(lowerCAmelCase__ ,							lowerCAmelCase__	)

           self.assertEqual((2, 37) ,							batch.input_ids.shape	)
           self.assertEqual((2, 37) ,							batch.attention_mask.shape	)




       def 						__snake_case					(   self     :   Optional[int]	):
           lowerCAmelCase__      			=						self.ta_base_tokenizer
           lowerCAmelCase__      			=						['''A long paragraph for summarization.''', '''Another paragraph for summarization.''']
           lowerCAmelCase__      			=						tokenizer(lowerCAmelCase__ ,							padding=lowerCAmelCase__ ,							return_tensors=lowerCAmelCase__	)
           # check if input_ids are returned and no decoder_input_ids
           self.assertIn('''input_ids''' ,							lowerCAmelCase__	)
           self.assertIn('''attention_mask''' ,							lowerCAmelCase__	)
           self.assertNotIn('''decoder_input_ids''' ,							lowerCAmelCase__	)
           self.assertNotIn('''decoder_attention_mask''' ,							lowerCAmelCase__	)




       def 						__snake_case					(   self     :   Tuple	):
           lowerCAmelCase__      			=						self.ta_base_tokenizer
           lowerCAmelCase__      			=						[
               '''Summary of the text.''',
               '''Another summary.''',
           ]
           lowerCAmelCase__      			=						tokenizer(
               text_target=lowerCAmelCase__ ,							max_length=32 ,							padding='''max_length''' ,							truncation=lowerCAmelCase__ ,							return_tensors=lowerCAmelCase__	)
           self.assertEqual(32 ,							targets['''input_ids'''].shape[1]	)




       def 						__snake_case					(   self     :   Optional[Any]	):
           lowerCAmelCase__      			=						self.ta_base_tokenizer
           lowerCAmelCase__      			=						['''A long paragraph for summarization. </s>''']
           lowerCAmelCase__      			=						['''Summary of the text. </s>''']
           # fmt: off
           lowerCAmelCase__      			=						[68, 35, 111, 114, 113, 106, 35, 115, 100, 117, 100, 106, 117, 100, 115, 107, 35, 105, 114, 117, 35, 118, 120, 112, 112, 100, 117, 108, 125, 100, 119, 108, 114, 113, 49, 35, 1]
           lowerCAmelCase__      			=						[86, 120, 112, 112, 100, 117, 124, 35, 114, 105, 35, 119, 107, 104, 35, 119, 104, 123, 119, 49, 35, 1]
           # fmt: on

           lowerCAmelCase__      			=						tokenizer(lowerCAmelCase__ ,							text_target=lowerCAmelCase__	)

           self.assertEqual(lowerCAmelCase__ ,							batch['''input_ids'''][0]	)
           self.assertEqual(lowerCAmelCase__ ,							batch['''labels'''][0]	)




       def 						__snake_case					(   self     :   List[str]	):
           # safety check on max_len default value so we are sure the test works
           lowerCAmelCase__      			=						self.get_tokenizers()
           for tokenizer in tokenizers:
               with self.subTest(f'{tokenizer.__class__.__name__}'	):
                   self.assertNotEqual(tokenizer.model_max_length ,							42	)

                    # Now let's start the test
           lowerCAmelCase__      			=						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
                   lowerCAmelCase__      			=						tempfile.mkdtemp()

                   lowerCAmelCase__      			=						''' He is very happy, UNwant\u00E9d,running'''
                   lowerCAmelCase__      			=						tokenizer.encode(lowerCAmelCase__ ,							add_special_tokens=lowerCAmelCase__	)
                   tokenizer.save_pretrained(lowerCAmelCase__	)

                   lowerCAmelCase__      			=						tokenizer.__class__.from_pretrained(lowerCAmelCase__	)
                   lowerCAmelCase__      			=						after_tokenizer.encode(lowerCAmelCase__ ,							add_special_tokens=lowerCAmelCase__	)
                   self.assertListEqual(lowerCAmelCase__ ,							lowerCAmelCase__	)

                   shutil.rmtree(lowerCAmelCase__	)

           lowerCAmelCase__      			=						self.get_tokenizers(model_max_length=42	)
           for tokenizer in tokenizers:
               with self.subTest(f'{tokenizer.__class__.__name__}'	):
                   # Isolate this from the other tests because we save additional tokens/etc
                   lowerCAmelCase__      			=						tempfile.mkdtemp()

                   lowerCAmelCase__      			=						''' He is very happy, UNwant\u00E9d,running'''
                   tokenizer.add_tokens(['''bim''', '''bambam''']	)
                   lowerCAmelCase__      			=						tokenizer.additional_special_tokens
                   additional_special_tokens.append('''new_additional_special_token'''	)
                   tokenizer.add_special_tokens({'''additional_special_tokens''': additional_special_tokens}	)
                   lowerCAmelCase__      			=						tokenizer.encode(lowerCAmelCase__ ,							add_special_tokens=lowerCAmelCase__	)
                   tokenizer.save_pretrained(lowerCAmelCase__	)

                   lowerCAmelCase__      			=						tokenizer.__class__.from_pretrained(lowerCAmelCase__	)
                   lowerCAmelCase__      			=						after_tokenizer.encode(lowerCAmelCase__ ,							add_special_tokens=lowerCAmelCase__	)
                   self.assertListEqual(lowerCAmelCase__ ,							lowerCAmelCase__	)
                   self.assertIn('''new_additional_special_token''' ,							after_tokenizer.additional_special_tokens	)
                   self.assertEqual(after_tokenizer.model_max_length ,							42	)

                   lowerCAmelCase__      			=						tokenizer.__class__.from_pretrained(lowerCAmelCase__ ,							model_max_length=43	)
                   self.assertEqual(tokenizer.model_max_length ,							43	)

                   shutil.rmtree(lowerCAmelCase__	)




       def 						__snake_case					(   self     :   Any	):
           lowerCAmelCase__      			=						[]
           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(lowerCAmelCase__	)

                   with open(os.path.join(lowerCAmelCase__ ,							'''special_tokens_map.json'''	) ,							encoding='''utf-8'''	) as json_file:
                       lowerCAmelCase__      			=						json.load(lowerCAmelCase__	)

                   with open(os.path.join(lowerCAmelCase__ ,							'''tokenizer_config.json'''	) ,							encoding='''utf-8'''	) as json_file:
                       lowerCAmelCase__      			=						json.load(lowerCAmelCase__	)

                   lowerCAmelCase__      			=						[f'<extra_id_{i}>' for i in range(125	)]

                   lowerCAmelCase__      			=						added_tokens_extra_ids + [
                       '''an_additional_special_token'''
                   ]
                   lowerCAmelCase__      			=						added_tokens_extra_ids + [
                       '''an_additional_special_token'''
                   ]

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

                   # 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
                   lowerCAmelCase__      			=						tokenizer_class.from_pretrained(
                       lowerCAmelCase__ ,							)
                   self.assertIn(
                       '''an_additional_special_token''' ,							tokenizer_without_change_in_init.additional_special_tokens	)
                   # self.assertIn("an_additional_special_token",tokenizer_without_change_in_init.get_vocab()) # ByT5Tokenization no vocab
                   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
                   lowerCAmelCase__      			=						added_tokens_extra_ids + [AddedToken('''a_new_additional_special_token''' ,							lstrip=lowerCAmelCase__	)]
                   lowerCAmelCase__      			=						tokenizer_class.from_pretrained(
                       lowerCAmelCase__ ,							additional_special_tokens=lowerCAmelCase__ ,							)

                   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 						__snake_case					(   self     :   str	):
           lowerCAmelCase__      			=						[]
           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(lowerCAmelCase__	)

                   lowerCAmelCase__      			=						tokenizer_class.from_pretrained(lowerCAmelCase__	)

                   self.assertTrue(tokenizer.decode([255]	) == ''''''	)




       def 						__snake_case					(   self     :   Optional[Any]	):
           pass




       def 						__snake_case					(   self     :   Optional[Any]	):
           pass




       def 						__snake_case					(   self     :   Dict	):
           pass




       def 						__snake_case					(   self     :   Optional[int]	):
           pass




       def 						__snake_case					(   self     :   int	):
           # The default common tokenizer tests uses invalid tokens for ByT5 that can only accept one-character strings
           # and special added tokens as tokens
           lowerCAmelCase__      			=						self.get_tokenizers(fast=lowerCAmelCase__ ,							do_lower_case=lowerCAmelCase__	)
           for tokenizer in tokenizers:
               with self.subTest(f'{tokenizer.__class__.__name__}'	):
                   lowerCAmelCase__      			=						['''t''', '''h''', '''i''', '''s''', ''' ''', '''i''', '''s''', ''' ''', '''a''', ''' ''', '''t''', '''e''', '''x''', '''t''', '''</s>''']
                   lowerCAmelCase__      			=						tokenizer.convert_tokens_to_string(lowerCAmelCase__	)

                   self.assertIsInstance(lowerCAmelCase__ ,							lowerCAmelCase__	)




       def 						__snake_case					(   self     :   Optional[int]	):
           lowerCAmelCase__      			=						self.get_tokenizers()
           for tokenizer in tokenizers:
               with self.subTest(f'{tokenizer.__class__.__name__}'	):
                   lowerCAmelCase__      			=						[
                       '''bos_token''',
                       '''eos_token''',
                       '''unk_token''',
                       '''sep_token''',
                       '''pad_token''',
                       '''cls_token''',
                       '''mask_token''',
                   ]

                   lowerCAmelCase__      			=						0
                   lowerCAmelCase__      			=						tokenizer.convert_ids_to_tokens(
                       lowerCAmelCase__ ,							skip_special_tokens=lowerCAmelCase__	)

                   for attr in attributes_list:
                       setattr(lowerCAmelCase__ ,							attr + '''_id''' ,							lowerCAmelCase__	)
                       self.assertEqual(getattr(lowerCAmelCase__ ,							lowerCAmelCase__	) ,							lowerCAmelCase__	)
                       self.assertEqual(getattr(lowerCAmelCase__ ,							attr + '''_id'''	) ,							lowerCAmelCase__	)

                       setattr(lowerCAmelCase__ ,							attr + '''_id''' ,							lowerCAmelCase__	)
                       self.assertEqual(getattr(lowerCAmelCase__ ,							lowerCAmelCase__	) ,							lowerCAmelCase__	)
                       self.assertEqual(getattr(lowerCAmelCase__ ,							attr + '''_id'''	) ,							lowerCAmelCase__	)

                   setattr(lowerCAmelCase__ ,							'''additional_special_tokens_ids''' ,							[]	)
                   self.assertListEqual(getattr(lowerCAmelCase__ ,							'''additional_special_tokens'''	) ,							[]	)
                   self.assertListEqual(getattr(lowerCAmelCase__ ,							'''additional_special_tokens_ids'''	) ,							[]	)

                   setattr(lowerCAmelCase__ ,							'''additional_special_tokens_ids''' ,							[token_id_to_test_setters]	)
                   self.assertListEqual(getattr(lowerCAmelCase__ ,							'''additional_special_tokens'''	) ,							[token_to_test_setters]	)
                   self.assertListEqual(getattr(lowerCAmelCase__ ,							'''additional_special_tokens_ids'''	) ,							[token_id_to_test_setters]	)













from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


_UpperCAmelCase			:		List[str]   				=    {
    "configuration_electra": ["ELECTRA_PRETRAINED_CONFIG_ARCHIVE_MAP", "ElectraConfig", "ElectraOnnxConfig"],
    "tokenization_electra": ["ElectraTokenizer"],
}

try:
			if not is_tokenizers_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			_UpperCAmelCase			:		Dict   				=    ["ElectraTokenizerFast"]

try:
			if not is_torch_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			_UpperCAmelCase			:		Optional[Any]   				=    [
			    "ELECTRA_PRETRAINED_MODEL_ARCHIVE_LIST",
			    "ElectraForCausalLM",
			    "ElectraForMaskedLM",
			    "ElectraForMultipleChoice",
			    "ElectraForPreTraining",
			    "ElectraForQuestionAnswering",
			    "ElectraForSequenceClassification",
			    "ElectraForTokenClassification",
			    "ElectraModel",
			    "ElectraPreTrainedModel",
			    "load_tf_weights_in_electra",
			]

try:
			if not is_tf_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			_UpperCAmelCase			:		Union[str, Any]   				=    [
			    "TF_ELECTRA_PRETRAINED_MODEL_ARCHIVE_LIST",
			    "TFElectraForMaskedLM",
			    "TFElectraForMultipleChoice",
			    "TFElectraForPreTraining",
			    "TFElectraForQuestionAnswering",
			    "TFElectraForSequenceClassification",
			    "TFElectraForTokenClassification",
			    "TFElectraModel",
			    "TFElectraPreTrainedModel",
			]

try:
			if not is_flax_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			_UpperCAmelCase			:		Optional[int]   				=    [
			    "FlaxElectraForCausalLM",
			    "FlaxElectraForMaskedLM",
			    "FlaxElectraForMultipleChoice",
			    "FlaxElectraForPreTraining",
			    "FlaxElectraForQuestionAnswering",
			    "FlaxElectraForSequenceClassification",
			    "FlaxElectraForTokenClassification",
			    "FlaxElectraModel",
			    "FlaxElectraPreTrainedModel",
			]


if TYPE_CHECKING:
			from .configuration_electra import ELECTRA_PRETRAINED_CONFIG_ARCHIVE_MAP, ElectraConfig, ElectraOnnxConfig
			from .tokenization_electra import ElectraTokenizer

			try:
						if not is_tokenizers_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .tokenization_electra_fast import ElectraTokenizerFast

			try:
						if not is_torch_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_electra import (
						    ELECTRA_PRETRAINED_MODEL_ARCHIVE_LIST,
						    ElectraForCausalLM,
						    ElectraForMaskedLM,
						    ElectraForMultipleChoice,
						    ElectraForPreTraining,
						    ElectraForQuestionAnswering,
						    ElectraForSequenceClassification,
						    ElectraForTokenClassification,
						    ElectraModel,
						    ElectraPreTrainedModel,
						    load_tf_weights_in_electra,
						)

			try:
						if not is_tf_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_tf_electra import (
						    TF_ELECTRA_PRETRAINED_MODEL_ARCHIVE_LIST,
						    TFElectraForMaskedLM,
						    TFElectraForMultipleChoice,
						    TFElectraForPreTraining,
						    TFElectraForQuestionAnswering,
						    TFElectraForSequenceClassification,
						    TFElectraForTokenClassification,
						    TFElectraModel,
						    TFElectraPreTrainedModel,
						)

			try:
						if not is_flax_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_flax_electra import (
						    FlaxElectraForCausalLM,
						    FlaxElectraForMaskedLM,
						    FlaxElectraForMultipleChoice,
						    FlaxElectraForPreTraining,
						    FlaxElectraForQuestionAnswering,
						    FlaxElectraForSequenceClassification,
						    FlaxElectraForTokenClassification,
						    FlaxElectraModel,
						    FlaxElectraPreTrainedModel,
						)

else:
			import sys

			_UpperCAmelCase			:		Any   				=    _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)





