
"""simple docstring"""




import sys
import tempfile
import unittest
import unittest.mock as mock
from pathlib import Path

from huggingface_hub import HfFolder, delete_repo
from requests.exceptions import HTTPError

from transformers import AutoImageProcessor, ViTImageProcessor
from transformers.testing_utils import TOKEN, USER, get_tests_dir, is_staging_test


sys.path.append(str(Path(__file__).parent.parent / 'utils'))

from test_module.custom_image_processing import CustomImageProcessor  # noqa E402


A__   :					Tuple							=   get_tests_dir('fixtures')


class 			lowercase_       (       unittest.TestCase ):
       def 							lowercase_							(     self       )     ->	Dict:





         """simple docstring"""




         _lowercase:			List[str]       =     mock.Mock()
         _lowercase:			Optional[int]       =     500
         _lowercase:			Union[str, Any]       =     {}
         _lowercase:			Any       =     HTTPError
         _lowercase:			Dict       =     {}

         # Download this model to make sure it's in the cache.
         _lowercase:			Union[str, Any]       =     ViTImageProcessor.from_pretrained('''hf-internal-testing/tiny-random-vit'''       )
         # Under the mock environment we get a 500 error when trying to reach the model.
         with mock.patch('''requests.Session.request''' ,				return_value=A_       ) as mock_head:
           _lowercase:			Union[str, Any]       =     ViTImageProcessor.from_pretrained('''hf-internal-testing/tiny-random-vit'''       )
           # This check we did call the fake head request
           mock_head.assert_called()
       def 							lowercase_							(     self       )     ->	Optional[int]:





         """simple docstring"""




         _lowercase:			Optional[int]       =     ViTImageProcessor.from_pretrained(
             '''https://huggingface.co/hf-internal-testing/tiny-random-vit/resolve/main/preprocessor_config.json'''       )



       def 							lowercase_							(     self       )     ->	Tuple:





         """simple docstring"""




         with self.assertRaises(A_       ):
           # config is in subfolder, the following should not work without specifying the subfolder
           _lowercase:			Any       =     AutoImageProcessor.from_pretrained('''hf-internal-testing/stable-diffusion-all-variants'''       )

         _lowercase:			str       =     AutoImageProcessor.from_pretrained(
             '''hf-internal-testing/stable-diffusion-all-variants''' ,				subfolder='''feature_extractor'''       )

         self.assertIsNotNone(A_       )


@is_staging_test
class 			lowercase_       (       unittest.TestCase ):
       @classmethod
       def 							lowercase_							(     cls       )     ->	int:





         """simple docstring"""




         _lowercase:			List[Any]       =     TOKEN
         HfFolder.save_token(A_       )
       @classmethod
       def 							lowercase_							(     cls       )     ->	Dict:





         """simple docstring"""




         try:
           delete_repo(token=cls._token ,				repo_id='''test-image-processor'''       )
         except HTTPError:
           pass

         try:
           delete_repo(token=cls._token ,				repo_id='''valid_org/test-image-processor-org'''       )
         except HTTPError:
           pass

         try:
           delete_repo(token=cls._token ,				repo_id='''test-dynamic-image-processor'''       )
         except HTTPError:
           pass
       def 							lowercase_							(     self       )     ->	Dict:





         """simple docstring"""




         _lowercase:			Optional[int]       =     ViTImageProcessor.from_pretrained(A_       )
         image_processor.push_to_hub('''test-image-processor''' ,				use_auth_token=self._token       )

         _lowercase:			List[str]       =     ViTImageProcessor.from_pretrained(f'''{USER}/test-image-processor'''       )
         for k, v in image_processor.__dict__.items():
           self.assertEqual(A_ ,				getattr(A_ ,				A_       )       )

         # Reset repo
         delete_repo(token=self._token ,				repo_id='''test-image-processor'''       )

         # Push to hub via save_pretrained
         with tempfile.TemporaryDirectory() as tmp_dir:
           image_processor.save_pretrained(
               A_ ,				repo_id='''test-image-processor''' ,				push_to_hub=A_ ,				use_auth_token=self._token       )

         _lowercase:			List[str]       =     ViTImageProcessor.from_pretrained(f'''{USER}/test-image-processor'''       )
         for k, v in image_processor.__dict__.items():
           self.assertEqual(A_ ,				getattr(A_ ,				A_       )       )
       def 							lowercase_							(     self       )     ->	Union[str, Any]:





         """simple docstring"""




         _lowercase:			List[Any]       =     ViTImageProcessor.from_pretrained(A_       )
         image_processor.push_to_hub('''valid_org/test-image-processor''' ,				use_auth_token=self._token       )

         _lowercase:			Optional[int]       =     ViTImageProcessor.from_pretrained('''valid_org/test-image-processor'''       )
         for k, v in image_processor.__dict__.items():
           self.assertEqual(A_ ,				getattr(A_ ,				A_       )       )

         # Reset repo
         delete_repo(token=self._token ,				repo_id='''valid_org/test-image-processor'''       )

         # Push to hub via save_pretrained
         with tempfile.TemporaryDirectory() as tmp_dir:
           image_processor.save_pretrained(
               A_ ,				repo_id='''valid_org/test-image-processor-org''' ,				push_to_hub=A_ ,				use_auth_token=self._token       )

         _lowercase:			Optional[Any]       =     ViTImageProcessor.from_pretrained('''valid_org/test-image-processor-org'''       )
         for k, v in image_processor.__dict__.items():
           self.assertEqual(A_ ,				getattr(A_ ,				A_       )       )



       def 							lowercase_							(     self       )     ->	Optional[Any]:





         """simple docstring"""




         CustomImageProcessor.register_for_auto_class()
         _lowercase:			List[str]       =     CustomImageProcessor.from_pretrained(A_       )

         image_processor.push_to_hub('''test-dynamic-image-processor''' ,				use_auth_token=self._token       )

         # This has added the proper auto_map field to the config
         self.assertDictEqual(
             image_processor.auto_map ,				{'''AutoImageProcessor''': '''custom_image_processing.CustomImageProcessor'''} ,				)

         _lowercase:			int       =     AutoImageProcessor.from_pretrained(
             f'''{USER}/test-dynamic-image-processor''' ,				trust_remote_code=A_       )
         # Can't make an isinstance check because the new_image_processor is from the CustomImageProcessor class of a dynamic module
         self.assertEqual(new_image_processor.__class__.__name__ ,				'''CustomImageProcessor'''       )


"""simple docstring"""




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return number | (1 << position)




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return number & ~(1 << position)




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return number ^ (1 << position)




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return ((number >> position) & 1) == 1




def  _lowerCAmelCase		(		_UpperCamelCase ,				_UpperCamelCase						):






  """simple docstring"""



  return int((number & (1 << position)) != 0						)


if __name__ == "__main__":
  import doctest

  doctest.testmod()
