




"""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_      			=       get_tests_dir('''fixtures''')






class       lowercase(  unittest.TestCase				):







 '''simple docstring'''





 def 				UpperCamelCase_     (       self:	Optional[Any]	):




   '''simple docstring'''



   _snake_case							:	Optional[Any]			=						mock.Mock()
   _snake_case							:	List[Any]			=						500
   _snake_case							:	List[str]			=						{}
   _snake_case							:	List[Any]			=						HTTPError
   _snake_case							:	Optional[int]			=						{}

   # Download this model to make sure it's in the cache.
   _snake_case							:	Optional[int]			=						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:
     _snake_case							:	str			=						ViTImageProcessor.from_pretrained("""hf-internal-testing/tiny-random-vit"""	)
     # This check we did call the fake head request
     mock_head.assert_called()


 def 				UpperCamelCase_     (       self:	Any	):




   '''simple docstring'''



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


 def 				UpperCamelCase_     (       self:	Dict	):




   '''simple docstring'''



   with self.assertRaises(a_	):
     # config is in subfolder, the following should not work without specifying the subfolder
     _snake_case							:	Union[str, Any]			=						AutoImageProcessor.from_pretrained("""hf-internal-testing/stable-diffusion-all-variants"""	)

   _snake_case							:	Optional[Any]			=						AutoImageProcessor.from_pretrained(
       """hf-internal-testing/stable-diffusion-all-variants""",   subfolder="""feature_extractor"""	)

   self.assertIsNotNone(a_	)







@is_staging_test
class       lowercase(  unittest.TestCase				):







 '''simple docstring'''





 @classmethod
 def 				UpperCamelCase_     (       cls:	Dict	):




   '''simple docstring'''



   _snake_case							:	Union[str, Any]			=						TOKEN
   HfFolder.save_token(a_	)


 @classmethod
 def 				UpperCamelCase_     (       cls:	Optional[int]	):




   '''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 				UpperCamelCase_     (       self:	List[str]	):




   '''simple docstring'''



   _snake_case							:	Union[str, Any]			=						ViTImageProcessor.from_pretrained(a_	)
   image_processor.push_to_hub("""test-image-processor""",   use_auth_token=self._token	)

   _snake_case							:	Tuple			=						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	)

   _snake_case							:	Optional[Any]			=						ViTImageProcessor.from_pretrained(f"{USER}/test-image-processor"	)
   for k, v in image_processor.__dict__.items():
     self.assertEqual(a_,   getattr(a_,   a_	)	)


 def 				UpperCamelCase_     (       self:	Optional[int]	):




   '''simple docstring'''



   _snake_case							:	Optional[int]			=						ViTImageProcessor.from_pretrained(a_	)
   image_processor.push_to_hub("""valid_org/test-image-processor""",   use_auth_token=self._token	)

   _snake_case							:	Union[str, Any]			=						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	)

   _snake_case							:	List[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 				UpperCamelCase_     (       self:	str	):




   '''simple docstring'''



   CustomImageProcessor.register_for_auto_class()
   _snake_case							:	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"""},   )

   _snake_case							:	Optional[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"""


from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
    is_vision_available,
)


A_      			=       {
    '''configuration_owlvit''': [
        '''OWLVIT_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''OwlViTConfig''',
        '''OwlViTOnnxConfig''',
        '''OwlViTTextConfig''',
        '''OwlViTVisionConfig''',
    ],
    '''processing_owlvit''': ['''OwlViTProcessor'''],
}


try:
     if not is_vision_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     A_      			=       ['''OwlViTFeatureExtractor''']
     A_      			=       ['''OwlViTImageProcessor''']

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     A_      			=       [
         '''OWLVIT_PRETRAINED_MODEL_ARCHIVE_LIST''',
         '''OwlViTModel''',
         '''OwlViTPreTrainedModel''',
         '''OwlViTTextModel''',
         '''OwlViTVisionModel''',
         '''OwlViTForObjectDetection''',
     ]

if TYPE_CHECKING:
     from .configuration_owlvit import (
         OWLVIT_PRETRAINED_CONFIG_ARCHIVE_MAP,
         OwlViTConfig,
         OwlViTOnnxConfig,
         OwlViTTextConfig,
         OwlViTVisionConfig,
     )
     from .processing_owlvit import OwlViTProcessor

     try:
          if not is_vision_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .feature_extraction_owlvit import OwlViTFeatureExtractor
          from .image_processing_owlvit import OwlViTImageProcessor

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_owlvit import (
              OWLVIT_PRETRAINED_MODEL_ARCHIVE_LIST,
              OwlViTForObjectDetection,
              OwlViTModel,
              OwlViTPreTrainedModel,
              OwlViTTextModel,
              OwlViTVisionModel,
          )

else:
     import sys

     A_      			=       _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)


