

"""simple docstring"""






from collections import OrderedDict
from typing import Mapping

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


lowerCamelCase__				:  Optional[Any]													=  logging.get_logger(__name__)

lowerCamelCase__				:  Optional[int]													=  {
    '''google/mobilebert-uncased''': '''https://huggingface.co/google/mobilebert-uncased/resolve/main/config.json'''
}






class     _UpperCAmelCase			(		__a):
			__a :       List[str]									=							MOBILEBERT_PRETRAINED_CONFIG_ARCHIVE_MAP
			__a :       Any									=							"""mobilebert"""
			def __init__(		self      ,		_A=3_05_22      ,		_A=5_12      ,		_A=24      ,		_A=4      ,		_A=5_12      ,		_A="relu"      ,		_A=0.0      ,		_A=0.1      ,		_A=5_12      ,		_A=2      ,		_A=0.02      ,		_A=1e-12      ,		_A=0      ,		_A=1_28      ,		_A=True      ,		_A=True      ,		_A=1_28      ,		_A=False      ,		_A=True      ,		_A=4      ,		_A="no_norm"      ,		_A=True      ,		_A=None      ,		**_A      ,		)    ->    Dict:






				'''simple docstring'''







				super().__init__(pad_token_id=_A      ,		**_A     )

				_UpperCAmelCase    :							str									=					vocab_size
				_UpperCAmelCase    :							Optional[Any]									=					hidden_size
				_UpperCAmelCase    :							List[Any]									=					num_hidden_layers
				_UpperCAmelCase    :							Union[str, Any]									=					num_attention_heads
				_UpperCAmelCase    :							Any									=					hidden_act
				_UpperCAmelCase    :							Dict									=					intermediate_size
				_UpperCAmelCase    :							Union[str, Any]									=					hidden_dropout_prob
				_UpperCAmelCase    :							int									=					attention_probs_dropout_prob
				_UpperCAmelCase    :							Optional[int]									=					max_position_embeddings
				_UpperCAmelCase    :							Tuple									=					type_vocab_size
				_UpperCAmelCase    :							str									=					initializer_range
				_UpperCAmelCase    :							Any									=					layer_norm_eps
				_UpperCAmelCase    :							List[str]									=					embedding_size
				_UpperCAmelCase    :							Tuple									=					trigram_input
				_UpperCAmelCase    :							Dict									=					use_bottleneck
				_UpperCAmelCase    :							Union[str, Any]									=					intra_bottleneck_size
				_UpperCAmelCase    :							Optional[int]									=					use_bottleneck_attention
				_UpperCAmelCase    :							List[Any]									=					key_query_shared_bottleneck
				_UpperCAmelCase    :							List[str]									=					num_feedforward_networks
				_UpperCAmelCase    :							List[str]									=					normalization_type
				_UpperCAmelCase    :							Union[str, Any]									=					classifier_activation

				if self.use_bottleneck:
					_UpperCAmelCase    :							int									=					intra_bottleneck_size
				else:
					_UpperCAmelCase    :							Any									=					hidden_size

				_UpperCAmelCase    :							Any									=					classifier_dropout






class     _UpperCAmelCase			(		__a):
			@property
			def 							__snake_case (		self     )    ->    Mapping[str, Mapping[int, str]]:






				'''simple docstring'''







				if self.task == "multiple-choice":
					_UpperCAmelCase    :							Optional[int]									=					{0: """batch""", 1: """choice""", 2: """sequence"""}
				else:
					_UpperCAmelCase    :							Dict									=					{0: """batch""", 1: """sequence"""}
				return OrderedDict(
				    [
				        ("""input_ids""", dynamic_axis),
				        ("""attention_mask""", dynamic_axis),
				        ("""token_type_ids""", dynamic_axis),
				    ]     )








"""simple docstring"""






import unittest

import numpy as np

from transformers.testing_utils import require_torch, require_vision
from transformers.utils import is_torch_available, is_vision_available

from ...test_image_processing_common import ImageProcessingSavingTestMixin, prepare_image_inputs


if is_torch_available():
						import torch

if is_vision_available():
						from PIL import Image

						from transformers import ViTImageProcessor






class     _UpperCAmelCase			(		unittest.TestCase):
			def __init__(		self      ,		_A      ,		_A=7      ,		_A=3      ,		_A=18      ,		_A=30      ,		_A=4_00      ,		_A=True      ,		_A=None      ,		_A=True      ,		_A=[0.5, 0.5, 0.5]      ,		_A=[0.5, 0.5, 0.5]      ,		)    ->    Optional[Any]:






				'''simple docstring'''







				_UpperCAmelCase    :							Optional[Any]									=					size if size is not None else {"""height""": 18, """width""": 18}
				_UpperCAmelCase    :							Tuple									=					parent
				_UpperCAmelCase    :							Tuple									=					batch_size
				_UpperCAmelCase    :							Optional[int]									=					num_channels
				_UpperCAmelCase    :							Any									=					image_size
				_UpperCAmelCase    :							str									=					min_resolution
				_UpperCAmelCase    :							Dict									=					max_resolution
				_UpperCAmelCase    :							Optional[Any]									=					do_resize
				_UpperCAmelCase    :							str									=					size
				_UpperCAmelCase    :							Optional[int]									=					do_normalize
				_UpperCAmelCase    :							Optional[Any]									=					image_mean
				_UpperCAmelCase    :							Any									=					image_std
			def 							__snake_case (		self     )    ->    List[Any]:






				'''simple docstring'''







				return {
				    "image_mean": self.image_mean,
				    "image_std": self.image_std,
				    "do_normalize": self.do_normalize,
				    "do_resize": self.do_resize,
				    "size": self.size,
				}






