




from collections import OrderedDict
from typing import Mapping

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


UpperCamelCase								=     logging.get_logger(__name__)

UpperCamelCase								=     {
    'mnaylor/mega-base-wikitext': 'https://huggingface.co/mnaylor/mega-base-wikitext/resolve/main/config.json',
}





class  __lowerCamelCase       (    UpperCamelCase__    ):




    """simple docstring"""

    snake_case__					=      "mega"


    def __init__(       self     :     Union[str, Any]   ,	SCREAMING_SNAKE_CASE__     :     Any=30_522   ,	SCREAMING_SNAKE_CASE__     :     Optional[Any]=128   ,	SCREAMING_SNAKE_CASE__     :     Any=4   ,	SCREAMING_SNAKE_CASE__     :     Optional[Any]=256   ,	SCREAMING_SNAKE_CASE__     :     Optional[Any]=16   ,	SCREAMING_SNAKE_CASE__     :     Optional[int]=True   ,	SCREAMING_SNAKE_CASE__     :     Union[str, Any]=64   ,	SCREAMING_SNAKE_CASE__     :     List[Any]=False   ,	SCREAMING_SNAKE_CASE__     :     Any=-1   ,	SCREAMING_SNAKE_CASE__     :     List[str]=None   ,	SCREAMING_SNAKE_CASE__     :     Tuple=True   ,	SCREAMING_SNAKE_CASE__     :     Tuple="scalenorm"   ,	SCREAMING_SNAKE_CASE__     :     Dict=True   ,	SCREAMING_SNAKE_CASE__     :     List[Any]="silu"   ,	SCREAMING_SNAKE_CASE__     :     Dict="softmax"   ,	SCREAMING_SNAKE_CASE__     :     Tuple=0.1   ,	SCREAMING_SNAKE_CASE__     :     Optional[Any]=0.1   ,	SCREAMING_SNAKE_CASE__     :     Optional[Any]=0.1   ,	SCREAMING_SNAKE_CASE__     :     Any=False   ,	SCREAMING_SNAKE_CASE__     :     Tuple=True   ,	SCREAMING_SNAKE_CASE__     :     List[Any]=256   ,	SCREAMING_SNAKE_CASE__     :     Dict=True   ,	SCREAMING_SNAKE_CASE__     :     Optional[Any]=0.1   ,	SCREAMING_SNAKE_CASE__     :     Optional[int]=2_048   ,	SCREAMING_SNAKE_CASE__     :     List[str]=False   ,	SCREAMING_SNAKE_CASE__     :     int=2   ,	SCREAMING_SNAKE_CASE__     :     Optional[int]=0.02   ,	SCREAMING_SNAKE_CASE__     :     str=0.2   ,	SCREAMING_SNAKE_CASE__     :     Optional[int]=0.02   ,	SCREAMING_SNAKE_CASE__     :     Union[str, Any]=1.0   ,	SCREAMING_SNAKE_CASE__     :     int=1   ,	SCREAMING_SNAKE_CASE__     :     Optional[int]=0   ,	SCREAMING_SNAKE_CASE__     :     Dict=2   ,	SCREAMING_SNAKE_CASE__     :     Dict="rotary"   ,	SCREAMING_SNAKE_CASE__     :     Dict=None   ,	SCREAMING_SNAKE_CASE__     :     Optional[int]=True   ,	SCREAMING_SNAKE_CASE__     :     Tuple=True   ,	**SCREAMING_SNAKE_CASE__     :     List[str]   ,	)      ->       List[str]:
         super().__init__(pad_token_id=SCREAMING_SNAKE_CASE__   ,	bos_token_id=SCREAMING_SNAKE_CASE__   ,	eos_token_id=SCREAMING_SNAKE_CASE__   ,	**SCREAMING_SNAKE_CASE__   )

         lowerCAmelCase__		= vocab_size
         lowerCAmelCase__		= hidden_size
         lowerCAmelCase__		= num_hidden_layers
         lowerCAmelCase__		= activation
         lowerCAmelCase__		= attention_activation
         lowerCAmelCase__		= intermediate_size
         lowerCAmelCase__		= ema_projection_size
         lowerCAmelCase__		= bidirectional
         lowerCAmelCase__		= shared_representation_size
         lowerCAmelCase__		= use_chunking
         lowerCAmelCase__		= chunk_size
         lowerCAmelCase__		= truncation
         lowerCAmelCase__		= normalize_before_mega
         lowerCAmelCase__		= normalization_type
         lowerCAmelCase__		= norm_affine
         lowerCAmelCase__		= dropout_prob
         lowerCAmelCase__		= hidden_dropout_prob
         lowerCAmelCase__		= attention_probs_dropout_prob
         lowerCAmelCase__		= use_feature_dropout
         lowerCAmelCase__		= use_normalized_ffn
         lowerCAmelCase__		= nffn_hidden_size
         lowerCAmelCase__		= normalize_before_ffn
         lowerCAmelCase__		= nffn_activation_dropout_prob
         lowerCAmelCase__		= max_positions
         lowerCAmelCase__		= add_token_type_embeddings
         lowerCAmelCase__		= type_vocab_size
         lowerCAmelCase__		= initializer_range
         lowerCAmelCase__		= ema_delta_alpha_range
         lowerCAmelCase__		= ema_beta_range
         lowerCAmelCase__		= ema_gamma_omega_range
         lowerCAmelCase__		= relative_positional_bias
         lowerCAmelCase__		= use_cache
         lowerCAmelCase__		= classifier_dropout
         lowerCAmelCase__		= add_lm_hidden_dense_layer
         lowerCAmelCase__		= 1  # not used but required by Hugging Face






