




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


lowerCamelCase__ :   Any					=							get_tests_dir('fixtures')





class        lowerCamelCase_							(      unittest.TestCase					):


 '''simple docstring'''







 def       lowerCAmelCase_  (							self  :		List[str]						):
       # A mock response for an HTTP head request to emulate server down
       SCREAMING_SNAKE_CASE_							=			mock.Mock()
       SCREAMING_SNAKE_CASE_							=			500
       SCREAMING_SNAKE_CASE_							=			{}
       SCREAMING_SNAKE_CASE_							=			HTTPError
       SCREAMING_SNAKE_CASE_							=			{}

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




 def       lowerCAmelCase_  (							self  :		Optional[int]						):
       # This test is for deprecated behavior and can be removed in v5
       SCREAMING_SNAKE_CASE_							=			WavaVecaFeatureExtractor.from_pretrained(
           'https://huggingface.co/hf-internal-testing/tiny-random-wav2vec2/resolve/main/preprocessor_config.json'						)





@is_staging_test
class        lowerCamelCase_							(      unittest.TestCase					):


 '''simple docstring'''







 @classmethod
 def       lowerCAmelCase_  (							cls  :		List[str]						):
       SCREAMING_SNAKE_CASE_							=			TOKEN
       HfFolder.save_token(_lowerCAmelCase						)



 @classmethod
 def       lowerCAmelCase_  (							cls  :		Tuple						):
       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       lowerCAmelCase_  (							self  :		Optional[int]						):
       SCREAMING_SNAKE_CASE_							=			WavaVecaFeatureExtractor.from_pretrained(_lowerCAmelCase						)
       feature_extractor.push_to_hub('test-feature-extractor'				,				use_auth_token=self._token						)

       SCREAMING_SNAKE_CASE_							=			WavaVecaFeatureExtractor.from_pretrained(F"{USER}/test-feature-extractor"						)
       for k, v in feature_extractor.__dict__.items():
             self.assertEqual(_lowerCAmelCase				,				getattr(_lowerCAmelCase				,				_lowerCAmelCase						)						)

       # 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(
                 _lowerCAmelCase				,				repo_id='test-feature-extractor'				,				push_to_hub=_lowerCAmelCase				,				use_auth_token=self._token						)

       SCREAMING_SNAKE_CASE_							=			WavaVecaFeatureExtractor.from_pretrained(F"{USER}/test-feature-extractor"						)
       for k, v in feature_extractor.__dict__.items():
             self.assertEqual(_lowerCAmelCase				,				getattr(_lowerCAmelCase				,				_lowerCAmelCase						)						)



 def       lowerCAmelCase_  (							self  :		Dict						):
       SCREAMING_SNAKE_CASE_							=			WavaVecaFeatureExtractor.from_pretrained(_lowerCAmelCase						)
       feature_extractor.push_to_hub('valid_org/test-feature-extractor'				,				use_auth_token=self._token						)

       SCREAMING_SNAKE_CASE_							=			WavaVecaFeatureExtractor.from_pretrained('valid_org/test-feature-extractor'						)
       for k, v in feature_extractor.__dict__.items():
             self.assertEqual(_lowerCAmelCase				,				getattr(_lowerCAmelCase				,				_lowerCAmelCase						)						)

       # 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(
                 _lowerCAmelCase				,				repo_id='valid_org/test-feature-extractor-org'				,				push_to_hub=_lowerCAmelCase				,				use_auth_token=self._token						)

       SCREAMING_SNAKE_CASE_							=			WavaVecaFeatureExtractor.from_pretrained('valid_org/test-feature-extractor-org'						)
       for k, v in feature_extractor.__dict__.items():
             self.assertEqual(_lowerCAmelCase				,				getattr(_lowerCAmelCase				,				_lowerCAmelCase						)						)




 def       lowerCAmelCase_  (							self  :		List[Any]						):
       CustomFeatureExtractor.register_for_auto_class()
       SCREAMING_SNAKE_CASE_							=			CustomFeatureExtractor.from_pretrained(_lowerCAmelCase						)

       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'}				,				)

       SCREAMING_SNAKE_CASE_							=			AutoFeatureExtractor.from_pretrained(
           F"{USER}/test-dynamic-feature-extractor"				,				trust_remote_code=_lowerCAmelCase						)
       # 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'						)





def 					UpperCAmelCase_							(      __UpperCAmelCase						:	int			,			__UpperCAmelCase						:	int							)					-> int:
      return number | (1 << position)

def 					UpperCAmelCase_							(      __UpperCAmelCase						:	int			,			__UpperCAmelCase						:	int							)					-> int:
      return number & ~(1 << position)

def 					UpperCAmelCase_							(      __UpperCAmelCase						:	int			,			__UpperCAmelCase						:	int							)					-> int:
      return number ^ (1 << position)

def 					UpperCAmelCase_							(      __UpperCAmelCase						:	int			,			__UpperCAmelCase						:	int							)					-> bool:
      return ((number >> position) & 1) == 1

def 					UpperCAmelCase_							(      __UpperCAmelCase						:	int			,			__UpperCAmelCase						:	int							)					-> int:
      return int((number & (1 << position)) != 0							)


if __name__ == "__main__":
   import doctest

   doctest.testmod()