"""simple docstring"""






import json
from typing import List, Optional, Tuple

from tokenizers import normalizers

from ...tokenization_utils_fast import PreTrainedTokenizerFast
from ...utils import logging
from .tokenization_mobilebert import MobileBertTokenizer


__A			   = logging.get_logger(__name__)

__A			   = {"vocab_file": "vocab.txt", "tokenizer_file": "tokenizer.json"}

__A			   = {
    "vocab_file": {"mobilebert-uncased": "https://huggingface.co/google/mobilebert-uncased/resolve/main/vocab.txt"},
    "tokenizer_file": {
        "mobilebert-uncased": "https://huggingface.co/google/mobilebert-uncased/resolve/main/tokenizer.json"
    },
}

__A			   = {"mobilebert-uncased": 5_1_2}


__A			   = {}


class     UpperCAmelCase						(_UpperCAmelCase  ):



    """simple docstring"""

    _UpperCAmelCase	:List[str]						    = VOCAB_FILES_NAMES
    _UpperCAmelCase	:List[Any]						    = PRETRAINED_VOCAB_FILES_MAP
    _UpperCAmelCase	:Optional[int]						    = PRETRAINED_INIT_CONFIGURATION
    _UpperCAmelCase	:Optional[Any]						    = PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
    _UpperCAmelCase	:Optional[int]						    = MobileBertTokenizer






    def __init__(   self    ,			_UpperCAmelCase=None    ,			_UpperCAmelCase=None    ,			_UpperCAmelCase=True    ,			_UpperCAmelCase="[UNK]"    ,			_UpperCAmelCase="[SEP]"    ,			_UpperCAmelCase="[PAD]"    ,			_UpperCAmelCase="[CLS]"    ,			_UpperCAmelCase="[MASK]"    ,			_UpperCAmelCase=True    ,			_UpperCAmelCase=None    ,			**_UpperCAmelCase    ,			):
       super().__init__(
           _UpperCAmelCase    ,			tokenizer_file=_UpperCAmelCase    ,			do_lower_case=_UpperCAmelCase    ,			unk_token=_UpperCAmelCase    ,			sep_token=_UpperCAmelCase    ,			pad_token=_UpperCAmelCase    ,			cls_token=_UpperCAmelCase    ,			mask_token=_UpperCAmelCase    ,			tokenize_chinese_chars=_UpperCAmelCase    ,			strip_accents=_UpperCAmelCase    ,			**_UpperCAmelCase    ,			)

       lowercase__:   List[Any]					=      json.loads(self.backend_tokenizer.normalizer.__getstate__()							)
       if (
           normalizer_state.get('''lowercase'''    ,			_UpperCAmelCase							) != do_lower_case
           or normalizer_state.get('''strip_accents'''    ,			_UpperCAmelCase							) != strip_accents
           or normalizer_state.get('''handle_chinese_chars'''    ,			_UpperCAmelCase							) != tokenize_chinese_chars
       ):
          lowercase__:   List[Any]					=      getattr(_UpperCAmelCase    ,			normalizer_state.pop('''type'''							)							)
          lowercase__:   Any					=      do_lower_case
          lowercase__:   Tuple					=      strip_accents
          lowercase__:   List[Any]					=      tokenize_chinese_chars
          lowercase__:   Any					=      normalizer_class(**_UpperCAmelCase							)

       lowercase__:   Any					=      do_lower_case






    def _snake_case			(   self    ,			_UpperCAmelCase    ,			_UpperCAmelCase=None							):
       lowercase__:   int					=      [self.cls_token_id] + token_ids_a + [self.sep_token_id]

       if token_ids_a:
          output += token_ids_a + [self.sep_token_id]

       return output






    def _snake_case			(   self    ,			_UpperCAmelCase    ,			_UpperCAmelCase = None							):
       lowercase__:   List[Any]					=      [self.sep_token_id]
       lowercase__:   str					=      [self.cls_token_id]
       if token_ids_a is None:
          return len(cls + token_ids_a + sep							) * [0]
       return len(cls + token_ids_a + sep							) * [0] + len(token_ids_a + sep							) * [1]






    def _snake_case			(   self    ,			_UpperCAmelCase    ,			_UpperCAmelCase = None							):
       lowercase__:   Optional[int]					=      self._tokenizer.model.save(_UpperCAmelCase    ,			name=_UpperCAmelCase							)
       return tuple(_UpperCAmelCase							)

