

from collections import OrderedDict
from typing import Mapping

from packaging import version

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


a		=logging.get_logger(__name__)

a		={
    """sail/poolformer_s12""": """https://huggingface.co/sail/poolformer_s12/resolve/main/config.json""",
    # See all PoolFormer models at https://huggingface.co/models?filter=poolformer
}






class        A_		(       SCREAMING_SNAKE_CASE				):
							_UpperCAmelCase    :  Tuple						      =      '''poolformer'''
							def __init__(		self		:			Optional[Any]   ,SCREAMING_SNAKE_CASE__		:			Optional[int]=3   ,SCREAMING_SNAKE_CASE__		:			Any=1_6   ,SCREAMING_SNAKE_CASE__		:			Tuple=1_6   ,SCREAMING_SNAKE_CASE__		:			List[Any]=3   ,SCREAMING_SNAKE_CASE__		:			Optional[int]=4.0   ,SCREAMING_SNAKE_CASE__		:			int=[2, 2, 6, 2]   ,SCREAMING_SNAKE_CASE__		:			Dict=[6_4, 1_2_8, 3_2_0, 5_1_2]   ,SCREAMING_SNAKE_CASE__		:			Tuple=[7, 3, 3, 3]   ,SCREAMING_SNAKE_CASE__		:			int=[4, 2, 2, 2]   ,SCREAMING_SNAKE_CASE__		:			int=[2, 1, 1, 1]   ,SCREAMING_SNAKE_CASE__		:			Optional[Any]=4   ,SCREAMING_SNAKE_CASE__		:			Any=0.0   ,SCREAMING_SNAKE_CASE__		:			Optional[Any]="gelu"   ,SCREAMING_SNAKE_CASE__		:			int=True   ,SCREAMING_SNAKE_CASE__		:			str=1E-5   ,SCREAMING_SNAKE_CASE__		:			List[Any]=0.02   ,**SCREAMING_SNAKE_CASE__		:			Tuple   ,):
								__lowerCamelCase				:				str					       = num_channels
								__lowerCamelCase				:				Any					       = patch_size
								__lowerCamelCase				:				Optional[int]					       = stride
								__lowerCamelCase				:				List[str]					       = padding
								__lowerCamelCase				:				List[str]					       = pool_size
								__lowerCamelCase				:				str					       = hidden_sizes
								__lowerCamelCase				:				List[Any]					       = mlp_ratio
								__lowerCamelCase				:				Optional[int]					       = depths
								__lowerCamelCase				:				Optional[int]					       = patch_sizes
								__lowerCamelCase				:				Union[str, Any]					       = strides
								__lowerCamelCase				:				Any					       = num_encoder_blocks
								__lowerCamelCase				:				Tuple					       = drop_path_rate
								__lowerCamelCase				:				Any					       = hidden_act
								__lowerCamelCase				:				List[Any]					       = use_layer_scale
								__lowerCamelCase				:				List[str]					       = layer_scale_init_value
								__lowerCamelCase				:				str					       = initializer_range
								super().__init__(**SCREAMING_SNAKE_CASE__)






class        A_		(       SCREAMING_SNAKE_CASE				):
							_UpperCAmelCase    :  List[str]						      =      version.parse('''1.11'''				)
							@property
							def     lowerCAmelCase     (		self		:			Dict):
								return OrderedDict(
								    [
								        ('pixel_values', {0: 'batch', 1: 'num_channels', 2: 'height', 3: 'width'}),
								    ])


							@property
							def     lowerCAmelCase     (		self		:			Optional[Any]):
								return 2E-3





import json
from typing import List, Optional, Tuple

from tokenizers import normalizers

from ...tokenization_utils_fast import PreTrainedTokenizerFast
from ...utils import logging
from .tokenization_bert import BertTokenizer


_SCREAMING_SNAKE_CASE										=						logging.get_logger(__name__)

_SCREAMING_SNAKE_CASE										=						{'vocab_file': 'vocab.txt', 'tokenizer_file': 'tokenizer.json'}