@require_torch
@require_vision
class     _UpperCAmelCase			(		__a    ,     unittest.TestCase):
			__a :       List[str]									=							ViTImageProcessor if is_vision_available() else None
			def 							__snake_case (		self     )    ->    Any:






				'''simple docstring'''







				_UpperCAmelCase    :							Tuple									=					ViTImageProcessingTester(self     )
			@property
			def 							__snake_case (		self     )    ->    List[str]:






				'''simple docstring'''







				return self.image_processor_tester.prepare_image_processor_dict()
			def 							__snake_case (		self     )    ->    str:






				'''simple docstring'''







				_UpperCAmelCase    :							int									=					self.image_processing_class(**self.image_processor_dict     )
				self.assertTrue(hasattr(_A      ,		"""image_mean"""     )     )
				self.assertTrue(hasattr(_A      ,		"""image_std"""     )     )
				self.assertTrue(hasattr(_A      ,		"""do_normalize"""     )     )
				self.assertTrue(hasattr(_A      ,		"""do_resize"""     )     )
				self.assertTrue(hasattr(_A      ,		"""size"""     )     )
			def 							__snake_case (		self     )    ->    Dict:






				'''simple docstring'''







				_UpperCAmelCase    :							Optional[int]									=					self.image_processing_class.from_dict(self.image_processor_dict     )
				self.assertEqual(image_processor.size      ,		{"""height""": 18, """width""": 18}     )

				_UpperCAmelCase    :							Any									=					self.image_processing_class.from_dict(self.image_processor_dict      ,		size=42     )
				self.assertEqual(image_processor.size      ,		{"""height""": 42, """width""": 42}     )
			def 							__snake_case (		self     )    ->    str:






				'''simple docstring'''







				pass
			def 							__snake_case (		self     )    ->    Optional[Any]:






				'''simple docstring'''







				_UpperCAmelCase    :							Dict									=					self.image_processing_class(**self.image_processor_dict     )
				# create random PIL images
				_UpperCAmelCase    :							Dict									=					prepare_image_inputs(self.image_processor_tester      ,		equal_resolution=_A     )
				for image in image_inputs:
					self.assertIsInstance(_A      ,		Image.Image     )

				# Test not batched input
				_UpperCAmelCase    :							Optional[Any]									=					image_processing(image_inputs[0]      ,		return_tensors="""pt"""     ).pixel_values
				self.assertEqual(
				    encoded_images.shape      ,		(
				        1,
				        self.image_processor_tester.num_channels,
				        self.image_processor_tester.size["""height"""],
				        self.image_processor_tester.size["""width"""],
				    )      ,		)

				# Test batched
				_UpperCAmelCase    :							Union[str, Any]									=					image_processing(_A      ,		return_tensors="""pt"""     ).pixel_values
				self.assertEqual(
				    encoded_images.shape      ,		(
				        self.image_processor_tester.batch_size,
				        self.image_processor_tester.num_channels,
				        self.image_processor_tester.size["""height"""],
				        self.image_processor_tester.size["""width"""],
				    )      ,		)
			def 							__snake_case (		self     )    ->    str:






				'''simple docstring'''







				_UpperCAmelCase    :							Union[str, Any]									=					self.image_processing_class(**self.image_processor_dict     )
				# create random numpy tensors
				_UpperCAmelCase    :							List[Any]									=					prepare_image_inputs(self.image_processor_tester      ,		equal_resolution=_A      ,		numpify=_A     )
				for image in image_inputs:
					self.assertIsInstance(_A      ,		np.ndarray     )

				# Test not batched input
				_UpperCAmelCase    :							Any									=					image_processing(image_inputs[0]      ,		return_tensors="""pt"""     ).pixel_values
				self.assertEqual(
				    encoded_images.shape      ,		(
				        1,
				        self.image_processor_tester.num_channels,
				        self.image_processor_tester.size["""height"""],
				        self.image_processor_tester.size["""width"""],
				    )      ,		)

				# Test batched
				_UpperCAmelCase    :							int									=					image_processing(_A      ,		return_tensors="""pt"""     ).pixel_values
				self.assertEqual(
				    encoded_images.shape      ,		(
				        self.image_processor_tester.batch_size,
				        self.image_processor_tester.num_channels,
				        self.image_processor_tester.size["""height"""],
				        self.image_processor_tester.size["""width"""],
				    )      ,		)
			def 							__snake_case (		self     )    ->    List[str]:






				'''simple docstring'''







				_UpperCAmelCase    :							Union[str, Any]									=					self.image_processing_class(**self.image_processor_dict     )
				# create random PyTorch tensors
				_UpperCAmelCase    :							Tuple									=					prepare_image_inputs(self.image_processor_tester      ,		equal_resolution=_A      ,		torchify=_A     )
				for image in image_inputs:
					self.assertIsInstance(_A      ,		torch.Tensor     )

				# Test not batched input
				_UpperCAmelCase    :							Optional[int]									=					image_processing(image_inputs[0]      ,		return_tensors="""pt"""     ).pixel_values
				self.assertEqual(
				    encoded_images.shape      ,		(
				        1,
				        self.image_processor_tester.num_channels,
				        self.image_processor_tester.size["""height"""],
				        self.image_processor_tester.size["""width"""],
				    )      ,		)

				# Test batched
				_UpperCAmelCase    :							Tuple									=					image_processing(_A      ,		return_tensors="""pt"""     ).pixel_values
				self.assertEqual(
				    encoded_images.shape      ,		(
				        self.image_processor_tester.batch_size,
				        self.image_processor_tester.num_channels,
				        self.image_processor_tester.size["""height"""],
				        self.image_processor_tester.size["""width"""],
				    )      ,		)





