






"""simple docstring"""




from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tf_available, is_torch_available


lowerCamelCase__			=   {
    "configuration_esm": ["ESM_PRETRAINED_CONFIG_ARCHIVE_MAP", "EsmConfig"],
    "tokenization_esm": ["EsmTokenizer"],
}

try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      lowerCamelCase__			=   [
          "ESM_PRETRAINED_MODEL_ARCHIVE_LIST",
          "EsmForMaskedLM",
          "EsmForSequenceClassification",
          "EsmForTokenClassification",
          "EsmModel",
          "EsmPreTrainedModel",
      ]
      lowerCamelCase__			=   ["EsmForProteinFolding", "EsmFoldPreTrainedModel"]

try:
      if not is_tf_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      lowerCamelCase__			=   [
          "TF_ESM_PRETRAINED_MODEL_ARCHIVE_LIST",
          "TFEsmForMaskedLM",
          "TFEsmForSequenceClassification",
          "TFEsmForTokenClassification",
          "TFEsmModel",
          "TFEsmPreTrainedModel",
      ]

if TYPE_CHECKING:
      from .configuration_esm import ESM_PRETRAINED_CONFIG_ARCHIVE_MAP, EsmConfig
      from .tokenization_esm import EsmTokenizer

      try:
            if not is_torch_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_esm import (
                ESM_PRETRAINED_MODEL_ARCHIVE_LIST,
                EsmForMaskedLM,
                EsmForSequenceClassification,
                EsmForTokenClassification,
                EsmModel,
                EsmPreTrainedModel,
            )
            from .modeling_esmfold import EsmFoldPreTrainedModel, EsmForProteinFolding

      try:
            if not is_tf_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_tf_esm import (
                TF_ESM_PRETRAINED_MODEL_ARCHIVE_LIST,
                TFEsmForMaskedLM,
                TFEsmForSequenceClassification,
                TFEsmForTokenClassification,
                TFEsmModel,
                TFEsmPreTrainedModel,
            )


else:
      import sys

      lowerCamelCase__			=   _LazyModule(__name__, globals()["__file__"], _import_structure)












"""simple docstring"""




from collections import OrderedDict
from typing import Mapping

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import logging


lowerCamelCase__			=   logging.get_logger(__name__)

lowerCamelCase__			=   {
    "google/electra-small-generator": "https://huggingface.co/google/electra-small-generator/resolve/main/config.json",
    "google/electra-base-generator": "https://huggingface.co/google/electra-base-generator/resolve/main/config.json",
    "google/electra-large-generator": "https://huggingface.co/google/electra-large-generator/resolve/main/config.json",
    "google/electra-small-discriminator": (
        "https://huggingface.co/google/electra-small-discriminator/resolve/main/config.json"
    ),
    "google/electra-base-discriminator": (
        "https://huggingface.co/google/electra-base-discriminator/resolve/main/config.json"
    ),
    "google/electra-large-discriminator": (
        "https://huggingface.co/google/electra-large-discriminator/resolve/main/config.json"
    ),
}







class 					_UpperCamelCase		( __snake_case):
    __lowerCamelCase         =  "electra"






    def __init__(self						,      lowerCamelCase__=3_0_5_2_2						,      lowerCamelCase__=1_2_8						,      lowerCamelCase__=2_5_6						,      lowerCamelCase__=1_2						,      lowerCamelCase__=4						,      lowerCamelCase__=1_0_2_4						,      lowerCamelCase__="gelu"						,      lowerCamelCase__=0.1						,      lowerCamelCase__=0.1						,      lowerCamelCase__=5_1_2						,      lowerCamelCase__=2						,      lowerCamelCase__=0.0_2						,      lowerCamelCase__=1E-12						,      lowerCamelCase__="first"						,      lowerCamelCase__=True						,      lowerCamelCase__="gelu"						,      lowerCamelCase__=0.1						,      lowerCamelCase__=0						,      lowerCamelCase__="absolute"						,      lowerCamelCase__=True						,      lowerCamelCase__=None						,      **lowerCamelCase__						,      ):


      """simple docstring"""
      super().__init__(pad_token_id=lowerCamelCase__						,      **lowerCamelCase__   )

      A__											=							vocab_size
      A__											=							embedding_size
      A__											=							hidden_size
      A__											=							num_hidden_layers
      A__											=							num_attention_heads
      A__											=							intermediate_size
      A__											=							hidden_act
      A__											=							hidden_dropout_prob
      A__											=							attention_probs_dropout_prob
      A__											=							max_position_embeddings
      A__											=							type_vocab_size
      A__											=							initializer_range
      A__											=							layer_norm_eps

      A__											=							summary_type
      A__											=							summary_use_proj
      A__											=							summary_activation
      A__											=							summary_last_dropout
      A__											=							position_embedding_type
      A__											=							use_cache
      A__											=							classifier_dropout







class 					_UpperCamelCase		( __snake_case):






    @property
    def  A    (self   ):


      """simple docstring"""
      if self.task == "multiple-choice":
        A__											=							{0: """batch""", 1: """choice""", 2: """sequence"""}
      else:
        A__											=							{0: """batch""", 1: """sequence"""}
      return OrderedDict(
          [
              ("""input_ids""", dynamic_axis),
              ("""attention_mask""", dynamic_axis),
              ("""token_type_ids""", dynamic_axis),
          ]   )




