

"""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 							lowercase_					(     self							:    List[str])->       str:



						'''simple docstring'''


						__lowerCAmelCase:	List[str]   				=      mock.Mock()
						__lowerCAmelCase:	List[Any]   				=      5_0_0
						__lowerCAmelCase:	int   				=      {}
						__lowerCAmelCase:	int   				=      HTTPError
						__lowerCAmelCase:	Any   				=      {}

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




				def 							lowercase_					(     self							:    Union[str, Any])->       Optional[int]:



						'''simple docstring'''


						__lowerCAmelCase:	Optional[int]   				=      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 							lowercase_					(     cls							:    Optional[Any])->       List[str]:



						'''simple docstring'''


						__lowerCAmelCase:	Optional[Any]   				=      TOKEN
						HfFolder.save_token(UpperCamelCase__)

				@classmethod
				def 							lowercase_					(     cls							:    Dict)->       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 							lowercase_					(     self							:    Optional[int])->       Union[str, Any]:



						'''simple docstring'''


						__lowerCAmelCase:	Optional[int]   				=      WavaVecaFeatureExtractor.from_pretrained(UpperCamelCase__)
						feature_extractor.push_to_hub("test-feature-extractor"					,  use_auth_token=self._token)

						__lowerCAmelCase:	Optional[Any]   				=      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)

						__lowerCAmelCase:	str   				=      WavaVecaFeatureExtractor.from_pretrained(f"{USER}/test-feature-extractor")
						for k, v in feature_extractor.__dict__.items():
								self.assertEqual(UpperCamelCase__					,  getattr(UpperCamelCase__					,  UpperCamelCase__))

				def 							lowercase_					(     self							:    Optional[Any])->       Tuple:



						'''simple docstring'''


						__lowerCAmelCase:	str   				=      WavaVecaFeatureExtractor.from_pretrained(UpperCamelCase__)
						feature_extractor.push_to_hub("valid_org/test-feature-extractor"					,  use_auth_token=self._token)

						__lowerCAmelCase:	str   				=      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)

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




				def 							lowercase_					(     self							:    Optional[int])->       Any:



						'''simple docstring'''


						CustomFeatureExtractor.register_for_auto_class()
						__lowerCAmelCase:	List[str]   				=      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"}					,  )

						__lowerCAmelCase:	Optional[Any]   				=      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")





"""simple docstring"""


def    a__   (   __SCREAMING_SNAKE_CASE ,			__SCREAMING_SNAKE_CASE			)     ->     int:
		return int((input_a, input_a).count(0			) == 0			)






def    a__   (   )     ->     None:
		assert and_gate(0 ,			0			) == 0
		assert and_gate(0 ,			1			) == 0
		assert and_gate(1 ,			0			) == 0
		assert and_gate(1 ,			1			) == 1


if __name__ == "__main__":
			test_and_gate()
			print(and_gate(1, 0))
			print(and_gate(0, 0))
			print(and_gate(0, 1))
			print(and_gate(1, 1))


