




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       _A				(		unittest.TestCase     ):






		def 				UpperCAmelCase (    self			):
								_UpperCAmelCase      =			mock.Mock()
								_UpperCAmelCase      =			500
								_UpperCAmelCase      =			{}
								_UpperCAmelCase      =			HTTPError
								_UpperCAmelCase      =			{}

								# Download this model to make sure it's in the cache.
								_UpperCAmelCase      =			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=__UpperCamelCase			) as mock_head:
														_UpperCAmelCase      =			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			):
								_UpperCAmelCase      =			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			):
								_UpperCAmelCase      =			TOKEN
								HfFolder.save_token(__UpperCamelCase			)






		@classmethod
		def 				UpperCAmelCase (    cls			):


								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			):
								_UpperCAmelCase      =			WavaVecaFeatureExtractor.from_pretrained(__UpperCamelCase			)
								feature_extractor.push_to_hub("""test-feature-extractor"""						,		use_auth_token=self._token			)

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

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

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






		def 				UpperCAmelCase (    self			):
								_UpperCAmelCase      =			WavaVecaFeatureExtractor.from_pretrained(__UpperCamelCase			)
								feature_extractor.push_to_hub("""valid_org/test-feature-extractor"""						,		use_auth_token=self._token			)

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

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

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






		def 				UpperCAmelCase (    self			):
								CustomFeatureExtractor.register_for_auto_class()
								_UpperCAmelCase      =			CustomFeatureExtractor.from_pretrained(__UpperCamelCase			)

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

from transformers.configuration_utils import PretrainedConfig


a													=			logging.getLogger(__name__)




class       _A				(		__lowercase     ):
		__a					    =       """masked_bert"""






		def __init__(    self						,		_SCREAMING_SNAKE_CASE=3_0522						,		_SCREAMING_SNAKE_CASE=768						,		_SCREAMING_SNAKE_CASE=12						,		_SCREAMING_SNAKE_CASE=12						,		_SCREAMING_SNAKE_CASE=3072						,		_SCREAMING_SNAKE_CASE="gelu"						,		_SCREAMING_SNAKE_CASE=0.1						,		_SCREAMING_SNAKE_CASE=0.1						,		_SCREAMING_SNAKE_CASE=512						,		_SCREAMING_SNAKE_CASE=2						,		_SCREAMING_SNAKE_CASE=0.02						,		_SCREAMING_SNAKE_CASE=1e-12						,		_SCREAMING_SNAKE_CASE=0						,		_SCREAMING_SNAKE_CASE="topK"						,		_SCREAMING_SNAKE_CASE="constant"						,		_SCREAMING_SNAKE_CASE=0.0						,		**_SCREAMING_SNAKE_CASE						,		):
								super().__init__(pad_token_id=_SCREAMING_SNAKE_CASE						,		**_SCREAMING_SNAKE_CASE			)

								_UpperCAmelCase      =			vocab_size
								_UpperCAmelCase      =			hidden_size
								_UpperCAmelCase      =			num_hidden_layers
								_UpperCAmelCase      =			num_attention_heads
								_UpperCAmelCase      =			hidden_act
								_UpperCAmelCase      =			intermediate_size
								_UpperCAmelCase      =			hidden_dropout_prob
								_UpperCAmelCase      =			attention_probs_dropout_prob
								_UpperCAmelCase      =			max_position_embeddings
								_UpperCAmelCase      =			type_vocab_size
								_UpperCAmelCase      =			initializer_range
								_UpperCAmelCase      =			layer_norm_eps
								_UpperCAmelCase      =			pruning_method
								_UpperCAmelCase      =			mask_init
								_UpperCAmelCase      =			mask_scale