


"""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 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


a_       							=					get_tests_dir("fixtures")
class snake_case      (  unittest.TestCase):







		def  a_ (					self      :       List[str]		)       ->						str:





						'''simple docstring'''







						_A					  =			mock.Mock()
						_A					  =			5_00
						_A					  =			{}
						_A					  =			HTTPError
						_A					  =			{}

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







		def  a_ (					self      :       List[str]		)       ->						int:





						'''simple docstring'''







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





@is_staging_test
class snake_case      (  unittest.TestCase):







		@classmethod
		def  a_ (					cls      :       List[str]		)       ->						Optional[Any]:





						'''simple docstring'''







						_A					  =			TOKEN
						HfFolder.save_token(_lowerCamelCase		)







		@classmethod
		def  a_ (					cls      :       List[Any]		)       ->						Optional[int]:





						'''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  a_ (					self      :       Any		)       ->						int:





						'''simple docstring'''







						_A					  =			WavaVecaFeatureExtractor.from_pretrained(_lowerCamelCase		)
						feature_extractor.push_to_hub("test-feature-extractor"    ,   use_auth_token=self._token		)

						_A					  =			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		)

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







		def  a_ (					self      :       Optional[int]		)       ->						List[str]:





						'''simple docstring'''







						_A					  =			WavaVecaFeatureExtractor.from_pretrained(_lowerCamelCase		)
						feature_extractor.push_to_hub("valid_org/test-feature-extractor"    ,   use_auth_token=self._token		)

						_A					  =			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		)

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







		def  a_ (					self      :       str		)       ->						Any:





						'''simple docstring'''







						CustomFeatureExtractor.register_for_auto_class()
						_A					  =			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"}    ,   )

						_A					  =			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"		)



"""simple docstring"""


def      a__ (				__lowercase     ,			__lowercase   )	->	int:
				while a != 0:
								_A  ,		_A					  =			b % a, a
				return b






def      a__ (				__lowercase     ,			__lowercase   )	->	int:
				if gcd(__lowercase     ,			__lowercase   ) != 1:
								_A					  =			f"""mod inverse of {a!r} and {m!r} does not exist"""
								raise ValueError(__lowercase   )
				_A  ,		_A  ,		_A					  =			1, 0, a
				_A  ,		_A  ,		_A					  =			0, 1, m
				while va != 0:
								_A					  =			ua // va
								_A  ,		_A  ,		_A  ,		_A  ,		_A  ,		_A					  =			(ua - q * va), (ua - q * va), (ua - q * va), va, va, va
				return ua % m