

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 AutoFeatureExtractor, WavaVecaFeatureExtractor
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_feature_extraction import CustomFeatureExtractor  # noqa E402


SCREAMING_SNAKE_CASE_        =      get_tests_dir('fixtures')

class 				a  (	unittest.TestCase				):


						def        _UpperCAmelCase				(       self	):







										'''simple docstring'''


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

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





						def        _UpperCAmelCase				(       self	):







										'''simple docstring'''


										_UpperCAmelCase       :		Dict 		=    WavaVecaFeatureExtractor.from_pretrained(
										    "https://huggingface.co/hf-internal-testing/tiny-random-wav2vec2/resolve/main/preprocessor_config.json"	)







@is_staging_test
class 				a  (	unittest.TestCase				):


						@classmethod
						def        _UpperCAmelCase				(       cls	):







										'''simple docstring'''


										_UpperCAmelCase       :		Dict 		=    TOKEN
										HfFolder.save_token(A_	)


						@classmethod
						def        _UpperCAmelCase				(       cls	):







										'''simple docstring'''


										try:
														delete_repo(token=cls._token						,					repo_id="test-feature-extractor"	)
										except HTTPError:
														pass

										try:
														delete_repo(token=cls._token						,					repo_id="valid_org/test-feature-extractor-org"	)
										except HTTPError:
														pass

										try:
														delete_repo(token=cls._token						,					repo_id="test-dynamic-feature-extractor"	)
										except HTTPError:
														pass


						def        _UpperCAmelCase				(       self	):







										'''simple docstring'''


										_UpperCAmelCase       :		Any 		=    WavaVecaFeatureExtractor.from_pretrained(A_	)
										feature_extractor.push_to_hub("test-feature-extractor"						,					use_auth_token=self._token	)

										_UpperCAmelCase       :		Optional[Any] 		=    WavaVecaFeatureExtractor.from_pretrained(f'{USER}/test-feature-extractor'	)
										for k, v in feature_extractor.__dict__.items():
														self.assertEqual(A_						,					getattr(A_						,					A_	)	)

										# Reset repo
										delete_repo(token=self._token						,					repo_id="test-feature-extractor"	)

										# Push to hub via save_pretrained
										with tempfile.TemporaryDirectory() as tmp_dir:
														feature_extractor.save_pretrained(
														    A_						,					repo_id="test-feature-extractor"						,					push_to_hub=A_						,					use_auth_token=self._token	)

										_UpperCAmelCase       :		int 		=    WavaVecaFeatureExtractor.from_pretrained(f'{USER}/test-feature-extractor'	)
										for k, v in feature_extractor.__dict__.items():
														self.assertEqual(A_						,					getattr(A_						,					A_	)	)


						def        _UpperCAmelCase				(       self	):







										'''simple docstring'''


										_UpperCAmelCase       :		Optional[Any] 		=    WavaVecaFeatureExtractor.from_pretrained(A_	)
										feature_extractor.push_to_hub("valid_org/test-feature-extractor"						,					use_auth_token=self._token	)

										_UpperCAmelCase       :		Dict 		=    WavaVecaFeatureExtractor.from_pretrained("valid_org/test-feature-extractor"	)
										for k, v in feature_extractor.__dict__.items():
														self.assertEqual(A_						,					getattr(A_						,					A_	)	)

										# Reset repo
										delete_repo(token=self._token						,					repo_id="valid_org/test-feature-extractor"	)

										# Push to hub via save_pretrained
										with tempfile.TemporaryDirectory() as tmp_dir:
														feature_extractor.save_pretrained(
														    A_						,					repo_id="valid_org/test-feature-extractor-org"						,					push_to_hub=A_						,					use_auth_token=self._token	)

										_UpperCAmelCase       :		List[str] 		=    WavaVecaFeatureExtractor.from_pretrained("valid_org/test-feature-extractor-org"	)
										for k, v in feature_extractor.__dict__.items():
														self.assertEqual(A_						,					getattr(A_						,					A_	)	)





						def        _UpperCAmelCase				(       self	):







										'''simple docstring'''


										CustomFeatureExtractor.register_for_auto_class()
										_UpperCAmelCase       :		Union[str, Any] 		=    CustomFeatureExtractor.from_pretrained(A_	)

										feature_extractor.push_to_hub("test-dynamic-feature-extractor"						,					use_auth_token=self._token	)

										# This has added the proper auto_map field to the config
										self.assertDictEqual(
										    feature_extractor.auto_map						,					{"AutoFeatureExtractor": "custom_feature_extraction.CustomFeatureExtractor"}						,					)

										_UpperCAmelCase       :		Tuple 		=    AutoFeatureExtractor.from_pretrained(
										    f'{USER}/test-dynamic-feature-extractor'						,					trust_remote_code=A_	)
										# Can't make an isinstance check because the new_feature_extractor is from the CustomFeatureExtractor class of a dynamic module
										self.assertEqual(new_feature_extractor.__class__.__name__						,					"CustomFeatureExtractor"	)





import warnings

from ...utils import logging
from .image_processing_perceiver import PerceiverImageProcessor


SCREAMING_SNAKE_CASE_        =      logging.get_logger(__name__)

class 				a  (	UpperCAmelCase				):


						def __init__(       self						,					*A_						,					**A_	):







										'''simple docstring'''


										warnings.warn(
										    "The class PerceiverFeatureExtractor is deprecated and will be removed in version 5 of Transformers."
										    " Please use PerceiverImageProcessor instead."						,					A_						,					)
										super().__init__(*A_						,					**A_	)


