




"""simple docstring"""


import unittest

from transformers import BigBirdTokenizer, BigBirdTokenizerFast
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, require_torch, slow
from transformers.utils import cached_property

from ...test_tokenization_common import TokenizerTesterMixin


A_      			=       '''▁'''

A_      			=       get_tests_dir('''fixtures/test_sentencepiece.model''')






@require_sentencepiece
@require_tokenizers
class       lowercase(  __a ,    unittest.TestCase				):







 '''simple docstring'''





 lowercase__				      =      BigBirdTokenizer
 lowercase__				      =      BigBirdTokenizerFast
 lowercase__				      =      True
 lowercase__				      =      True


 def 				UpperCamelCase_     (       self:	Optional[Any]	):




   '''simple docstring'''



   super().setUp()

   _snake_case							:	Union[str, Any]			=						self.tokenizer_class(a_,   keep_accents=a_	)
   tokenizer.save_pretrained(self.tmpdirname	)


 def 				UpperCamelCase_     (       self:	Any	):




   '''simple docstring'''



   _snake_case							:	Any			=						"""<s>"""
   _snake_case							:	List[Any]			=						1

   self.assertEqual(self.get_tokenizer()._convert_token_to_id(a_	),   a_	)
   self.assertEqual(self.get_tokenizer()._convert_id_to_token(a_	),   a_	)


 def 				UpperCamelCase_     (       self:	List[str]	):




   '''simple docstring'''



   _snake_case							:	Tuple			=						list(self.get_tokenizer().get_vocab().keys()	)

   self.assertEqual(vocab_keys[0],   """<unk>"""	)
   self.assertEqual(vocab_keys[1],   """<s>"""	)
   self.assertEqual(vocab_keys[-1],   """[MASK]"""	)
   self.assertEqual(len(a_	),   1_004	)


 def 				UpperCamelCase_     (       self:	int	):




   '''simple docstring'''



   self.assertEqual(self.get_tokenizer().vocab_size,   1_000	)


 def 				UpperCamelCase_     (       self:	Optional[Any]	):




   '''simple docstring'''



   if not self.test_rust_tokenizer:
     return

   _snake_case							:	Optional[int]			=						self.get_tokenizer()
   _snake_case							:	Any			=						self.get_rust_tokenizer()

   _snake_case							:	Optional[Any]			=						"""I was born in 92000, and this is falsé."""

   _snake_case							:	Tuple			=						tokenizer.tokenize(a_	)
   _snake_case							:	Tuple			=						rust_tokenizer.tokenize(a_	)
   self.assertListEqual(a_,   a_	)

   _snake_case							:	List[str]			=						tokenizer.encode(a_,   add_special_tokens=a_	)
   _snake_case							:	Optional[Any]			=						rust_tokenizer.encode(a_,   add_special_tokens=a_	)
   self.assertListEqual(a_,   a_	)

   _snake_case							:	Tuple			=						self.get_rust_tokenizer()
   _snake_case							:	Union[str, Any]			=						tokenizer.encode(a_	)
   _snake_case							:	Optional[Any]			=						rust_tokenizer.encode(a_	)
   self.assertListEqual(a_,   a_	)


 def 				UpperCamelCase_     (       self:	str	):




   '''simple docstring'''



   _snake_case							:	int			=						BigBirdTokenizer(a_,   keep_accents=a_	)

   _snake_case							:	int			=						tokenizer.tokenize("""This is a test"""	)
   self.assertListEqual(a_,   ["""▁This""", """▁is""", """▁a""", """▁t""", """est"""]	)

   self.assertListEqual(
       tokenizer.convert_tokens_to_ids(a_	),   [285, 46, 10, 170, 382],   )

   _snake_case							:	Optional[Any]			=						tokenizer.tokenize("""I was born in 92000, and this is falsé."""	)
   self.assertListEqual(
       a_,   [
           SPIECE_UNDERLINE + """I""",
           SPIECE_UNDERLINE + """was""",
           SPIECE_UNDERLINE + """b""",
           """or""",
           """n""",
           SPIECE_UNDERLINE + """in""",
           SPIECE_UNDERLINE + """""",
           """9""",
           """2""",
           """0""",
           """0""",
           """0""",
           """,""",
           SPIECE_UNDERLINE + """and""",
           SPIECE_UNDERLINE + """this""",
           SPIECE_UNDERLINE + """is""",
           SPIECE_UNDERLINE + """f""",
           """al""",
           """s""",
           """é""",
           """.""",
       ],   )
   _snake_case							:	Union[str, Any]			=						tokenizer.convert_tokens_to_ids(a_	)
   self.assertListEqual(
       a_,   [8, 21, 84, 55, 24, 19, 7, 0, 602, 347, 347, 347, 3, 12, 66, 46, 72, 80, 6, 0, 4],   )

   _snake_case							:	Optional[Any]			=						tokenizer.convert_ids_to_tokens(a_	)
   self.assertListEqual(
       a_,   [
           SPIECE_UNDERLINE + """I""",
           SPIECE_UNDERLINE + """was""",
           SPIECE_UNDERLINE + """b""",
           """or""",
           """n""",
           SPIECE_UNDERLINE + """in""",
           SPIECE_UNDERLINE + """""",
           """<unk>""",
           """2""",
           """0""",
           """0""",
           """0""",
           """,""",
           SPIECE_UNDERLINE + """and""",
           SPIECE_UNDERLINE + """this""",
           SPIECE_UNDERLINE + """is""",
           SPIECE_UNDERLINE + """f""",
           """al""",
           """s""",
           """<unk>""",
           """.""",
       ],   )


 @cached_property
 def 				UpperCamelCase_     (       self:	str	):




   '''simple docstring'''



   return BigBirdTokenizer.from_pretrained("""google/bigbird-roberta-base"""	)


 @slow
 def 				UpperCamelCase_     (       self:	Union[str, Any]	):




   '''simple docstring'''



   _snake_case							:	Union[str, Any]			=						"""Hello World!"""
   _snake_case							:	List[str]			=						[65, 18_536, 2_260, 101, 66]

   self.assertListEqual(a_,   self.big_tokenizer.encode(a_	)	)


 @slow
 def 				UpperCamelCase_     (       self:	Dict	):




   '''simple docstring'''



   _snake_case							:	Any			=						(
       """This is a very long text with a lot of weird characters, such as: . , ~ ? ( ) \" [ ] ! : - . Also we will"""
       """ add words that should not exsist and be tokenized to <unk>, such as saoneuhaoesuth"""
   )
   # fmt: off
   _snake_case							:	Union[str, Any]			=						[65, 871, 419, 358, 946, 991, 2_521, 452, 358, 1_357, 387, 7_751, 3_536, 112, 985, 456, 126, 865, 938, 5_400, 5_734, 458, 1_368, 467, 786, 2_462, 5_246, 1_159, 633, 865, 4_519, 457, 582, 852, 2_557, 427, 916, 508, 405, 34_324, 497, 391, 408, 11_342, 1_244, 385, 100, 938, 985, 456, 574, 362, 12_597, 3_200, 3_129, 1_172, 66]  # noqa: E231
   # fmt: on
   self.assertListEqual(a_,   self.big_tokenizer.encode(a_	)	)


 @require_torch
 @slow
 def 				UpperCamelCase_     (       self:	Union[str, Any]	):




   '''simple docstring'''



   import torch

   from transformers import BigBirdConfig, BigBirdModel

   # Build sequence
   _snake_case							:	int			=						list(self.big_tokenizer.get_vocab().keys()	)[:10]
   _snake_case							:	List[Any]			=						""" """.join(a_	)
   _snake_case							:	Dict			=						self.big_tokenizer.encode_plus(a_,   return_tensors="""pt""",   return_token_type_ids=a_	)
   _snake_case							:	List[str]			=						self.big_tokenizer.batch_encode_plus(
       [sequence + """ """ + sequence],   return_tensors="""pt""",   return_token_type_ids=a_	)

   _snake_case							:	Any			=						BigBirdConfig(attention_type="""original_full"""	)
   _snake_case							:	str			=						BigBirdModel(a_	)

   assert model.get_input_embeddings().weight.shape[0] >= self.big_tokenizer.vocab_size

   with torch.no_grad():
     model(**a_	)
     model(**a_	)


 @slow
 def 				UpperCamelCase_     (       self:	Optional[Any]	):




   '''simple docstring'''



   _snake_case							:	Optional[Any]			=						BigBirdTokenizer.from_pretrained("""google/bigbird-roberta-base"""	)
   _snake_case							:	Optional[int]			=						tokenizer.decode(tokenizer("""Paris is the [MASK]."""	).input_ids	)

   self.assertTrue(decoded_text == """[CLS] Paris is the[MASK].[SEP]"""	)


 @slow
 def 				UpperCamelCase_     (       self:	Union[str, Any]	):




   '''simple docstring'''



   _snake_case							:	Any			=						{"""input_ids""": [[65, 39_286, 458, 36_335, 2_001, 456, 13_073, 13_266, 455, 113, 7_746, 1_741, 11_157, 391, 13_073, 13_266, 455, 113, 3_967, 35_412, 113, 4_936, 109, 3_870, 2_377, 113, 30_084, 45_720, 458, 134, 17_496, 112, 503, 11_672, 113, 118, 112, 5_665, 13_347, 38_687, 112, 1_496, 31_389, 112, 3_268, 47_264, 134, 962, 112, 16_377, 8_035, 23_130, 430, 12_169, 15_518, 28_592, 458, 146, 41_697, 109, 391, 12_169, 15_518, 16_689, 458, 146, 41_358, 109, 452, 726, 4_034, 111, 763, 35_412, 5_082, 388, 1_903, 111, 9_051, 391, 2_870, 48_918, 1_900, 1_123, 550, 998, 112, 9_586, 15_985, 455, 391, 410, 22_955, 37_636, 114, 66], [65, 448, 17_496, 419, 3_663, 385, 763, 113, 27_533, 2_870, 3_283, 13_043, 1_639, 24_713, 523, 656, 24_013, 18_550, 2_521, 517, 27_014, 21_244, 420, 1_212, 1_465, 391, 927, 4_833, 388, 578, 11_786, 114, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [65, 484, 2_169, 7_687, 21_932, 18_146, 726, 363, 17_032, 3_391, 114, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], """attention_mask""": [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]}  # noqa: E501
   # fmt: on

   self.tokenizer_integration_test_util(
       expected_encoding=a_,   model_name="""google/bigbird-roberta-base""",   revision="""215c99f1600e06f83acce68422f2035b2b5c3510""",   )








"""simple docstring"""


import inspect
import unittest

from transformers import ConvNextVaConfig
from transformers.models.auto import get_values
from transformers.models.auto.modeling_auto import MODEL_FOR_BACKBONE_MAPPING_NAMES, MODEL_MAPPING_NAMES
from transformers.testing_utils import require_torch, require_vision, slow, torch_device
from transformers.utils import cached_property, is_torch_available, is_vision_available

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 transformers import ConvNextVaBackbone, ConvNextVaForImageClassification, ConvNextVaModel
     from transformers.models.convnextva.modeling_convnextva import CONVNEXTV2_PRETRAINED_MODEL_ARCHIVE_LIST


if is_vision_available():
     from PIL import Image

     from transformers import AutoImageProcessor






class       lowercase:







 '''simple docstring'''





 def __init__(       self:	List[str],   a_:	List[Any],   a_:	str=13,   a_:	Dict=32,   a_:	Union[str, Any]=3,   a_:	Union[str, Any]=4,   a_:	Tuple=[10, 20, 30, 40],   a_:	Dict=[2, 2, 3, 2],   a_:	Tuple=True,   a_:	Optional[Any]=True,   a_:	Any=37,   a_:	Any="gelu",   a_:	int=10,   a_:	Tuple=0.02,   a_:	str=["stage2", "stage3", "stage4"],   a_:	List[str]=[2, 3, 4],   a_:	List[str]=None,   ):




   '''simple docstring'''



   _snake_case							:	int			=						parent
   _snake_case							:	int			=						batch_size
   _snake_case							:	List[Any]			=						image_size
   _snake_case							:	List[str]			=						num_channels
   _snake_case							:	Tuple			=						num_stages
   _snake_case							:	Union[str, Any]			=						hidden_sizes
   _snake_case							:	List[Any]			=						depths
   _snake_case							:	Tuple			=						is_training
   _snake_case							:	List[str]			=						use_labels
   _snake_case							:	Tuple			=						intermediate_size
   _snake_case							:	List[str]			=						hidden_act
   _snake_case							:	Optional[Any]			=						num_labels
   _snake_case							:	Tuple			=						initializer_range
   _snake_case							:	Tuple			=						out_features
   _snake_case							:	Tuple			=						out_indices
   _snake_case							:	Dict			=						scope


 def 				UpperCamelCase_     (       self:	List[str]	):




   '''simple docstring'''



   _snake_case							:	Optional[int]			=						floats_tensor([self.batch_size, self.num_channels, self.image_size, self.image_size]	)

   _snake_case							:	Any			=						None
   if self.use_labels:
     _snake_case							:	Dict			=						ids_tensor([self.batch_size],   self.num_labels	)

   _snake_case							:	Optional[Any]			=						self.get_config()

   return config, pixel_values, labels


 def 				UpperCamelCase_     (       self:	Tuple	):




   '''simple docstring'''



   return ConvNextVaConfig(
       num_channels=self.num_channels,   hidden_sizes=self.hidden_sizes,   depths=self.depths,   num_stages=self.num_stages,   hidden_act=self.hidden_act,   is_decoder=a_,   initializer_range=self.initializer_range,   out_features=self.out_features,   out_indices=self.out_indices,   num_labels=self.num_labels,   )


 def 				UpperCamelCase_     (       self:	int,   a_:	Tuple,   a_:	Any,   a_:	Dict	):




   '''simple docstring'''



   _snake_case							:	int			=						ConvNextVaModel(config=a_	)
   model.to(a_	)
   model.eval()
   _snake_case							:	Any			=						model(a_	)
   # 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 				UpperCamelCase_     (       self:	Optional[int],   a_:	List[str],   a_:	Tuple,   a_:	Union[str, Any]	):




   '''simple docstring'''



   _snake_case							:	Optional[int]			=						ConvNextVaForImageClassification(a_	)
   model.to(a_	)
   model.eval()
   _snake_case							:	Optional[int]			=						model(a_,   labels=a_	)
   self.parent.assertEqual(result.logits.shape,   (self.batch_size, self.num_labels)	)


 def 				UpperCamelCase_     (       self:	Union[str, Any],   a_:	Tuple,   a_:	Tuple,   a_:	Tuple	):




   '''simple docstring'''



   _snake_case							:	List[str]			=						ConvNextVaBackbone(config=a_	)
   model.to(a_	)
   model.eval()
   _snake_case							:	int			=						model(a_	)

   # verify hidden states
   self.parent.assertEqual(len(result.feature_maps	),   len(config.out_features	)	)
   self.parent.assertListEqual(list(result.feature_maps[0].shape	),   [self.batch_size, self.hidden_sizes[1], 4, 4]	)

   # verify channels
   self.parent.assertEqual(len(model.channels	),   len(config.out_features	)	)
   self.parent.assertListEqual(model.channels,   config.hidden_sizes[1:]	)

   # verify backbone works with out_features=None
   _snake_case							:	Tuple			=						None
   _snake_case							:	Tuple			=						ConvNextVaBackbone(config=a_	)
   model.to(a_	)
   model.eval()
   _snake_case							:	List[Any]			=						model(a_	)

   # verify feature maps
   self.parent.assertEqual(len(result.feature_maps	),   1	)
   self.parent.assertListEqual(list(result.feature_maps[0].shape	),   [self.batch_size, self.hidden_sizes[-1], 1, 1]	)

   # verify channels
   self.parent.assertEqual(len(model.channels	),   1	)
   self.parent.assertListEqual(model.channels,   [config.hidden_sizes[-1]]	)


 def 				UpperCamelCase_     (       self:	Dict	):




   '''simple docstring'''



   _snake_case							:	Dict			=						self.prepare_config_and_inputs()
   _snake_case	,      _snake_case	,      _snake_case							:	Any			=						config_and_inputs
   _snake_case							:	str			=						{"""pixel_values""": pixel_values}
   return config, inputs_dict


 def 				UpperCamelCase_     (       self:	Optional[int]	):




   '''simple docstring'''



   _snake_case							:	List[Any]			=						self.prepare_config_and_inputs()
   _snake_case	,      _snake_case	,      _snake_case							:	List[str]			=						config_and_inputs
   _snake_case							:	Any			=						{"""pixel_values""": pixel_values, """labels""": labels}
   return config, inputs_dict







@require_torch
class       lowercase(  __a ,    __a ,    unittest.TestCase				):







 '''simple docstring'''





 lowercase__				      =      (
     (
         ConvNextVaModel,
         ConvNextVaForImageClassification,
         ConvNextVaBackbone,
     )
     if is_torch_available()
     else ()
 )
 lowercase__				      =      (
     {"feature-extraction": ConvNextVaModel, "image-classification": ConvNextVaForImageClassification}
     if is_torch_available()
     else {}
 )

 lowercase__				      =      False
 lowercase__				      =      False
 lowercase__				      =      False
 lowercase__				      =      False
 lowercase__				      =      False


 def 				UpperCamelCase_     (       self:	Tuple	):




   '''simple docstring'''



   _snake_case							:	Tuple			=						ConvNextVaModelTester(self	)
   _snake_case							:	int			=						ConfigTester(self,   config_class=a_,   has_text_modality=a_,   hidden_size=37	)


 def 				UpperCamelCase_     (       self:	List[str]	):




   '''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 				UpperCamelCase_     (       self:	Tuple	):




   '''simple docstring'''



   return


 @unittest.skip(reason="""ConvNextV2 does not use inputs_embeds"""	)
 def 				UpperCamelCase_     (       self:	int	):




   '''simple docstring'''



   pass


 @unittest.skip(reason="""ConvNextV2 does not support input and output embeddings"""	)
 def 				UpperCamelCase_     (       self:	Any	):




   '''simple docstring'''



   pass


 @unittest.skip(reason="""ConvNextV2 does not use feedforward chunking"""	)
 def 				UpperCamelCase_     (       self:	str	):




   '''simple docstring'''



   pass


 def 				UpperCamelCase_     (       self:	int	):




   '''simple docstring'''



   if not self.model_tester.is_training:
     return

   for model_class in self.all_model_classes:
     _snake_case	,      _snake_case							:	Union[str, Any]			=						self.model_tester.prepare_config_and_inputs_with_labels()
     _snake_case							:	List[Any]			=						True

     if model_class.__name__ in [
         *get_values(a_	),
         *get_values(a_	),
     ]:
       continue

     _snake_case							:	Tuple			=						model_class(a_	)
     model.to(a_	)
     model.train()
     _snake_case							:	Optional[Any]			=						self._prepare_for_class(a_,   a_,   return_labels=a_	)
     _snake_case							:	Any			=						model(**a_	).loss
     loss.backward()


 def 				UpperCamelCase_     (       self:	Optional[int]	):




   '''simple docstring'''



   if not self.model_tester.is_training:
     return

   for model_class in self.all_model_classes:
     _snake_case	,      _snake_case							:	str			=						self.model_tester.prepare_config_and_inputs_with_labels()
     _snake_case							:	Any			=						False
     _snake_case							:	List[Any]			=						True

     if (
         model_class.__name__
         in [*get_values(a_	), *get_values(a_	)]
         or not model_class.supports_gradient_checkpointing
     ):
       continue

     _snake_case							:	Dict			=						model_class(a_	)
     model.to(a_	)
     model.gradient_checkpointing_enable()
     model.train()
     _snake_case							:	str			=						self._prepare_for_class(a_,   a_,   return_labels=a_	)
     _snake_case							:	Optional[int]			=						model(**a_	).loss
     loss.backward()


 def 				UpperCamelCase_     (       self:	str	):




   '''simple docstring'''



   _snake_case	,      _snake_case							:	List[Any]			=						self.model_tester.prepare_config_and_inputs_for_common()

   for model_class in self.all_model_classes:
     _snake_case							:	List[str]			=						model_class(a_	)
     _snake_case							:	Union[str, Any]			=						inspect.signature(model.forward	)
     # signature.parameters is an OrderedDict => so arg_names order is deterministic
     _snake_case							:	int			=						[*signature.parameters.keys()]

     _snake_case							:	Union[str, Any]			=						["""pixel_values"""]
     self.assertListEqual(arg_names[:1],   a_	)


 def 				UpperCamelCase_     (       self:	int	):




   '''simple docstring'''



   _snake_case							:	Tuple			=						self.model_tester.prepare_config_and_inputs()
   self.model_tester.create_and_check_model(*a_	)


 def 				UpperCamelCase_     (       self:	Union[str, Any]	):




   '''simple docstring'''



   def check_hidden_states_output(a_:	str,   a_:	Tuple,   a_:	Tuple	):
     _snake_case							:	Optional[Any]			=						model_class(a_	)
     model.to(a_	)
     model.eval()

     with torch.no_grad():
       _snake_case							:	Any			=						model(**self._prepare_for_class(a_,   a_	)	)

     _snake_case							:	Optional[int]			=						outputs.encoder_hidden_states if config.is_encoder_decoder else outputs.hidden_states

     _snake_case							:	Optional[int]			=						self.model_tester.num_stages
     self.assertEqual(len(a_	),   expected_num_stages + 1	)

     # ConvNextV2'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 // 4, self.model_tester.image_size // 4],   )

   _snake_case	,      _snake_case							:	Optional[Any]			=						self.model_tester.prepare_config_and_inputs_for_common()

   for model_class in self.all_model_classes:
     _snake_case							:	Optional[Any]			=						True
     check_hidden_states_output(a_,   a_,   a_	)

     # check that output_hidden_states also work using config
     del inputs_dict["output_hidden_states"]
     _snake_case							:	List[str]			=						True

     check_hidden_states_output(a_,   a_,   a_	)


 def 				UpperCamelCase_     (       self:	Dict	):




   '''simple docstring'''



   _snake_case							:	List[str]			=						self.model_tester.prepare_config_and_inputs()
   self.model_tester.create_and_check_for_image_classification(*a_	)


 @slow
 def 				UpperCamelCase_     (       self:	Dict	):




   '''simple docstring'''



   for model_name in CONVNEXTV2_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
     _snake_case							:	str			=						ConvNextVaModel.from_pretrained(a_	)
     self.assertIsNotNone(a_	)







def       UpperCAmelCase__ ():
  """simple docstring"""

  _snake_case							:	List[Any]			=						Image.open("""./tests/fixtures/tests_samples/COCO/000000039769.png"""					)
  return image






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







 '''simple docstring'''





 @cached_property
 def 				UpperCamelCase_     (       self:	Optional[Any]	):




   '''simple docstring'''



   return AutoImageProcessor.from_pretrained("""facebook/convnextv2-tiny-1k-224"""	) if is_vision_available() else None


 @slow
 def 				UpperCamelCase_     (       self:	int	):




   '''simple docstring'''



   _snake_case							:	Optional[Any]			=						ConvNextVaForImageClassification.from_pretrained("""facebook/convnextv2-tiny-1k-224"""	).to(a_	)

   _snake_case							:	Union[str, Any]			=						self.default_image_processor
   _snake_case							:	List[Any]			=						prepare_img()
   _snake_case							:	Optional[int]			=						preprocessor(images=a_,   return_tensors="""pt"""	).to(a_	)

   # forward pass
   with torch.no_grad():
     _snake_case							:	Optional[int]			=						model(**a_	)

   # verify the logits
   _snake_case							:	Optional[int]			=						torch.Size((1, 1_000)	)
   self.assertEqual(outputs.logits.shape,   a_	)

   _snake_case							:	Optional[int]			=						torch.tensor([0.9_996, 0.1_966, -0.4_386]	).to(a_	)
   self.assertTrue(torch.allclose(outputs.logits[0, :3],   a_,   atol=1E-4	)	)