"""simple docstring"""






from typing import List

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


__A			   = logging.get_logger(__name__)

__A			   = {
    "snap-research/efficientformer-l1-300": (
        "https://huggingface.co/snap-research/efficientformer-l1-300/resolve/main/config.json"
    ),
}


class     UpperCAmelCase						(_UpperCAmelCase  ):



    """simple docstring"""

    _UpperCAmelCase	:Optional[Any]						    = "efficientformer"






    def __init__(   self    ,			_UpperCAmelCase = [3, 2, 6, 4]    ,			_UpperCAmelCase = [48, 96, 224, 448]    ,			_UpperCAmelCase = [True, True, True, True]    ,			_UpperCAmelCase = 448    ,			_UpperCAmelCase = 32    ,			_UpperCAmelCase = 4    ,			_UpperCAmelCase = 7    ,			_UpperCAmelCase = 5    ,			_UpperCAmelCase = 8    ,			_UpperCAmelCase = 4    ,			_UpperCAmelCase = 0.0    ,			_UpperCAmelCase = 16    ,			_UpperCAmelCase = 3    ,			_UpperCAmelCase = 3    ,			_UpperCAmelCase = 3    ,			_UpperCAmelCase = 2    ,			_UpperCAmelCase = 1    ,			_UpperCAmelCase = 0.0    ,			_UpperCAmelCase = 1    ,			_UpperCAmelCase = True    ,			_UpperCAmelCase = True    ,			_UpperCAmelCase = 1e-5    ,			_UpperCAmelCase = "gelu"    ,			_UpperCAmelCase = 0.02    ,			_UpperCAmelCase = 1e-1_2    ,			_UpperCAmelCase = 224    ,			_UpperCAmelCase = 1e-0_5    ,			**_UpperCAmelCase    ,			):
       super().__init__(**_UpperCAmelCase							)

       lowercase__:   List[str]					=      hidden_act
       lowercase__:   Union[str, Any]					=      hidden_dropout_prob
       lowercase__:   Union[str, Any]					=      hidden_sizes
       lowercase__:   Any					=      num_hidden_layers
       lowercase__:   int					=      num_attention_heads
       lowercase__:   Dict					=      initializer_range
       lowercase__:   Optional[int]					=      layer_norm_eps
       lowercase__:   int					=      patch_size
       lowercase__:   int					=      num_channels
       lowercase__:   str					=      depths
       lowercase__:   List[str]					=      mlp_expansion_ratio
       lowercase__:   List[str]					=      downsamples
       lowercase__:   List[str]					=      dim
       lowercase__:   Optional[Any]					=      key_dim
       lowercase__:   Union[str, Any]					=      attention_ratio
       lowercase__:   Any					=      resolution
       lowercase__:   Any					=      pool_size
       lowercase__:   List[Any]					=      downsample_patch_size
       lowercase__:   Optional[int]					=      downsample_stride
       lowercase__:   Union[str, Any]					=      downsample_pad
       lowercase__:   List[Any]					=      drop_path_rate
       lowercase__:   Optional[Any]					=      num_metaad_blocks
       lowercase__:   Any					=      distillation
       lowercase__:   Optional[int]					=      use_layer_scale
       lowercase__:   List[str]					=      layer_scale_init_value
       lowercase__:   Dict					=      image_size
       lowercase__:   List[str]					=      batch_norm_eps