class  __lowerCamelCase       (    UpperCamelCase__    ):




    """simple docstring"""

    @property
    def    a      (       self     :     List[str]   )      ->       Mapping[str, Mapping[int, str]]:
         if self.task == "multiple-choice":
              lowerCAmelCase__		= {0: "batch", 1: "choice", 2: "sequence"}
         else:
              lowerCAmelCase__		= {0: "batch", 1: "sequence"}
         return OrderedDict(
             [
                 ("input_ids", dynamic_axis),
                 ("attention_mask", dynamic_axis),
             ]   )






import os
import tempfile
import unittest
from typing import List

from transformers.models.esm.tokenization_esm import VOCAB_FILES_NAMES, EsmTokenizer
from transformers.testing_utils import require_tokenizers
from transformers.tokenization_utils import PreTrainedTokenizer
from transformers.tokenization_utils_base import PreTrainedTokenizerBase





@require_tokenizers
class  __lowerCamelCase       (    unittest.TestCase    ):




    """simple docstring"""

    snake_case__					=      EsmTokenizer


    def    a      (       self     :     str   )      ->       Tuple:
         super().setUp()
         lowerCAmelCase__		= tempfile.mkdtemp()
         # fmt: off
         lowerCAmelCase__		= ["<cls>", "<pad>", "<eos>", "<unk>", "L", "A", "G", "V", "S", "E", "R", "T", "I", "D", "P", "K", "Q", "N", "F", "Y", "M", "H", "W", "C", "X", "B", "U", "Z", "O", ".", "-", "<null_1>", "<mask>"]  # noqa: E501
         # fmt: on
         lowerCAmelCase__		= os.path.join(self.tmpdirname   ,	VOCAB_FILES_NAMES["vocab_file"]   )
         with open(self.vocab_file   ,	"w"   ,	encoding="utf-8"   ) as vocab_writer:
              vocab_writer.write("".join([x + "\n" for x in vocab_tokens]   )   )


    def    a      (       self     :     Dict   ,	**SCREAMING_SNAKE_CASE__     :     Optional[Any]   )      ->       List[PreTrainedTokenizerBase]:
         return [self.get_tokenizer(**SCREAMING_SNAKE_CASE__   )]


    def    a      (       self     :     List[str]   ,	**SCREAMING_SNAKE_CASE__     :     str   )      ->       PreTrainedTokenizer:
         return self.tokenizer_class.from_pretrained(self.tmpdirname   ,	**SCREAMING_SNAKE_CASE__   )


    def    a      (       self     :     str   )      ->       Tuple:
         lowerCAmelCase__		= self.tokenizer_class(self.vocab_file   )

         lowerCAmelCase__		= tokenizer.tokenize("LAGVS"   )
         self.assertListEqual(SCREAMING_SNAKE_CASE__   ,	["L", "A", "G", "V", "S"]   )
         self.assertListEqual(tokenizer.convert_tokens_to_ids(SCREAMING_SNAKE_CASE__   )   ,	[4, 5, 6, 7, 8]   )


    def    a      (       self     :     int   )      ->       Union[str, Any]:
         lowerCAmelCase__		= self.tokenizer_class(self.vocab_file   )

         lowerCAmelCase__		= "LAGVS"
         self.assertListEqual(tokenizer.encode(SCREAMING_SNAKE_CASE__   )   ,	[0, 4, 5, 6, 7, 8, 2]   )


    def    a      (       self     :     Union[str, Any]   )      ->       str:
         lowerCAmelCase__		= self.tokenizer_class(self.vocab_file   )

         lowerCAmelCase__		= ["LAGVS", "WCB"]
         lowerCAmelCase__		= tokenizer(SCREAMING_SNAKE_CASE__   ,	padding=SCREAMING_SNAKE_CASE__   )["input_ids"]

         self.assertListEqual(SCREAMING_SNAKE_CASE__   ,	[[0, 4, 5, 6, 7, 8, 2], [0, 22, 23, 25, 2]]   )


    def    a      (       self     :     Any   )      ->       Union[str, Any]:
         lowerCAmelCase__		= self.tokenizer_class(self.vocab_file   )

         lowerCAmelCase__		= ["LAGVS", "WCB"]
         lowerCAmelCase__		= tokenizer(SCREAMING_SNAKE_CASE__   ,	padding=SCREAMING_SNAKE_CASE__   )["input_ids"]

         self.assertListEqual(SCREAMING_SNAKE_CASE__   ,	[[0, 4, 5, 6, 7, 8, 2], [0, 22, 23, 25, 2, 1, 1]]   )


    def    a      (       self     :     str   )      ->       Optional[Any]:
         lowerCAmelCase__		= self.get_tokenizers(fast=SCREAMING_SNAKE_CASE__   )
         for tokenizer in tokenizers:
              with self.subTest(f'{tokenizer.__class__.__name__}'   ):
                   lowerCAmelCase__		= "<unk>"
                   lowerCAmelCase__		= "<mask>"

                   lowerCAmelCase__		= tokenizer.tokenize(SCREAMING_SNAKE_CASE__   )
                   lowerCAmelCase__		= tokenizer.tokenize(SCREAMING_SNAKE_CASE__   )

                   self.assertEqual(len(SCREAMING_SNAKE_CASE__   )   ,	1   )
                   self.assertEqual(len(SCREAMING_SNAKE_CASE__   )   ,	1   )
                   self.assertEqual(token_a[0]   ,	SCREAMING_SNAKE_CASE__   )
                   self.assertEqual(token_a[0]   ,	SCREAMING_SNAKE_CASE__   )
