




import copy
import inspect

from transformers.testing_utils import require_torch, torch_device
from transformers.utils.backbone_utils import BackboneType
@require_torch
class       __a					:


     """simple docstring"""


     _A				:    Union[str, Any]									=  ()
     _A				:    Optional[int]									=  True




     def   __A				(	self			: int						)		->   str:


         '''simple docstring'''





         SCREAMING_SNAKE_CASE__								=self.config_class

         # test default config
         SCREAMING_SNAKE_CASE__								=config_class()
         self.assertIsNotNone(_UpperCamelCase						)
         SCREAMING_SNAKE_CASE__								=["""stem"""] + [f"""stage{idx}""" for idx in range(1				,len(config.depths						) + 1						)]
         self.assertEqual(config.stage_names				,_UpperCamelCase						)
         self.assertTrue(set(config.out_features						).issubset(set(config.stage_names						)						)						)

         # Test out_features and out_indices are correctly set
         # out_features and out_indices both None
         SCREAMING_SNAKE_CASE__								=config_class(out_features=_UpperCamelCase				,out_indices=_UpperCamelCase						)
         self.assertEqual(config.out_features				,[config.stage_names[-1]]						)
         self.assertEqual(config.out_indices				,[len(config.stage_names						) - 1]						)

         # out_features and out_indices both set
         SCREAMING_SNAKE_CASE__								=config_class(out_features=["""stem""", """stage1"""]				,out_indices=[0, 1]						)
         self.assertEqual(config.out_features				,["""stem""", """stage1"""]						)
         self.assertEqual(config.out_indices				,[0, 1]						)

         # Only out_features set
         SCREAMING_SNAKE_CASE__								=config_class(out_features=["""stage1""", """stage3"""]						)
         self.assertEqual(config.out_features				,["""stage1""", """stage3"""]						)
         self.assertEqual(config.out_indices				,[1, 3]						)

         # Only out_indices set
         SCREAMING_SNAKE_CASE__								=config_class(out_indices=[0, 2]						)
         self.assertEqual(config.out_features				,[config.stage_names[0], config.stage_names[2]]						)
         self.assertEqual(config.out_indices				,[0, 2]						)

         # Error raised when out_indices do not correspond to out_features
         with self.assertRaises(_UpperCamelCase						):
             SCREAMING_SNAKE_CASE__								=config_class(out_features=["""stage1""", """stage2"""]				,out_indices=[0, 2]						)




     def   __A				(	self			: str						)		->   List[Any]:


         '''simple docstring'''





         SCREAMING_SNAKE_CASE__			,		SCREAMING_SNAKE_CASE__								=self.model_tester.prepare_config_and_inputs_for_common()

         for model_class in self.all_model_classes:
             SCREAMING_SNAKE_CASE__								=model_class(_UpperCamelCase						)
             SCREAMING_SNAKE_CASE__								=inspect.signature(model.forward						)
             # signature.parameters is an OrderedDict => so arg_names order is deterministic
             SCREAMING_SNAKE_CASE__								=[*signature.parameters.keys()]
             SCREAMING_SNAKE_CASE__								=["""pixel_values"""]
             self.assertListEqual(arg_names[:1]				,_UpperCamelCase						)




     def   __A				(	self			: Dict						)		->   Dict:


         '''simple docstring'''





         SCREAMING_SNAKE_CASE__			,		SCREAMING_SNAKE_CASE__								=self.model_tester.prepare_config_and_inputs_for_common()

         for model_class in self.all_model_classes:
             SCREAMING_SNAKE_CASE__								=model_class(_UpperCamelCase						)
             self.assertEqual(len(model.channels						)				,len(config.out_features						)						)
             SCREAMING_SNAKE_CASE__								=model.num_features
             SCREAMING_SNAKE_CASE__								=[config.stage_names.index(_UpperCamelCase						) for feat in config.out_features]
             SCREAMING_SNAKE_CASE__								=[num_features[idx] for idx in out_indices]
             self.assertListEqual(model.channels				,_UpperCamelCase						)

             SCREAMING_SNAKE_CASE__								=copy.deepcopy(_UpperCamelCase						)
             SCREAMING_SNAKE_CASE__								=None
             SCREAMING_SNAKE_CASE__								=model_class(_UpperCamelCase						)
             self.assertEqual(len(model.channels						)				,1						)
             self.assertListEqual(model.channels				,[num_features[-1]]						)

             SCREAMING_SNAKE_CASE__								=copy.deepcopy(_UpperCamelCase						)
             SCREAMING_SNAKE_CASE__								=None
             SCREAMING_SNAKE_CASE__								=model_class(_UpperCamelCase						)
             self.assertEqual(len(model.channels						)				,1						)
             self.assertListEqual(model.channels				,[num_features[-1]]						)




     def   __A				(	self			: int						)		->   List[Any]:


         '''simple docstring'''





         SCREAMING_SNAKE_CASE__			,		SCREAMING_SNAKE_CASE__								=self.model_tester.prepare_config_and_inputs_for_common()

         for model_class in self.all_model_classes:
             SCREAMING_SNAKE_CASE__								=model_class(_UpperCamelCase						)
             model.to(_UpperCamelCase						)
             model.eval()
             SCREAMING_SNAKE_CASE__								=model(**_UpperCamelCase						)

             self.assertEqual(len(result.feature_maps						)				,len(config.out_features						)						)
             self.assertEqual(len(model.channels						)				,len(config.out_features						)						)
             self.assertEqual(len(result.feature_maps						)				,len(config.out_indices						)						)
             self.assertEqual(len(model.channels						)				,len(config.out_indices						)						)

             # Check output of last stage is taken if out_features=None, out_indices=None
             SCREAMING_SNAKE_CASE__								=copy.deepcopy(_UpperCamelCase						)
             SCREAMING_SNAKE_CASE__								=None
             SCREAMING_SNAKE_CASE__								=model_class(_UpperCamelCase						)
             model.to(_UpperCamelCase						)
             model.eval()
             SCREAMING_SNAKE_CASE__								=model(**_UpperCamelCase						)

             self.assertEqual(len(result.feature_maps						)				,1						)
             self.assertEqual(len(model.channels						)				,1						)

             SCREAMING_SNAKE_CASE__								=copy.deepcopy(_UpperCamelCase						)
             SCREAMING_SNAKE_CASE__								=None
             SCREAMING_SNAKE_CASE__								=model_class(_UpperCamelCase						)
             model.to(_UpperCamelCase						)
             model.eval()
             SCREAMING_SNAKE_CASE__								=model(**_UpperCamelCase						)

             self.assertEqual(len(result.feature_maps						)				,1						)
             self.assertEqual(len(model.channels						)				,1						)

             # Check backbone can be initialized with fresh weights
             SCREAMING_SNAKE_CASE__								=copy.deepcopy(_UpperCamelCase						)
             SCREAMING_SNAKE_CASE__								=False
             SCREAMING_SNAKE_CASE__								=model_class(_UpperCamelCase						)
             model.to(_UpperCamelCase						)
             model.eval()
             SCREAMING_SNAKE_CASE__								=model(**_UpperCamelCase						)




     def   __A				(	self			: int						)		->   Dict:


         '''simple docstring'''





         SCREAMING_SNAKE_CASE__			,		SCREAMING_SNAKE_CASE__								=self.model_tester.prepare_config_and_inputs_for_common()

         for backbone_class in self.all_model_classes:
             SCREAMING_SNAKE_CASE__								=backbone_class(_UpperCamelCase						)

             self.assertTrue(hasattr(_UpperCamelCase				,"""backbone_type"""						)						)
             self.assertTrue(hasattr(_UpperCamelCase				,"""stage_names"""						)						)
             self.assertTrue(hasattr(_UpperCamelCase				,"""num_features"""						)						)
             self.assertTrue(hasattr(_UpperCamelCase				,"""out_indices"""						)						)
             self.assertTrue(hasattr(_UpperCamelCase				,"""out_features"""						)						)
             self.assertTrue(hasattr(_UpperCamelCase				,"""out_feature_channels"""						)						)
             self.assertTrue(hasattr(_UpperCamelCase				,"""channels"""						)						)

             self.assertIsInstance(backbone.backbone_type				,_UpperCamelCase						)
             # Verify num_features has been initialized in the backbone init
             self.assertIsNotNone(backbone.num_features						)
             self.assertTrue(len(backbone.channels						) == len(backbone.out_indices						)						)
             self.assertTrue(len(backbone.stage_names						) == len(backbone.num_features						)						)
             self.assertTrue(len(backbone.channels						) <= len(backbone.num_features						)						)
             self.assertTrue(len(backbone.out_feature_channels						) == len(backbone.stage_names						)						)




     def   __A				(	self			: str						)		->   Optional[Any]:


         '''simple docstring'''





         SCREAMING_SNAKE_CASE__			,		SCREAMING_SNAKE_CASE__								=self.model_tester.prepare_config_and_inputs_for_common()
         SCREAMING_SNAKE_CASE__								=inputs_dict["""pixel_values"""].shape[0]

         for backbone_class in self.all_model_classes:
             SCREAMING_SNAKE_CASE__								=backbone_class(_UpperCamelCase						)
             backbone.to(_UpperCamelCase						)
             backbone.eval()

             SCREAMING_SNAKE_CASE__								=backbone(**_UpperCamelCase						)

             # Test default outputs and verify feature maps
             self.assertIsInstance(outputs.feature_maps				,_UpperCamelCase						)
             self.assertTrue(len(outputs.feature_maps						) == len(backbone.channels						)						)
             for feature_map, n_channels in zip(outputs.feature_maps				,backbone.channels						):
                 self.assertTrue(feature_map.shape[:2]				,(batch_size, n_channels)						)
             self.assertIsNone(outputs.hidden_states						)
             self.assertIsNone(outputs.attentions						)

             # Test output_hidden_states=True
             SCREAMING_SNAKE_CASE__								=backbone(**_UpperCamelCase				,output_hidden_states=_UpperCamelCase						)
             self.assertIsNotNone(outputs.hidden_states						)
             self.assertTrue(len(outputs.hidden_states						)				,len(backbone.stage_names						)						)
             for hidden_state, n_channels in zip(outputs.hidden_states				,backbone.channels						):
                 self.assertTrue(hidden_state.shape[:2]				,(batch_size, n_channels)						)

             # Test output_attentions=True
             if self.has_attentions:
                 SCREAMING_SNAKE_CASE__								=backbone(**_UpperCamelCase				,output_attentions=_UpperCamelCase						)
                 self.assertIsNotNone(outputs.attentions						)












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 ConvNextImageProcessor
class       __a					( unittest.TestCase     ):


     """simple docstring"""


     def __init__(	self			: List[str]				,_UpperCamelCase			: int				,_UpperCamelCase			: int=7				,_UpperCamelCase			: int=3				,_UpperCamelCase			: List[str]=1_8				,_UpperCamelCase			: Dict=3_0				,_UpperCamelCase			: Tuple=4_0_0				,_UpperCamelCase			: Optional[int]=True				,_UpperCamelCase			: int=None				,_UpperCamelCase			: str=0.875				,_UpperCamelCase			: Tuple=True				,_UpperCamelCase			: Dict=[0.5, 0.5, 0.5]				,_UpperCamelCase			: str=[0.5, 0.5, 0.5]				,)		->   int:


         '''simple docstring'''





         SCREAMING_SNAKE_CASE__								=size if size is not None else {"""shortest_edge""": 2_0}
         SCREAMING_SNAKE_CASE__								=parent
         SCREAMING_SNAKE_CASE__								=batch_size
         SCREAMING_SNAKE_CASE__								=num_channels
         SCREAMING_SNAKE_CASE__								=image_size
         SCREAMING_SNAKE_CASE__								=min_resolution
         SCREAMING_SNAKE_CASE__								=max_resolution
         SCREAMING_SNAKE_CASE__								=do_resize
         SCREAMING_SNAKE_CASE__								=size
         SCREAMING_SNAKE_CASE__								=crop_pct
         SCREAMING_SNAKE_CASE__								=do_normalize
         SCREAMING_SNAKE_CASE__								=image_mean
         SCREAMING_SNAKE_CASE__								=image_std




     def   __A				(	self			: Dict						)		->   str:


         '''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,
             "crop_pct": self.crop_pct,
         }






@require_torch
@require_vision
class       __a					( __lowerCamelCase							,     unittest.TestCase     ):


     """simple docstring"""


     _A				:    Dict									=  ConvNextImageProcessor if is_vision_available() else None




     def   __A				(	self			: List[str]						)		->   Dict:


         '''simple docstring'''





         SCREAMING_SNAKE_CASE__								=ConvNextImageProcessingTester(self						)




     @property
     def   __A				(	self			: str						)		->   Optional[int]:


         '''simple docstring'''





         return self.image_processor_tester.prepare_image_processor_dict()




     def   __A				(	self			: Optional[int]						)		->   Any:


         '''simple docstring'''





         SCREAMING_SNAKE_CASE__								=self.image_processing_class(**self.image_processor_dict						)
         self.assertTrue(hasattr(_UpperCamelCase				,"""do_resize"""						)						)
         self.assertTrue(hasattr(_UpperCamelCase				,"""size"""						)						)
         self.assertTrue(hasattr(_UpperCamelCase				,"""crop_pct"""						)						)
         self.assertTrue(hasattr(_UpperCamelCase				,"""do_normalize"""						)						)
         self.assertTrue(hasattr(_UpperCamelCase				,"""image_mean"""						)						)
         self.assertTrue(hasattr(_UpperCamelCase				,"""image_std"""						)						)




     def   __A				(	self			: Tuple						)		->   Optional[Any]:


         '''simple docstring'''





         SCREAMING_SNAKE_CASE__								=self.image_processing_class.from_dict(self.image_processor_dict						)
         self.assertEqual(image_processor.size				,{"""shortest_edge""": 2_0}						)

         SCREAMING_SNAKE_CASE__								=self.image_processing_class.from_dict(self.image_processor_dict				,size=4_2						)
         self.assertEqual(image_processor.size				,{"""shortest_edge""": 4_2}						)




     def   __A				(	self			: Any						)		->   List[str]:


         '''simple docstring'''





         pass




     def   __A				(	self			: Optional[int]						)		->   int:


         '''simple docstring'''





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

         # Test not batched input
         SCREAMING_SNAKE_CASE__								=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["""shortest_edge"""],
                 self.image_processor_tester.size["""shortest_edge"""],
             )				,)

         # Test batched
         SCREAMING_SNAKE_CASE__								=image_processing(_UpperCamelCase				,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["""shortest_edge"""],
                 self.image_processor_tester.size["""shortest_edge"""],
             )				,)




     def   __A				(	self			: str						)		->   str:


         '''simple docstring'''





         SCREAMING_SNAKE_CASE__								=self.image_processing_class(**self.image_processor_dict						)
         # create random numpy tensors
         SCREAMING_SNAKE_CASE__								=prepare_image_inputs(self.image_processor_tester				,equal_resolution=_UpperCamelCase				,numpify=_UpperCamelCase						)
         for image in image_inputs:
             self.assertIsInstance(_UpperCamelCase				,np.ndarray						)

         # Test not batched input
         SCREAMING_SNAKE_CASE__								=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["""shortest_edge"""],
                 self.image_processor_tester.size["""shortest_edge"""],
             )				,)

         # Test batched
         SCREAMING_SNAKE_CASE__								=image_processing(_UpperCamelCase				,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["""shortest_edge"""],
                 self.image_processor_tester.size["""shortest_edge"""],
             )				,)




     def   __A				(	self			: List[Any]						)		->   Union[str, Any]:


         '''simple docstring'''





         SCREAMING_SNAKE_CASE__								=self.image_processing_class(**self.image_processor_dict						)
         # create random PyTorch tensors
         SCREAMING_SNAKE_CASE__								=prepare_image_inputs(self.image_processor_tester				,equal_resolution=_UpperCamelCase				,torchify=_UpperCamelCase						)
         for image in image_inputs:
             self.assertIsInstance(_UpperCamelCase				,torch.Tensor						)

         # Test not batched input
         SCREAMING_SNAKE_CASE__								=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["""shortest_edge"""],
                 self.image_processor_tester.size["""shortest_edge"""],
             )				,)

         # Test batched
         SCREAMING_SNAKE_CASE__								=image_processing(_UpperCamelCase				,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["""shortest_edge"""],
                 self.image_processor_tester.size["""shortest_edge"""],
             )				,)






