


"""simple docstring"""



import json
from typing import List, Optional, Tuple

from tokenizers import normalizers

from ...tokenization_utils_base import BatchEncoding
from ...tokenization_utils_fast import PreTrainedTokenizerFast
from ...utils import PaddingStrategy, logging
from .tokenization_realm import RealmTokenizer


lowercase_							=							logging.get_logger(__name__)

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

lowercase_							=							{
    'vocab_file': {
        'google/realm-cc-news-pretrained-embedder': (
            'https://huggingface.co/google/realm-cc-news-pretrained-embedder/resolve/main/vocab.txt'
        ),
        'google/realm-cc-news-pretrained-encoder': (
            'https://huggingface.co/google/realm-cc-news-pretrained-encoder/resolve/main/vocab.txt'
        ),
        'google/realm-cc-news-pretrained-scorer': (
            'https://huggingface.co/google/realm-cc-news-pretrained-scorer/resolve/main/vocab.txt'
        ),
        'google/realm-cc-news-pretrained-openqa': (
            'https://huggingface.co/google/realm-cc-news-pretrained-openqa/aresolve/main/vocab.txt'
        ),
        'google/realm-orqa-nq-openqa': 'https://huggingface.co/google/realm-orqa-nq-openqa/resolve/main/vocab.txt',
        'google/realm-orqa-nq-reader': 'https://huggingface.co/google/realm-orqa-nq-reader/resolve/main/vocab.txt',
        'google/realm-orqa-wq-openqa': 'https://huggingface.co/google/realm-orqa-wq-openqa/resolve/main/vocab.txt',
        'google/realm-orqa-wq-reader': 'https://huggingface.co/google/realm-orqa-wq-reader/resolve/main/vocab.txt',
    },
    'tokenizer_file': {
        'google/realm-cc-news-pretrained-embedder': (
            'https://huggingface.co/google/realm-cc-news-pretrained-embedder/resolve/main/tokenizer.jsont'
        ),
        'google/realm-cc-news-pretrained-encoder': (
            'https://huggingface.co/google/realm-cc-news-pretrained-encoder/resolve/main/tokenizer.json'
        ),
        'google/realm-cc-news-pretrained-scorer': (
            'https://huggingface.co/google/realm-cc-news-pretrained-scorer/resolve/main/tokenizer.json'
        ),
        'google/realm-cc-news-pretrained-openqa': (
            'https://huggingface.co/google/realm-cc-news-pretrained-openqa/aresolve/main/tokenizer.json'
        ),
        'google/realm-orqa-nq-openqa': (
            'https://huggingface.co/google/realm-orqa-nq-openqa/resolve/main/tokenizer.json'
        ),
        'google/realm-orqa-nq-reader': (
            'https://huggingface.co/google/realm-orqa-nq-reader/resolve/main/tokenizer.json'
        ),
        'google/realm-orqa-wq-openqa': (
            'https://huggingface.co/google/realm-orqa-wq-openqa/resolve/main/tokenizer.json'
        ),
        'google/realm-orqa-wq-reader': (
            'https://huggingface.co/google/realm-orqa-wq-reader/resolve/main/tokenizer.json'
        ),
    },
}

lowercase_							=							{
    'google/realm-cc-news-pretrained-embedder': 5_12,
    'google/realm-cc-news-pretrained-encoder': 5_12,
    'google/realm-cc-news-pretrained-scorer': 5_12,
    'google/realm-cc-news-pretrained-openqa': 5_12,
    'google/realm-orqa-nq-openqa': 5_12,
    'google/realm-orqa-nq-reader': 5_12,
    'google/realm-orqa-wq-openqa': 5_12,
    'google/realm-orqa-wq-reader': 5_12,
}