_SCREAMING_SNAKE_CASE										=						{
    'vocab_file': {
        'bert-base-uncased': 'https://huggingface.co/bert-base-uncased/resolve/main/vocab.txt',
        'bert-large-uncased': 'https://huggingface.co/bert-large-uncased/resolve/main/vocab.txt',
        'bert-base-cased': 'https://huggingface.co/bert-base-cased/resolve/main/vocab.txt',
        'bert-large-cased': 'https://huggingface.co/bert-large-cased/resolve/main/vocab.txt',
        'bert-base-multilingual-uncased': (
            'https://huggingface.co/bert-base-multilingual-uncased/resolve/main/vocab.txt'
        ),
        'bert-base-multilingual-cased': 'https://huggingface.co/bert-base-multilingual-cased/resolve/main/vocab.txt',
        'bert-base-chinese': 'https://huggingface.co/bert-base-chinese/resolve/main/vocab.txt',
        'bert-base-german-cased': 'https://huggingface.co/bert-base-german-cased/resolve/main/vocab.txt',
        'bert-large-uncased-whole-word-masking': (
            'https://huggingface.co/bert-large-uncased-whole-word-masking/resolve/main/vocab.txt'
        ),
        'bert-large-cased-whole-word-masking': (
            'https://huggingface.co/bert-large-cased-whole-word-masking/resolve/main/vocab.txt'
        ),
        'bert-large-uncased-whole-word-masking-finetuned-squad': (
            'https://huggingface.co/bert-large-uncased-whole-word-masking-finetuned-squad/resolve/main/vocab.txt'
        ),
        'bert-large-cased-whole-word-masking-finetuned-squad': (
            'https://huggingface.co/bert-large-cased-whole-word-masking-finetuned-squad/resolve/main/vocab.txt'
        ),
        'bert-base-cased-finetuned-mrpc': (
            'https://huggingface.co/bert-base-cased-finetuned-mrpc/resolve/main/vocab.txt'
        ),
        'bert-base-german-dbmdz-cased': 'https://huggingface.co/bert-base-german-dbmdz-cased/resolve/main/vocab.txt',
        'bert-base-german-dbmdz-uncased': (
            'https://huggingface.co/bert-base-german-dbmdz-uncased/resolve/main/vocab.txt'
        ),
        'TurkuNLP/bert-base-finnish-cased-v1': (
            'https://huggingface.co/TurkuNLP/bert-base-finnish-cased-v1/resolve/main/vocab.txt'
        ),
        'TurkuNLP/bert-base-finnish-uncased-v1': (
            'https://huggingface.co/TurkuNLP/bert-base-finnish-uncased-v1/resolve/main/vocab.txt'
        ),
        'wietsedv/bert-base-dutch-cased': (
            'https://huggingface.co/wietsedv/bert-base-dutch-cased/resolve/main/vocab.txt'
        ),
    },
    'tokenizer_file': {
        'bert-base-uncased': 'https://huggingface.co/bert-base-uncased/resolve/main/tokenizer.json',
        'bert-large-uncased': 'https://huggingface.co/bert-large-uncased/resolve/main/tokenizer.json',
        'bert-base-cased': 'https://huggingface.co/bert-base-cased/resolve/main/tokenizer.json',
        'bert-large-cased': 'https://huggingface.co/bert-large-cased/resolve/main/tokenizer.json',
        'bert-base-multilingual-uncased': (
            'https://huggingface.co/bert-base-multilingual-uncased/resolve/main/tokenizer.json'
        ),
        'bert-base-multilingual-cased': (
            'https://huggingface.co/bert-base-multilingual-cased/resolve/main/tokenizer.json'
        ),
        'bert-base-chinese': 'https://huggingface.co/bert-base-chinese/resolve/main/tokenizer.json',
        'bert-base-german-cased': 'https://huggingface.co/bert-base-german-cased/resolve/main/tokenizer.json',
        'bert-large-uncased-whole-word-masking': (
            'https://huggingface.co/bert-large-uncased-whole-word-masking/resolve/main/tokenizer.json'
        ),
        'bert-large-cased-whole-word-masking': (
            'https://huggingface.co/bert-large-cased-whole-word-masking/resolve/main/tokenizer.json'
        ),
        'bert-large-uncased-whole-word-masking-finetuned-squad': (
            'https://huggingface.co/bert-large-uncased-whole-word-masking-finetuned-squad/resolve/main/tokenizer.json'
        ),
        'bert-large-cased-whole-word-masking-finetuned-squad': (
            'https://huggingface.co/bert-large-cased-whole-word-masking-finetuned-squad/resolve/main/tokenizer.json'
        ),
        'bert-base-cased-finetuned-mrpc': (
            'https://huggingface.co/bert-base-cased-finetuned-mrpc/resolve/main/tokenizer.json'
        ),
        'bert-base-german-dbmdz-cased': (
            'https://huggingface.co/bert-base-german-dbmdz-cased/resolve/main/tokenizer.json'
        ),
        'bert-base-german-dbmdz-uncased': (
            'https://huggingface.co/bert-base-german-dbmdz-uncased/resolve/main/tokenizer.json'
        ),
        'TurkuNLP/bert-base-finnish-cased-v1': (
            'https://huggingface.co/TurkuNLP/bert-base-finnish-cased-v1/resolve/main/tokenizer.json'
        ),
        'TurkuNLP/bert-base-finnish-uncased-v1': (
            'https://huggingface.co/TurkuNLP/bert-base-finnish-uncased-v1/resolve/main/tokenizer.json'
        ),
        'wietsedv/bert-base-dutch-cased': (
            'https://huggingface.co/wietsedv/bert-base-dutch-cased/resolve/main/tokenizer.json'
        ),
    },
}

