

from typing import TYPE_CHECKING

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


UpperCAmelCase_							:					List[str]		 =   {
    '''configuration_bert''': ['''BERT_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''BertConfig''', '''BertOnnxConfig'''],
    '''tokenization_bert''': ['''BasicTokenizer''', '''BertTokenizer''', '''WordpieceTokenizer'''],
}

try:
			if not is_tokenizers_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			UpperCAmelCase_							:					List[Any]		 =   ['''BertTokenizerFast''']

try:
			if not is_torch_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			UpperCAmelCase_							:					Union[str, Any]		 =   [
			    '''BERT_PRETRAINED_MODEL_ARCHIVE_LIST''',
			    '''BertForMaskedLM''',
			    '''BertForMultipleChoice''',
			    '''BertForNextSentencePrediction''',
			    '''BertForPreTraining''',
			    '''BertForQuestionAnswering''',
			    '''BertForSequenceClassification''',
			    '''BertForTokenClassification''',
			    '''BertLayer''',
			    '''BertLMHeadModel''',
			    '''BertModel''',
			    '''BertPreTrainedModel''',
			    '''load_tf_weights_in_bert''',
			]

try:
			if not is_tf_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			UpperCAmelCase_							:					Any		 =   [
			    '''TF_BERT_PRETRAINED_MODEL_ARCHIVE_LIST''',
			    '''TFBertEmbeddings''',
			    '''TFBertForMaskedLM''',
			    '''TFBertForMultipleChoice''',
			    '''TFBertForNextSentencePrediction''',
			    '''TFBertForPreTraining''',
			    '''TFBertForQuestionAnswering''',
			    '''TFBertForSequenceClassification''',
			    '''TFBertForTokenClassification''',
			    '''TFBertLMHeadModel''',
			    '''TFBertMainLayer''',
			    '''TFBertModel''',
			    '''TFBertPreTrainedModel''',
			]
try:
			if not is_tensorflow_text_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			UpperCAmelCase_							:					List[str]		 =   ['''TFBertTokenizer''']

try:
			if not is_flax_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			UpperCAmelCase_							:					int		 =   [
			    '''FlaxBertForCausalLM''',
			    '''FlaxBertForMaskedLM''',
			    '''FlaxBertForMultipleChoice''',
			    '''FlaxBertForNextSentencePrediction''',
			    '''FlaxBertForPreTraining''',
			    '''FlaxBertForQuestionAnswering''',
			    '''FlaxBertForSequenceClassification''',
			    '''FlaxBertForTokenClassification''',
			    '''FlaxBertModel''',
			    '''FlaxBertPreTrainedModel''',
			]

if TYPE_CHECKING:
			from .configuration_bert import BERT_PRETRAINED_CONFIG_ARCHIVE_MAP, BertConfig, BertOnnxConfig
			from .tokenization_bert import BasicTokenizer, BertTokenizer, WordpieceTokenizer

			try:
						if not is_tokenizers_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .tokenization_bert_fast import BertTokenizerFast

			try:
						if not is_torch_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_bert import (
						    BERT_PRETRAINED_MODEL_ARCHIVE_LIST,
						    BertForMaskedLM,
						    BertForMultipleChoice,
						    BertForNextSentencePrediction,
						    BertForPreTraining,
						    BertForQuestionAnswering,
						    BertForSequenceClassification,
						    BertForTokenClassification,
						    BertLayer,
						    BertLMHeadModel,
						    BertModel,
						    BertPreTrainedModel,
						    load_tf_weights_in_bert,
						)

			try:
						if not is_tf_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_tf_bert import (
						    TF_BERT_PRETRAINED_MODEL_ARCHIVE_LIST,
						    TFBertEmbeddings,
						    TFBertForMaskedLM,
						    TFBertForMultipleChoice,
						    TFBertForNextSentencePrediction,
						    TFBertForPreTraining,
						    TFBertForQuestionAnswering,
						    TFBertForSequenceClassification,
						    TFBertForTokenClassification,
						    TFBertLMHeadModel,
						    TFBertMainLayer,
						    TFBertModel,
						    TFBertPreTrainedModel,
						)

			try:
						if not is_tensorflow_text_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .tokenization_bert_tf import TFBertTokenizer

			try:
						if not is_flax_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_flax_bert import (
						    FlaxBertForCausalLM,
						    FlaxBertForMaskedLM,
						    FlaxBertForMultipleChoice,
						    FlaxBertForNextSentencePrediction,
						    FlaxBertForPreTraining,
						    FlaxBertForQuestionAnswering,
						    FlaxBertForSequenceClassification,
						    FlaxBertForTokenClassification,
						    FlaxBertModel,
						    FlaxBertPreTrainedModel,
						)

else:
			import sys

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








'''simple docstring'''



from ...configuration_utils import PretrainedConfig
from ...utils import logging


UpperCAmelCase					:			Tuple       =	logging.get_logger(__name__)

UpperCAmelCase					:			Any       =	{'ctrl': 'https://huggingface.co/ctrl/resolve/main/config.json'}







class 		lowerCAmelCase__  ( a   ):



 """simple docstring"""



 lowerCAmelCase__       = "ctrl"
 lowerCAmelCase__       = ["past_key_values"]
 lowerCAmelCase__       = {
     "max_position_embeddings": "n_positions",
     "hidden_size": "n_embd",
     "num_attention_heads": "n_head",
     "num_hidden_layers": "n_layer",
 }
 def __init__(						self   :			Tuple   ,				__SCREAMING_SNAKE_CASE   :			Tuple=246_534   ,				__SCREAMING_SNAKE_CASE   :			str=256   ,				__SCREAMING_SNAKE_CASE   :			Optional[Any]=1_280   ,				__SCREAMING_SNAKE_CASE   :			Dict=8_192   ,				__SCREAMING_SNAKE_CASE   :			Union[str, Any]=48   ,				__SCREAMING_SNAKE_CASE   :			Dict=16   ,				__SCREAMING_SNAKE_CASE   :			Union[str, Any]=0.1   ,				__SCREAMING_SNAKE_CASE   :			str=0.1   ,				__SCREAMING_SNAKE_CASE   :			Union[str, Any]=1E-6   ,				__SCREAMING_SNAKE_CASE   :			Tuple=0.02   ,				__SCREAMING_SNAKE_CASE   :			Tuple=True   ,				**__SCREAMING_SNAKE_CASE   :			Union[str, Any]   ,				)    ->					Tuple:


      """simple docstring"""




      __SCREAMING_SNAKE_CASE      = vocab_size
      __SCREAMING_SNAKE_CASE      = n_positions
      __SCREAMING_SNAKE_CASE      = n_embd
      __SCREAMING_SNAKE_CASE      = n_layer
      __SCREAMING_SNAKE_CASE      = n_head
      __SCREAMING_SNAKE_CASE      = dff
      __SCREAMING_SNAKE_CASE      = resid_pdrop
      __SCREAMING_SNAKE_CASE      = embd_pdrop
      __SCREAMING_SNAKE_CASE      = layer_norm_epsilon
      __SCREAMING_SNAKE_CASE      = initializer_range

      __SCREAMING_SNAKE_CASE      = use_cache

      super().__init__(**__SCREAMING_SNAKE_CASE     )






