


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


A	:		List[str]    =       logging.get_logger(__name__)

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

A	:		Tuple    =       {
    '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'
        ),
    },
}

A	:		Union[str, Any]    =       {
    'squeezebert/squeezebert-uncased': 5_1_2,
    'squeezebert/squeezebert-mnli': 5_1_2,
    'squeezebert/squeezebert-mnli-headless': 5_1_2,
}


A	:		List[str]    =       {
    'squeezebert/squeezebert-uncased': {'do_lower_case': True},
    'squeezebert/squeezebert-mnli': {'do_lower_case': True},
    'squeezebert/squeezebert-mnli-headless': {'do_lower_case': True},
}



class 							A   (	UpperCAmelCase__							):
					'''simple docstring'''






					A__      =			VOCAB_FILES_NAMES
					A__      =			PRETRAINED_VOCAB_FILES_MAP
					A__      =			PRETRAINED_INIT_CONFIGURATION
					A__      =			PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
					A__      =			SqueezeBertTokenizer

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




							"""simple docstring"""


							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__					      =		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__					      =		getattr(_UpperCAmelCase				, normalizer_state.pop("""type"""		)		)
									lowercase__					      =		do_lower_case
									lowercase__					      =		strip_accents
									lowercase__					      =		tokenize_chinese_chars
									lowercase__					      =		normalizer_class(**_UpperCAmelCase		)

							lowercase__					      =		do_lower_case

					def   lowerCamelCase__					(self   :						Dict				, _UpperCAmelCase   :						List[str]				, _UpperCAmelCase   :						Union[str, Any]=None		)						->       int:




							"""simple docstring"""


							lowercase__					      =		[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   :						Union[str, Any]				, _UpperCAmelCase   :						List[int]				, _UpperCAmelCase   :						Optional[List[int]] = None		)						->       List[int]:




							"""simple docstring"""


							lowercase__					      =		[self.sep_token_id]
							lowercase__					      =		[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   :						Any				, _UpperCAmelCase   :						str				, _UpperCAmelCase   :						Optional[str] = None		)						->       Tuple[str]:




							"""simple docstring"""


							lowercase__					      =		self._tokenizer.model.save(_UpperCAmelCase				, name=_UpperCAmelCase		)
							return tuple(_UpperCAmelCase		)





import warnings
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	:		List[str]    =       logging.get_logger(__name__)

A	:		List[Any]    =       {
    'nvidia/segformer-b0-finetuned-ade-512-512': (
        'https://huggingface.co/nvidia/segformer-b0-finetuned-ade-512-512/resolve/main/config.json'
    ),
    # See all SegFormer models at https://huggingface.co/models?filter=segformer
}



class 							A   (	UpperCAmelCase__							):
					'''simple docstring'''






					A__      =			'''segformer'''

					def __init__(self   :						Dict				, _UpperCAmelCase   :						Optional[int]=3				, _UpperCAmelCase   :						Dict=4				, _UpperCAmelCase   :						Union[str, Any]=[2, 2, 2, 2]				, _UpperCAmelCase   :						List[str]=[8, 4, 2, 1]				, _UpperCAmelCase   :						str=[32, 64, 160, 256]				, _UpperCAmelCase   :						Optional[int]=[7, 3, 3, 3]				, _UpperCAmelCase   :						int=[4, 2, 2, 2]				, _UpperCAmelCase   :						str=[1, 2, 5, 8]				, _UpperCAmelCase   :						Optional[int]=[4, 4, 4, 4]				, _UpperCAmelCase   :						List[Any]="gelu"				, _UpperCAmelCase   :						Optional[Any]=0.0				, _UpperCAmelCase   :						Dict=0.0				, _UpperCAmelCase   :						Dict=0.1				, _UpperCAmelCase   :						List[str]=0.02				, _UpperCAmelCase   :						str=0.1				, _UpperCAmelCase   :						Optional[Any]=1E-6				, _UpperCAmelCase   :						Optional[Any]=256				, _UpperCAmelCase   :						Any=255				, **_UpperCAmelCase   :						str				, )						->       Tuple:




							"""simple docstring"""


							super().__init__(**_UpperCAmelCase		)

							if "reshape_last_stage" in kwargs and kwargs["reshape_last_stage"] is False:
									warnings.warn(
									    """Reshape_last_stage is set to False in this config. This argument is deprecated and will soon be"""
									    """ removed, as the behaviour will default to that of reshape_last_stage = True."""				, _UpperCAmelCase				, )

							lowercase__					      =		num_channels
							lowercase__					      =		num_encoder_blocks
							lowercase__					      =		depths
							lowercase__					      =		sr_ratios
							lowercase__					      =		hidden_sizes
							lowercase__					      =		patch_sizes
							lowercase__					      =		strides
							lowercase__					      =		mlp_ratios
							lowercase__					      =		num_attention_heads
							lowercase__					      =		hidden_act
							lowercase__					      =		hidden_dropout_prob
							lowercase__					      =		attention_probs_dropout_prob
							lowercase__					      =		classifier_dropout_prob
							lowercase__					      =		initializer_range
							lowercase__					      =		drop_path_rate
							lowercase__					      =		layer_norm_eps
							lowercase__					      =		decoder_hidden_size
							lowercase__					      =		kwargs.get("""reshape_last_stage"""				, _UpperCAmelCase		)
							lowercase__					      =		semantic_loss_ignore_index






class 							A   (	UpperCAmelCase__							):
					'''simple docstring'''






					A__      =			version.parse('''1.11'''							)

					@property
					def   lowerCamelCase__					(self   :						Optional[int]		)						->       Mapping[str, Mapping[int, str]]:




							"""simple docstring"""


							return OrderedDict(
							    [
							        ("""pixel_values""", {0: """batch""", 1: """num_channels""", 2: """height""", 3: """width"""}),
							    ]		)

					@property
					def   lowerCamelCase__					(self   :						Optional[int]		)						->       float:




							"""simple docstring"""


							return 1E-4


					@property
					def   lowerCamelCase__					(self   :						Optional[Any]		)						->       int:




							"""simple docstring"""


							return 12