_SCREAMING_SNAKE_CASE										=						{
    'bert-base-uncased': 512,
    'bert-large-uncased': 512,
    'bert-base-cased': 512,
    'bert-large-cased': 512,
    'bert-base-multilingual-uncased': 512,
    'bert-base-multilingual-cased': 512,
    'bert-base-chinese': 512,
    'bert-base-german-cased': 512,
    'bert-large-uncased-whole-word-masking': 512,
    'bert-large-cased-whole-word-masking': 512,
    'bert-large-uncased-whole-word-masking-finetuned-squad': 512,
    'bert-large-cased-whole-word-masking-finetuned-squad': 512,
    'bert-base-cased-finetuned-mrpc': 512,
    'bert-base-german-dbmdz-cased': 512,
    'bert-base-german-dbmdz-uncased': 512,
    'TurkuNLP/bert-base-finnish-cased-v1': 512,
    'TurkuNLP/bert-base-finnish-uncased-v1': 512,
    'wietsedv/bert-base-dutch-cased': 512,
}

_SCREAMING_SNAKE_CASE										=						{
    'bert-base-uncased': {'do_lower_case': True},
    'bert-large-uncased': {'do_lower_case': True},
    'bert-base-cased': {'do_lower_case': False},
    'bert-large-cased': {'do_lower_case': False},
    'bert-base-multilingual-uncased': {'do_lower_case': True},
    'bert-base-multilingual-cased': {'do_lower_case': False},
    'bert-base-chinese': {'do_lower_case': False},
    'bert-base-german-cased': {'do_lower_case': False},
    'bert-large-uncased-whole-word-masking': {'do_lower_case': True},
    'bert-large-cased-whole-word-masking': {'do_lower_case': False},
    'bert-large-uncased-whole-word-masking-finetuned-squad': {'do_lower_case': True},
    'bert-large-cased-whole-word-masking-finetuned-squad': {'do_lower_case': False},
    'bert-base-cased-finetuned-mrpc': {'do_lower_case': False},
    'bert-base-german-dbmdz-cased': {'do_lower_case': False},
    'bert-base-german-dbmdz-uncased': {'do_lower_case': True},
    'TurkuNLP/bert-base-finnish-cased-v1': {'do_lower_case': False},
    'TurkuNLP/bert-base-finnish-uncased-v1': {'do_lower_case': True},
    'wietsedv/bert-base-dutch-cased': {'do_lower_case': False},
}



class 				a							(			__lowerCAmelCase       ):







 """simple docstring"""






 lowerCamelCase	:Tuple    			=		VOCAB_FILES_NAMES
 lowerCamelCase	:Union[str, Any]    			=		PRETRAINED_VOCAB_FILES_MAP
 lowerCamelCase	:Dict    			=		PRETRAINED_INIT_CONFIGURATION
 lowerCamelCase	:Optional[Any]    			=		PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
 lowerCamelCase	:Optional[Any]    			=		BertTokenizer



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

        _A        =  json.loads(self.backend_tokenizer.normalizer.__getstate__()							)
        if (
            normalizer_state.get("""lowercase"""		,				lowerCAmelCase_							) != do_lower_case
            or normalizer_state.get("""strip_accents"""		,				lowerCAmelCase_							) != strip_accents
            or normalizer_state.get("""handle_chinese_chars"""		,				lowerCAmelCase_							) != tokenize_chinese_chars
        ):
               _A        =  getattr(lowerCAmelCase_		,				normalizer_state.pop("""type"""							)							)
               _A        =  do_lower_case
               _A        =  strip_accents
               _A        =  tokenize_chinese_chars
               _A        =  normalizer_class(**lowerCAmelCase_							)

        _A        =  do_lower_case



 def      UpperCAmelCase							(					self		,				lowerCAmelCase_		,				lowerCAmelCase_=None							)  ->					List[str]:
        _A        =  [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      UpperCAmelCase							(					self		,				lowerCAmelCase_		,				lowerCAmelCase_ = None							)  ->					List[int]:
        _A        =  [self.sep_token_id]
        _A        =  [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      UpperCAmelCase							(					self		,				lowerCAmelCase_		,				lowerCAmelCase_ = None							)  ->					Tuple[str]:
        _A        =  self._tokenizer.model.save(lowerCAmelCase_		,				name=lowerCAmelCase_							)
        return tuple(lowerCAmelCase_							)




