

from ...configuration_utils import PretrainedConfig
from ...utils import logging
from ...utils.backbone_utils import BackboneConfigMixin, get_aligned_output_features_output_indices


a_      =     logging.get_logger(__name__)

a_      =     {
    'facebook/convnextv2-tiny-1k-224': 'https://huggingface.co/facebook/convnextv2-tiny-1k-224/resolve/main/config.json',
}






class _UpperCamelCase				(				__A				,						__A ):
			'''simple docstring'''







			lowerCamelCase__							     ='convnextv2'
			def __init__(      self				:			List[Any]   ,   a				:			List[str]=3   ,   a				:			List[str]=4   ,   a				:			Union[str, Any]=4   ,   a				:			Optional[Any]=None   ,   a				:			Tuple=None   ,   a				:			Optional[int]="gelu"   ,   a				:			int=0.02   ,   a				:			Optional[int]=1e-12   ,   a				:			int=0.0   ,   a				:			Optional[Any]=224   ,   a				:			Union[str, Any]=None   ,   a				:			Union[str, Any]=None   ,   **a				:			List[Any]   ,   )				->							Optional[Any]:

				"""simple docstring"""

				super().__init__(**a						)

				SCREAMING_SNAKE_CASE :   List[str]					  =							num_channels
				SCREAMING_SNAKE_CASE :   Dict					  =							patch_size
				SCREAMING_SNAKE_CASE :   List[Any]					  =							num_stages
				SCREAMING_SNAKE_CASE :   Tuple					  =							[96, 192, 384, 768] if hidden_sizes is None else hidden_sizes
				SCREAMING_SNAKE_CASE :   Any					  =							[3, 3, 9, 3] if depths is None else depths
				SCREAMING_SNAKE_CASE :   str					  =							hidden_act
				SCREAMING_SNAKE_CASE :   Any					  =							initializer_range
				SCREAMING_SNAKE_CASE :   int					  =							layer_norm_eps
				SCREAMING_SNAKE_CASE :   Any					  =							drop_path_rate
				SCREAMING_SNAKE_CASE :   List[str]					  =							image_size
				SCREAMING_SNAKE_CASE :   List[str]					  =							["stem"] + [F"stage{idx}" for idx in range(1   ,   len(self.depths						) + 1						)]
				SCREAMING_SNAKE_CASE  ,SCREAMING_SNAKE_CASE :   Dict					  =							get_aligned_output_features_output_indices(
				    out_features=a   ,   out_indices=a   ,   stage_names=self.stage_names						)





'''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_squeezebert import SqueezeBertTokenizer


_snake_case : Tuple  				=						logging.get_logger(__name__)

_snake_case : Optional[int]  				=						{'vocab_file': 'vocab.txt', 'tokenizer_file': 'tokenizer.json'}

_snake_case : List[Any]  				=						{
    'vocab_file': {
        'squeezebert/squeezebert-uncased': (
            'https://huggingface.co/squeezebert/squeezebert-uncased/resolve/main/vocab.txt'
        ),
        'squeezebert/squeezebert-mnli': 'https://huggingface.co/squeezebert/squeezebert-mnli/resolve/main/vocab.txt',
        'squeezebert/squeezebert-mnli-headless': (
            'https://huggingface.co/squeezebert/squeezebert-mnli-headless/resolve/main/vocab.txt'
        ),
    },
    'tokenizer_file': {
        'squeezebert/squeezebert-uncased': (
            'https://huggingface.co/squeezebert/squeezebert-uncased/resolve/main/tokenizer.json'
        ),
        'squeezebert/squeezebert-mnli': (
            'https://huggingface.co/squeezebert/squeezebert-mnli/resolve/main/tokenizer.json'
        ),
        'squeezebert/squeezebert-mnli-headless': (
            'https://huggingface.co/squeezebert/squeezebert-mnli-headless/resolve/main/tokenizer.json'
        ),
    },
}

_snake_case : Union[str, Any]  				=						{
    'squeezebert/squeezebert-uncased': 512,
    'squeezebert/squeezebert-mnli': 512,
    'squeezebert/squeezebert-mnli-headless': 512,
}


_snake_case : Tuple  				=						{
    'squeezebert/squeezebert-uncased': {'do_lower_case': True},
    'squeezebert/squeezebert-mnli': {'do_lower_case': True},
    'squeezebert/squeezebert-mnli-headless': {'do_lower_case': True},
}

class      A       (						_a       ):
							lowercase_							     =							VOCAB_FILES_NAMES
							lowercase_							     =							PRETRAINED_VOCAB_FILES_MAP
							lowercase_							     =							PRETRAINED_INIT_CONFIGURATION
							lowercase_							     =							PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
							lowercase_							     =							SqueezeBertTokenizer







							def __init__(    self			:    str				,     lowerCAmelCase_			:    str=None				,     lowerCAmelCase_			:    List[str]=None				,     lowerCAmelCase_			:    str=True				,     lowerCAmelCase_			:    List[str]="[UNK]"				,     lowerCAmelCase_			:    Union[str, Any]="[SEP]"				,     lowerCAmelCase_			:    Optional[Any]="[PAD]"				,     lowerCAmelCase_			:    Any="[CLS]"				,     lowerCAmelCase_			:    List[str]="[MASK]"				,     lowerCAmelCase_			:    int=True				,     lowerCAmelCase_			:    List[Any]=None				,     **lowerCAmelCase_			:    Optional[int]				,     )     ->				int:


														"""simple docstring"""


														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   __lowerCAmelCase     (    self			:    Union[str, Any]				,     lowerCAmelCase_			:    int				,     lowerCAmelCase_			:    Optional[Any]=None   )     ->				List[str]:


														"""simple docstring"""


														_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   __lowerCAmelCase     (    self			:    Any				,     lowerCAmelCase_			:    List[int]				,     lowerCAmelCase_			:    Optional[List[int]] = None   )     ->				List[int]:


														"""simple docstring"""


														_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   __lowerCAmelCase     (    self			:    Optional[Any]				,     lowerCAmelCase_			:    str				,     lowerCAmelCase_			:    Optional[str] = None   )     ->				Tuple[str]:


														"""simple docstring"""


														_a      	=							self._tokenizer.model.save(lowerCAmelCase_				,     name=lowerCAmelCase_   )
														return tuple(lowerCAmelCase_   )