lowercase_							=							{
    'google/realm-cc-news-pretrained-embedder': {'do_lower_case': True},
    'google/realm-cc-news-pretrained-encoder': {'do_lower_case': True},
    'google/realm-cc-news-pretrained-scorer': {'do_lower_case': True},
    'google/realm-cc-news-pretrained-openqa': {'do_lower_case': True},
    'google/realm-orqa-nq-openqa': {'do_lower_case': True},
    'google/realm-orqa-nq-reader': {'do_lower_case': True},
    'google/realm-orqa-wq-openqa': {'do_lower_case': True},
    'google/realm-orqa-wq-reader': {'do_lower_case': True},
}







class    __a						( __snake_case							):
				lowerCamelCase     :       Dict			       =VOCAB_FILES_NAMES
				lowerCamelCase     :       Optional[int]			       =PRETRAINED_VOCAB_FILES_MAP
				lowerCamelCase     :       Union[str, Any]			       =PRETRAINED_INIT_CONFIGURATION
				lowerCamelCase     :       Dict			       =PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
				lowerCamelCase     :       Any			       =RealmTokenizer







				def __init__( self      ,	UpperCAmelCase=None      ,	UpperCAmelCase=None      ,	UpperCAmelCase=True      ,	UpperCAmelCase="[UNK]"      ,	UpperCAmelCase="[SEP]"      ,	UpperCAmelCase="[PAD]"      ,	UpperCAmelCase="[CLS]"      ,	UpperCAmelCase="[MASK]"      ,	UpperCAmelCase=True      ,	UpperCAmelCase=None      ,	**UpperCAmelCase      ,	):

					'''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      ,	)

					lowerCAmelCase_      							=			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
					):
						lowerCAmelCase_      							=			getattr(UpperCAmelCase      ,	normalizer_state.pop('''type'''   )   )
						lowerCAmelCase_      							=			do_lower_case
						lowerCAmelCase_      							=			strip_accents
						lowerCAmelCase_      							=			tokenize_chinese_chars
						lowerCAmelCase_      							=			normalizer_class(**UpperCAmelCase   )

					lowerCAmelCase_      							=			do_lower_case







				def      lowerCamelCase_     ( self      ,	UpperCAmelCase      ,	**UpperCAmelCase   ):

					'''simple docstring'''






					lowerCAmelCase_      							=			PaddingStrategy.MAX_LENGTH

					lowerCAmelCase_      							=			text
					lowerCAmelCase_      							=			kwargs.pop('''text_pair'''      ,	UpperCAmelCase   )
					lowerCAmelCase_      							=			kwargs.pop('''return_tensors'''      ,	UpperCAmelCase   )

					lowerCAmelCase_      							=			{
					    '''input_ids''': [],
					    '''attention_mask''': [],
					    '''token_type_ids''': [],
					}

					for idx, candidate_text in enumerate(UpperCAmelCase   ):
						if batch_text_pair is not None:
							lowerCAmelCase_      							=			batch_text_pair[idx]
						else:
							lowerCAmelCase_      							=			None

						lowerCAmelCase_      							=			super().__call__(UpperCAmelCase      ,	UpperCAmelCase      ,	return_tensors=UpperCAmelCase      ,	**UpperCAmelCase   )

						lowerCAmelCase_      							=			encoded_candidates.get('''input_ids'''   )
						lowerCAmelCase_      							=			encoded_candidates.get('''attention_mask'''   )
						lowerCAmelCase_      							=			encoded_candidates.get('''token_type_ids'''   )

						if encoded_input_ids is not None:
							output_data["input_ids"].append(UpperCAmelCase   )
						if encoded_attention_mask is not None:
							output_data["attention_mask"].append(UpperCAmelCase   )
						if encoded_token_type_ids is not None:
							output_data["token_type_ids"].append(UpperCAmelCase   )

					lowerCAmelCase_      							=			{key: item for key, item in output_data.items() if len(UpperCAmelCase   ) != 0}

					return BatchEncoding(UpperCAmelCase      ,	tensor_type=UpperCAmelCase   )







				def      lowerCamelCase_     ( self      ,	UpperCAmelCase      ,	UpperCAmelCase=None   ):

					'''simple docstring'''






					lowerCAmelCase_      							=			[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      ,	UpperCAmelCase      ,	UpperCAmelCase = None   ):

					'''simple docstring'''






					lowerCAmelCase_      							=			[self.sep_token_id]
					lowerCAmelCase_      							=			[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      ,	UpperCAmelCase      ,	UpperCAmelCase = None   ):

					'''simple docstring'''






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



"""simple docstring"""



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


lowercase_							=							logging.get_logger(__name__)

lowercase_							=							{
    'google/mobilenet_v2_1.4_224': 'https://huggingface.co/google/mobilenet_v2_1.4_224/resolve/main/config.json',
    'google/mobilenet_v2_1.0_224': 'https://huggingface.co/google/mobilenet_v2_1.0_224/resolve/main/config.json',
    'google/mobilenet_v2_0.75_160': 'https://huggingface.co/google/mobilenet_v2_0.75_160/resolve/main/config.json',
    'google/mobilenet_v2_0.35_96': 'https://huggingface.co/google/mobilenet_v2_0.35_96/resolve/main/config.json',
    # See all MobileNetV2 models at https://huggingface.co/models?filter=mobilenet_v2
}







class    __a						( __snake_case							):
				lowerCamelCase     :       List[Any]			       ='mobilenet_v2'







				def __init__( self      ,	UpperCAmelCase=3      ,	UpperCAmelCase=224      ,	UpperCAmelCase=1.0      ,	UpperCAmelCase=8      ,	UpperCAmelCase=8      ,	UpperCAmelCase=6      ,	UpperCAmelCase=32      ,	UpperCAmelCase=True      ,	UpperCAmelCase=True      ,	UpperCAmelCase="relu6"      ,	UpperCAmelCase=True      ,	UpperCAmelCase=0.8      ,	UpperCAmelCase=0.0_2      ,	UpperCAmelCase=0.0_0_1      ,	UpperCAmelCase=255      ,	**UpperCAmelCase      ,	):

					'''simple docstring'''






					super().__init__(**UpperCAmelCase   )

					if depth_multiplier <= 0:
						raise ValueError('''depth_multiplier must be greater than zero.'''   )

					lowerCAmelCase_      							=			num_channels
					lowerCAmelCase_      							=			image_size
					lowerCAmelCase_      							=			depth_multiplier
					lowerCAmelCase_      							=			depth_divisible_by
					lowerCAmelCase_      							=			min_depth
					lowerCAmelCase_      							=			expand_ratio
					lowerCAmelCase_      							=			output_stride
					lowerCAmelCase_      							=			first_layer_is_expansion
					lowerCAmelCase_      							=			finegrained_output
					lowerCAmelCase_      							=			hidden_act
					lowerCAmelCase_      							=			tf_padding
					lowerCAmelCase_      							=			classifier_dropout_prob
					lowerCAmelCase_      							=			initializer_range
					lowerCAmelCase_      							=			layer_norm_eps
					lowerCAmelCase_      							=			semantic_loss_ignore_index







class    __a						( __snake_case							):
				lowerCamelCase     :       Optional[int]			       =version.parse('1.11'							)







				@property
				def      lowerCamelCase_     ( self   ):

					'''simple docstring'''






					return OrderedDict([('''pixel_values''', {0: '''batch'''})]   )







				@property
				def      lowerCamelCase_     ( self   ):

					'''simple docstring'''






					if self.task == "image-classification":
						return OrderedDict([('''logits''', {0: '''batch'''})]   )
					else:
						return OrderedDict([('''last_hidden_state''', {0: '''batch'''}), ('''pooler_output''', {0: '''batch'''})]   )







				@property
				def      lowerCamelCase_     ( self   ):

					'''simple docstring'''






					return 1E-4