


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 : Any		=				get_tests_dir('''fixtures''')
class 	lowerCamelCase_       (				unittest.TestCase				):



					'''simple docstring'''







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







								'''simple docstring'''

								__lowercase 					=   mock.Mock()
								__lowercase 					=   5_0_0
								__lowercase 					=   {}
								__lowercase 					=   HTTPError
								__lowercase 					=   {}

								# Download this model to make sure it's in the cache.
								__lowercase 					=   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=snake_case_						) as mock_head:
											__lowercase 					=   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]:







								'''simple docstring'''

								__lowercase 					=   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 A      (				cls						)   ->			Dict:







								'''simple docstring'''

								__lowercase 					=   TOKEN
								HfFolder.save_token(snake_case_						)






					@classmethod
					def A      (				cls						)   ->			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						)   ->			List[str]:







								'''simple docstring'''

								__lowercase 					=   WavaVecaFeatureExtractor.from_pretrained(snake_case_						)
								feature_extractor.push_to_hub('''test-feature-extractor''' ,       use_auth_token=self._token						)

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

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

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






					def A      (				self						)   ->			Dict:







								'''simple docstring'''

								__lowercase 					=   WavaVecaFeatureExtractor.from_pretrained(snake_case_						)
								feature_extractor.push_to_hub('''valid_org/test-feature-extractor''' ,       use_auth_token=self._token						)

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

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

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






					def A      (				self						)   ->			List[Any]:







								'''simple docstring'''

								CustomFeatureExtractor.register_for_auto_class()
								__lowercase 					=   CustomFeatureExtractor.from_pretrained(snake_case_						)

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

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

from diffusers import FlaxAutoencoderKL
from diffusers.utils import is_flax_available
from diffusers.utils.testing_utils import require_flax

from .test_modeling_common_flax import FlaxModelTesterMixin


if is_flax_available():
	import jax
@require_flax
class 	lowerCamelCase_       (				lowerCAmelCase__     ,     unittest.TestCase				):



					'''simple docstring'''







					__UpperCAmelCase            =				FlaxAutoencoderKL






					@property
					def A      (				self						)   ->			Optional[int]:







								'''simple docstring'''

								__lowercase 					=   4
								__lowercase 					=   3
								__lowercase 					=   (3_2, 3_2)

								__lowercase 					=   jax.random.PRNGKey(0						)
								__lowercase 					=   jax.random.uniform(snake_case_ ,       ((batch_size, num_channels) + sizes)						)

								return {"sample": image, "prng_key": prng_key}






					def A      (				self						)   ->			Any:







								'''simple docstring'''

								__lowercase 					=   {
								    '''block_out_channels''': [3_2, 6_4],
								    '''in_channels''': 3,
								    '''out_channels''': 3,
								    '''down_block_types''': ['''DownEncoderBlock2D''', '''DownEncoderBlock2D'''],
								    '''up_block_types''': ['''UpDecoderBlock2D''', '''UpDecoderBlock2D'''],
								    '''latent_channels''': 4,
								}
								__lowercase 					=   self.dummy_input
								return init_dict, inputs_dict


