





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


__lowerCamelCase :  Any										=  get_tests_dir("""fixtures""")



class       A__     ( unittest.TestCase    ):





      def  __UpperCamelCase(				self     ):
       '''simple docstring'''




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

       # Download this model to make sure it's in the cache.
       UpperCamelCase			:      Optional[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:
        UpperCamelCase			:      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  __UpperCamelCase(				self     ):
       '''simple docstring'''




       UpperCamelCase			:      str 			=     ViTImageProcessor.from_pretrained(
           "https://huggingface.co/hf-internal-testing/tiny-random-vit/resolve/main/preprocessor_config.json"     )





      def  __UpperCamelCase(				self     ):
       '''simple docstring'''




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

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

       self.assertIsNotNone(A_     )



@is_staging_test
class       A__     ( unittest.TestCase    ):





      @classmethod
      def  __UpperCamelCase(				cls     ):
       '''simple docstring'''




       UpperCamelCase			:      Any 			=     TOKEN
       HfFolder.save_token(A_     )





      @classmethod
      def  __UpperCamelCase(				cls     ):
       '''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     ):
       '''simple docstring'''




       UpperCamelCase			:      List[str] 			=     ViTImageProcessor.from_pretrained(A_     )
       image_processor.push_to_hub("test-image-processor" ,							use_auth_token=self._token     )

       UpperCamelCase			:      int 			=     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     )

       UpperCamelCase			:      Union[str, 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     ):
       '''simple docstring'''




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

       UpperCamelCase			:      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     )

       UpperCamelCase			:      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     ):
       '''simple docstring'''




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

       UpperCamelCase			:      Any 			=     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"     )







from typing import TYPE_CHECKING

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


__lowerCamelCase :  int										=  {
    """configuration_convbert""": ["""CONVBERT_PRETRAINED_CONFIG_ARCHIVE_MAP""", """ConvBertConfig""", """ConvBertOnnxConfig"""],
    """tokenization_convbert""": ["""ConvBertTokenizer"""],
}

try:
    if not is_tokenizers_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    __lowerCamelCase :  Dict										=  ["""ConvBertTokenizerFast"""]

try:
    if not is_torch_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    __lowerCamelCase :  int										=  [
        """CONVBERT_PRETRAINED_MODEL_ARCHIVE_LIST""",
        """ConvBertForMaskedLM""",
        """ConvBertForMultipleChoice""",
        """ConvBertForQuestionAnswering""",
        """ConvBertForSequenceClassification""",
        """ConvBertForTokenClassification""",
        """ConvBertLayer""",
        """ConvBertModel""",
        """ConvBertPreTrainedModel""",
        """load_tf_weights_in_convbert""",
    ]


try:
    if not is_tf_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    __lowerCamelCase :  str										=  [
        """TF_CONVBERT_PRETRAINED_MODEL_ARCHIVE_LIST""",
        """TFConvBertForMaskedLM""",
        """TFConvBertForMultipleChoice""",
        """TFConvBertForQuestionAnswering""",
        """TFConvBertForSequenceClassification""",
        """TFConvBertForTokenClassification""",
        """TFConvBertLayer""",
        """TFConvBertModel""",
        """TFConvBertPreTrainedModel""",
    ]


if TYPE_CHECKING:
    from .configuration_convbert import CONVBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, ConvBertConfig, ConvBertOnnxConfig
    from .tokenization_convbert import ConvBertTokenizer

    try:
        if not is_tokenizers_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .tokenization_convbert_fast import ConvBertTokenizerFast

    try:
        if not is_torch_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_convbert import (
            CONVBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
            ConvBertForMaskedLM,
            ConvBertForMultipleChoice,
            ConvBertForQuestionAnswering,
            ConvBertForSequenceClassification,
            ConvBertForTokenClassification,
            ConvBertLayer,
            ConvBertModel,
            ConvBertPreTrainedModel,
            load_tf_weights_in_convbert,
        )

    try:
        if not is_tf_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_tf_convbert import (
            TF_CONVBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
            TFConvBertForMaskedLM,
            TFConvBertForMultipleChoice,
            TFConvBertForQuestionAnswering,
            TFConvBertForSequenceClassification,
            TFConvBertForTokenClassification,
            TFConvBertLayer,
            TFConvBertModel,
            TFConvBertPreTrainedModel,
        )


else:
    import sys

    __lowerCamelCase :  List[str]										=  _LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)
