






from typing import TYPE_CHECKING

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


lowercase     :							Tuple	     =			{
    '''configuration_gpt2''': ['''GPT2_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''GPT2Config''', '''GPT2OnnxConfig'''],
    '''tokenization_gpt2''': ['''GPT2Tokenizer'''],
}

try:
							if not is_tokenizers_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							lowercase     :							Optional[int]	     =			['''GPT2TokenizerFast''']

try:
							if not is_torch_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							lowercase     :							str	     =			[
							    '''GPT2_PRETRAINED_MODEL_ARCHIVE_LIST''',
							    '''GPT2DoubleHeadsModel''',
							    '''GPT2ForQuestionAnswering''',
							    '''GPT2ForSequenceClassification''',
							    '''GPT2ForTokenClassification''',
							    '''GPT2LMHeadModel''',
							    '''GPT2Model''',
							    '''GPT2PreTrainedModel''',
							    '''load_tf_weights_in_gpt2''',
							]

try:
							if not is_tf_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							lowercase     :							Optional[Any]	     =			[
							    '''TF_GPT2_PRETRAINED_MODEL_ARCHIVE_LIST''',
							    '''TFGPT2DoubleHeadsModel''',
							    '''TFGPT2ForSequenceClassification''',
							    '''TFGPT2LMHeadModel''',
							    '''TFGPT2MainLayer''',
							    '''TFGPT2Model''',
							    '''TFGPT2PreTrainedModel''',
							]

try:
							if not is_keras_nlp_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							lowercase     :							Tuple	     =			['''TFGPT2Tokenizer''']

try:
							if not is_flax_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							lowercase     :							Union[str, Any]	     =			['''FlaxGPT2LMHeadModel''', '''FlaxGPT2Model''', '''FlaxGPT2PreTrainedModel''']

if TYPE_CHECKING:
							from .configuration_gpta import GPT2_PRETRAINED_CONFIG_ARCHIVE_MAP, GPTaConfig, GPTaOnnxConfig
							from .tokenization_gpta import GPTaTokenizer

							try:
														if not is_tokenizers_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .tokenization_gpta_fast import GPTaTokenizerFast

							try:
														if not is_torch_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_gpta import (
														    GPT2_PRETRAINED_MODEL_ARCHIVE_LIST,
														    GPTaDoubleHeadsModel,
														    GPTaForQuestionAnswering,
														    GPTaForSequenceClassification,
														    GPTaForTokenClassification,
														    GPTaLMHeadModel,
														    GPTaModel,
														    GPTaPreTrainedModel,
														    load_tf_weights_in_gpta,
														)

							try:
														if not is_tf_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_tf_gpta import (
														    TF_GPT2_PRETRAINED_MODEL_ARCHIVE_LIST,
														    TFGPTaDoubleHeadsModel,
														    TFGPTaForSequenceClassification,
														    TFGPTaLMHeadModel,
														    TFGPTaMainLayer,
														    TFGPTaModel,
														    TFGPTaPreTrainedModel,
														)

							try:
														if not is_keras_nlp_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .tokenization_gpta_tf import TFGPTaTokenizer

							try:
														if not is_flax_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_flax_gpta import FlaxGPTaLMHeadModel, FlaxGPTaModel, FlaxGPTaPreTrainedModel

else:
							import sys

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








def    lowerCAmelCase__		(			_a				:	int			):
		if not isinstance(_a     ,					_a			):
				snake_case_ :							Optional[int]         =				F'''Input value of [number={number}] must be an integer'''
				raise TypeError(_a			)
		if number < 1:
				raise ValueError("Input must be a positive integer"			)
		return number * (2 * number - 1)


if __name__ == "__main__":
							import doctest

							doctest.testmod()
