

import inspect
import unittest

from transformers import RegNetConfig
from transformers.file_utils import cached_property, is_torch_available, is_vision_available
from transformers.testing_utils import require_torch, require_vision, slow, torch_device

from ...test_configuration_common import ConfigTester
from ...test_modeling_common import ModelTesterMixin, floats_tensor, ids_tensor
from ...test_pipeline_mixin import PipelineTesterMixin


if is_torch_available():
						import torch
						from torch import nn

						from transformers import RegNetForImageClassification, RegNetModel
						from transformers.models.regnet.modeling_regnet import REGNET_PRETRAINED_MODEL_ARCHIVE_LIST


if is_vision_available():
						from PIL import Image

						from transformers import AutoImageProcessor

class 				__UpperCamelCase				:







	def __init__(   self: Union[str, Any]  , __UpperCamelCase: int  , __UpperCamelCase: Any=3  , __UpperCamelCase: str=32  , __UpperCamelCase: Tuple=3  , __UpperCamelCase: Dict=10  , __UpperCamelCase: Union[str, Any]=[10, 20, 30, 40]  , __UpperCamelCase: Union[str, Any]=[1, 1, 2, 1]  , __UpperCamelCase: Optional[int]=True  , __UpperCamelCase: int=True  , __UpperCamelCase: Dict="relu"  , __UpperCamelCase: List[Any]=3  , __UpperCamelCase: Any=None  , ):

						'''simple docstring'''





						__magic_name__							=    parent
						__magic_name__							=    batch_size
						__magic_name__							=    image_size
						__magic_name__							=    num_channels
						__magic_name__							=    embeddings_size
						__magic_name__							=    hidden_sizes
						__magic_name__							=    depths
						__magic_name__							=    is_training
						__magic_name__							=    use_labels
						__magic_name__							=    hidden_act
						__magic_name__							=    num_labels
						__magic_name__							=    scope
						__magic_name__							=    len(__UpperCamelCase      )







	def 	_SCREAMING_SNAKE_CASE							(   self: List[Any]      ):

						'''simple docstring'''





						__magic_name__							=    floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size]      )

						__magic_name__							=    None
						if self.use_labels:
											__magic_name__							=    ids_tensor([self.batch_size]  , self.num_labels      )

						__magic_name__							=    self.get_config()

						return config, pixel_values, labels







	def 	_SCREAMING_SNAKE_CASE							(   self: Dict      ):

						'''simple docstring'''





						return RegNetConfig(
						    num_channels=self.num_channels  , embeddings_size=self.embeddings_size  , hidden_sizes=self.hidden_sizes  , depths=self.depths  , hidden_act=self.hidden_act  , num_labels=self.num_labels  , )







	def 	_SCREAMING_SNAKE_CASE							(   self: List[str]  , __UpperCamelCase: int  , __UpperCamelCase: List[Any]  , __UpperCamelCase: Dict      ):

						'''simple docstring'''





						__magic_name__							=    RegNetModel(config=__UpperCamelCase      )
						model.to(__UpperCamelCase      )
						model.eval()
						__magic_name__							=    model(__UpperCamelCase      )
						# expected last hidden states: B, C, H // 32, W // 32
						self.parent.assertEqual(
						    result.last_hidden_state.shape  , (self.batch_size, self.hidden_sizes[-1], self.image_size // 32, self.image_size // 32)  , )







	def 	_SCREAMING_SNAKE_CASE							(   self: int  , __UpperCamelCase: Any  , __UpperCamelCase: Tuple  , __UpperCamelCase: Any      ):

						'''simple docstring'''





						__magic_name__							=    self.num_labels
						__magic_name__							=    RegNetForImageClassification(__UpperCamelCase      )
						model.to(__UpperCamelCase      )
						model.eval()
						__magic_name__							=    model(__UpperCamelCase  , labels=__UpperCamelCase      )
						self.parent.assertEqual(result.logits.shape  , (self.batch_size, self.num_labels)      )







	def 	_SCREAMING_SNAKE_CASE							(   self: int      ):

						'''simple docstring'''





						__magic_name__							=    self.prepare_config_and_inputs()
						__magic_name__,	__magic_name__,	__magic_name__							=    config_and_inputs
						__magic_name__							=    {'pixel_values': pixel_values}
						return config, inputs_dict




@require_torch
class 				__UpperCamelCase				(					SCREAMING_SNAKE_CASE  ,						SCREAMING_SNAKE_CASE  ,						unittest.TestCase			):
	_lowercase  :   List[str]       				=  (RegNetModel, RegNetForImageClassification) if is_torch_available() else ()
	_lowercase  :   Dict       				=  (
	    {"feature-extraction": RegNetModel, "image-classification": RegNetForImageClassification}
	    if is_torch_available()
	    else {}
	)

	_lowercase  :   List[Any]       				=  False
	_lowercase  :   Optional[Any]       				=  False
	_lowercase  :   str       				=  False
	_lowercase  :   int       				=  False







	def 	_SCREAMING_SNAKE_CASE							(   self: Any      ):

						'''simple docstring'''





						__magic_name__							=    RegNetModelTester(self      )
						__magic_name__							=    ConfigTester(self  , config_class=__UpperCamelCase  , has_text_modality=__UpperCamelCase      )







	def 	_SCREAMING_SNAKE_CASE							(   self: Optional[Any]      ):

						'''simple docstring'''





						self.create_and_test_config_common_properties()
						self.config_tester.create_and_test_config_to_json_string()
						self.config_tester.create_and_test_config_to_json_file()
						self.config_tester.create_and_test_config_from_and_save_pretrained()
						self.config_tester.create_and_test_config_with_num_labels()
						self.config_tester.check_config_can_be_init_without_params()
						self.config_tester.check_config_arguments_init()







	def 	_SCREAMING_SNAKE_CASE							(   self: List[str]      ):

						'''simple docstring'''





						return







	@unittest.skip(reason='RegNet does not use inputs_embeds'      )
	def 	_SCREAMING_SNAKE_CASE							(   self: Optional[Any]      ):

						'''simple docstring'''





						pass







	@unittest.skip(reason='RegNet does not support input and output embeddings'      )
	def 	_SCREAMING_SNAKE_CASE							(   self: str      ):

						'''simple docstring'''





						pass







	def 	_SCREAMING_SNAKE_CASE							(   self: Any      ):

						'''simple docstring'''





						__magic_name__,	__magic_name__							=    self.model_tester.prepare_config_and_inputs_for_common()

						for model_class in self.all_model_classes:
											__magic_name__							=    model_class(__UpperCamelCase      )
											__magic_name__							=    inspect.signature(model.forward      )
											# signature.parameters is an OrderedDict => so arg_names order is deterministic
											__magic_name__							=    [*signature.parameters.keys()]

											__magic_name__							=    ['pixel_values']
											self.assertListEqual(arg_names[:1]  , __UpperCamelCase      )







	def 	_SCREAMING_SNAKE_CASE							(   self: str      ):

						'''simple docstring'''





						__magic_name__							=    self.model_tester.prepare_config_and_inputs()
						self.model_tester.create_and_check_model(*__UpperCamelCase      )







	def 	_SCREAMING_SNAKE_CASE							(   self: Optional[Any]      ):

						'''simple docstring'''





						__magic_name__,	__magic_name__							=    self.model_tester.prepare_config_and_inputs_for_common()

						for model_class in self.all_model_classes:
											__magic_name__							=    model_class(config=__UpperCamelCase      )
											for name, module in model.named_modules():
																if isinstance(__UpperCamelCase  , (nn.BatchNormad, nn.GroupNorm)      ):
																					self.assertTrue(
																					    torch.all(module.weight == 1      )  , msg=F'Parameter {name} of model {model_class} seems not properly initialized'  , )
																					self.assertTrue(
																					    torch.all(module.bias == 0      )  , msg=F'Parameter {name} of model {model_class} seems not properly initialized'  , )







	def 	_SCREAMING_SNAKE_CASE							(   self: Optional[Any]      ):

						'''simple docstring'''





						def check_hidden_states_output(__UpperCamelCase: Tuple  , __UpperCamelCase: Any  , __UpperCamelCase: int      ):
											__magic_name__							=    model_class(__UpperCamelCase      )
											model.to(__UpperCamelCase      )
											model.eval()

											with torch.no_grad():
																__magic_name__							=    model(**self._prepare_for_class(__UpperCamelCase  , __UpperCamelCase      )      )

											__magic_name__							=    outputs.encoder_hidden_states if config.is_encoder_decoder else outputs.hidden_states

											__magic_name__							=    self.model_tester.num_stages
											self.assertEqual(len(__UpperCamelCase      )  , expected_num_stages + 1      )

											# RegNet's feature maps are of shape (batch_size, num_channels, height, width)
											self.assertListEqual(
											    list(hidden_states[0].shape[-2:]      )  , [self.model_tester.image_size // 2, self.model_tester.image_size // 2]  , )

						__magic_name__,	__magic_name__							=    self.model_tester.prepare_config_and_inputs_for_common()
						__magic_name__							=    ['basic', 'bottleneck']
						for model_class in self.all_model_classes:
											for layer_type in layers_type:
																__magic_name__							=    layer_type
																__magic_name__							=    True
																check_hidden_states_output(__UpperCamelCase  , __UpperCamelCase  , __UpperCamelCase      )

																# check that output_hidden_states also work using config
																del inputs_dict["output_hidden_states"]
																__magic_name__							=    True

																check_hidden_states_output(__UpperCamelCase  , __UpperCamelCase  , __UpperCamelCase      )







	def 	_SCREAMING_SNAKE_CASE							(   self: List[str]      ):

						'''simple docstring'''





						__magic_name__							=    self.model_tester.prepare_config_and_inputs()
						self.model_tester.create_and_check_for_image_classification(*__UpperCamelCase      )







	@slow
	def 	_SCREAMING_SNAKE_CASE							(   self: int      ):

						'''simple docstring'''





						for model_name in REGNET_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
											__magic_name__							=    RegNetModel.from_pretrained(__UpperCamelCase      )
											self.assertIsNotNone(__UpperCamelCase      )




def 					_lowercase     (				)				->	List[str]:




					'''simple docstring'''







					__magic_name__							=    Image.open('./tests/fixtures/tests_samples/COCO/000000039769.png'				)
					return image


@require_torch
@require_vision
class 				__UpperCamelCase				(					unittest.TestCase			):







	@cached_property
	def 	_SCREAMING_SNAKE_CASE							(   self: Optional[int]      ):

						'''simple docstring'''





						return (
						    AutoImageProcessor.from_pretrained(REGNET_PRETRAINED_MODEL_ARCHIVE_LIST[0]      )
						    if is_vision_available()
						    else None
						)







	@slow
	def 	_SCREAMING_SNAKE_CASE							(   self: Any      ):

						'''simple docstring'''





						__magic_name__							=    RegNetForImageClassification.from_pretrained(REGNET_PRETRAINED_MODEL_ARCHIVE_LIST[0]      ).to(__UpperCamelCase      )

						__magic_name__							=    self.default_image_processor
						__magic_name__							=    prepare_img()
						__magic_name__							=    image_processor(images=__UpperCamelCase  , return_tensors='pt'      ).to(__UpperCamelCase      )

						# forward pass
						with torch.no_grad():
											__magic_name__							=    model(**__UpperCamelCase      )

						# verify the logits
						__magic_name__							=    torch.Size((1, 10_00)      )
						self.assertEqual(outputs.logits.shape  , __UpperCamelCase      )

						__magic_name__							=    torch.tensor([-0.4180, -1.5051, -3.4836]      ).to(__UpperCamelCase      )

						self.assertTrue(torch.allclose(outputs.logits[0, :3]  , __UpperCamelCase  , atol=1E-4      )      )







import os
import unittest

from transformers import LayoutLMTokenizer, LayoutLMTokenizerFast
from transformers.models.layoutlm.tokenization_layoutlm import VOCAB_FILES_NAMES
from transformers.testing_utils import require_tokenizers

from ...test_tokenization_common import TokenizerTesterMixin

@require_tokenizers
class 				__UpperCamelCase				(					SCREAMING_SNAKE_CASE  ,						unittest.TestCase			):
	_lowercase  :   Tuple       				=  LayoutLMTokenizer
	_lowercase  :   List[str]       				=  LayoutLMTokenizerFast
	_lowercase  :   List[Any]       				=  True
	_lowercase  :   Optional[int]       				=  True







	def 	_SCREAMING_SNAKE_CASE							(   self: Any      ):

						'''simple docstring'''





						super().setUp()

						__magic_name__							=    [
						    '[UNK]',
						    '[CLS]',
						    '[SEP]',
						    'want',
						    '##want',
						    '##ed',
						    'wa',
						    'un',
						    'runn',
						    '##ing',
						    ',',
						    'low',
						    'lowest',
						]
						__magic_name__							=    os.path.join(self.tmpdirname  , VOCAB_FILES_NAMES['vocab_file']      )
						with open(self.vocab_file  , 'w'  , encoding='utf-8'      ) as vocab_writer:
											vocab_writer.write(''.join([x + '\n' for x in vocab_tokens]      )      )







	def 	_SCREAMING_SNAKE_CASE							(   self: Union[str, Any]  , **__UpperCamelCase: Union[str, Any]      ):

						'''simple docstring'''





						return LayoutLMTokenizer.from_pretrained(self.tmpdirname  , **__UpperCamelCase      )







	def 	_SCREAMING_SNAKE_CASE							(   self: Tuple  , __UpperCamelCase: List[str]      ):

						'''simple docstring'''





						__magic_name__							=    'UNwant\u00E9d,running'
						__magic_name__							=    'unwanted, running'
						return input_text, output_text







	def 	_SCREAMING_SNAKE_CASE							(   self: List[Any]      ):

						'''simple docstring'''





						__magic_name__							=    self.tokenizer_class(self.vocab_file      )

						__magic_name__							=    tokenizer.tokenize('UNwant\u00E9d,running'      )
						self.assertListEqual(__UpperCamelCase  , ['un', '##want', '##ed', ',', 'runn', '##ing']      )
						self.assertListEqual(tokenizer.convert_tokens_to_ids(__UpperCamelCase      )  , [7, 4, 5, 10, 8, 9]      )







	def 	_SCREAMING_SNAKE_CASE							(   self: Dict      ):

						'''simple docstring'''





						pass




