






'''simple docstring'''


from typing import TYPE_CHECKING

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


lowerCamelCase_				: Tuple    	=							{
    '''configuration_electra''': ['''ELECTRA_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''ElectraConfig''', '''ElectraOnnxConfig'''],
    '''tokenization_electra''': ['''ElectraTokenizer'''],
}

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

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					lowerCamelCase_				: str    	=							[
					    '''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:
					lowerCamelCase_				: Dict    	=							[
					    '''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:
					lowerCamelCase_				: List[Any]    	=							[
					    '''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

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








'''simple docstring'''


import math







def 	__magic_name__( _A					):
						'''simple docstring'''





						assert isinstance(_A						,      _A					) and (
						    number >= 0
						), "'number' must been an int and positive"

						if 1 < number < 4:
												# 2 and 3 are primes
												return True
						elif number < 2 or not number % 2:
												# Negatives, 0, 1 and all even numbers are not primes
												return False

						UpperCamelCase__         = range(3						,      int(math.sqrt(_A					) + 1					)						,      2					)
						return not any(not number % i for i in odd_numbers					)







def 	__magic_name__( _A						,      _A=1						,      **_A					):
						'''simple docstring'''





						UpperCamelCase__         = factor * value
						UpperCamelCase__         = value

						while not is_prime(_A					):
												value += 1 if not ("desc" in kwargs and kwargs["desc"] is True) else -1

						if value == first_value_val:
												return next_prime(value + 1						,      **_A					)
						return value
