


import itertools
import random
import unittest

import numpy as np

from transformers import is_speech_available
from transformers.testing_utils import require_torch, require_torchaudio

from ...test_sequence_feature_extraction_common import SequenceFeatureExtractionTestMixin


if is_speech_available():
    from transformers import SpeechaTextFeatureExtractor

lowerCAmelCase__      		= random.Random()
def 							_UpperCAmelCase				(UpperCamelCase__     :  Union[str, Any]				,							UpperCamelCase__     :  Optional[int]=1.0				,							UpperCamelCase__     :  Optional[Any]=None				,							UpperCamelCase__     :  Optional[Any]=None						):
       if rng is None:
              _A      :       Dict				    = global_rng

       _A      :       Tuple				    = []
       for batch_idx in range(shape[0]						):
              values.append([]						)
              for _ in range(shape[1]						):
                     values[-1].append(rng.random() * scale						)

       return values







@require_torch
@require_torchaudio
class      lowerCAmelCase__       (				unittest.TestCase):




     '''simple docstring'''


     def __init__(						self ,						__lowerCamelCase ,						__lowerCamelCase=7 ,						__lowerCamelCase=4_0_0 ,						__lowerCamelCase=2_0_0_0 ,						__lowerCamelCase=2_4 ,						__lowerCamelCase=2_4 ,						__lowerCamelCase=0.0 ,						__lowerCamelCase=1_6_0_0_0 ,						__lowerCamelCase=True ,						__lowerCamelCase=True ,						)			->				Tuple:
            _A      :       Tuple				    = parent
            _A      :       Any				    = batch_size
            _A      :       List[Any]				    = min_seq_length
            _A      :       List[Any]				    = max_seq_length
            _A      :       int				    = (self.max_seq_length - self.min_seq_length) // (self.batch_size - 1)
            _A      :       Optional[Any]				    = feature_size
            _A      :       List[Any]				    = num_mel_bins
            _A      :       Optional[int]				    = padding_value
            _A      :       List[Any]				    = sampling_rate
            _A      :       List[Any]				    = return_attention_mask
            _A      :       List[str]				    = do_normalize


     def  _lowerCamelCase (						self)			->				List[Any]:
            return {
                "feature_size": self.feature_size,
                "num_mel_bins": self.num_mel_bins,
                "padding_value": self.padding_value,
                "sampling_rate": self.sampling_rate,
                "return_attention_mask": self.return_attention_mask,
                "do_normalize": self.do_normalize,
            }


     def  _lowerCamelCase (						self ,						__lowerCamelCase=False ,						__lowerCamelCase=False)			->				Union[str, Any]:
            def _flatten(__lowerCamelCase):
                   return list(itertools.chain(*__lowerCamelCase))

            if equal_length:
                   _A      :       List[Any]				    = [floats_list((self.max_seq_length, self.feature_size)) for _ in range(self.batch_size)]
            else:
                   # make sure that inputs increase in size
                   _A      :       List[Any]				    = [
                       floats_list((x, self.feature_size))
                       for x in range(self.min_seq_length ,						self.max_seq_length ,						self.seq_length_diff)
                   ]
            if numpify:
                   _A      :       str				    = [np.asarray(__lowerCamelCase) for x in speech_inputs]
            return speech_inputs







@require_torch
@require_torchaudio
class      lowerCAmelCase__       (				a     ,    unittest.TestCase):




     '''simple docstring'''
     __SCREAMING_SNAKE_CASE  			= SpeechaTextFeatureExtractor if is_speech_available() else None


     def  _lowerCamelCase (						self)			->				Any:
            _A      :       Dict				    = SpeechaTextFeatureExtractionTester(self)


     def  _lowerCamelCase (						self ,						__lowerCamelCase)			->				Any:
            self.assertTrue(np.all(np.mean(__lowerCamelCase ,						axis=0) < 1e-3))
            self.assertTrue(np.all(np.abs(np.var(__lowerCamelCase ,						axis=0) - 1) < 1e-3))


     def  _lowerCamelCase (						self)			->				Dict:
            # Tests that all call wrap to encode_plus and batch_encode_plus
            _A      :       List[str]				    = self.feature_extraction_class(**self.feat_extract_tester.prepare_feat_extract_dict())
            # create three inputs of length 800, 1000, and 1200
            _A      :       List[str]				    = [floats_list((1, x))[0] for x in range(8_0_0 ,						1_4_0_0 ,						2_0_0)]
            _A      :       Any				    = [np.asarray(__lowerCamelCase) for speech_input in speech_inputs]

            # Test feature size
            _A      :       List[Any]				    = feature_extractor(__lowerCamelCase ,						padding=__lowerCamelCase ,						return_tensors="np").input_features
            self.assertTrue(input_features.ndim == 3)
            self.assertTrue(input_features.shape[-1] == feature_extractor.feature_size)

            # Test not batched input
            _A      :       Optional[int]				    = feature_extractor(speech_inputs[0] ,						return_tensors="np").input_features
            _A      :       List[Any]				    = feature_extractor(np_speech_inputs[0] ,						return_tensors="np").input_features
            self.assertTrue(np.allclose(__lowerCamelCase ,						__lowerCamelCase ,						atol=1e-3))

            # Test batched
            _A      :       Optional[int]				    = feature_extractor(__lowerCamelCase ,						return_tensors="np").input_features
            _A      :       Optional[int]				    = feature_extractor(__lowerCamelCase ,						return_tensors="np").input_features
            for enc_seq_a, enc_seq_a in zip(__lowerCamelCase ,						__lowerCamelCase):
                   self.assertTrue(np.allclose(__lowerCamelCase ,						__lowerCamelCase ,						atol=1e-3))

            # Test 2-D numpy arrays are batched.
            _A      :       int				    = [floats_list((1, x))[0] for x in (8_0_0, 8_0_0, 8_0_0)]
            _A      :       Optional[Any]				    = np.asarray(__lowerCamelCase)
            _A      :       Dict				    = feature_extractor(__lowerCamelCase ,						return_tensors="np").input_features
            _A      :       Union[str, Any]				    = feature_extractor(__lowerCamelCase ,						return_tensors="np").input_features
            for enc_seq_a, enc_seq_a in zip(__lowerCamelCase ,						__lowerCamelCase):
                   self.assertTrue(np.allclose(__lowerCamelCase ,						__lowerCamelCase ,						atol=1e-3))


     def  _lowerCamelCase (						self)			->				Dict:
            _A      :       Optional[int]				    = self.feature_extraction_class(**self.feat_extract_tester.prepare_feat_extract_dict())
            _A      :       int				    = [floats_list((1, x))[0] for x in range(8_0_0 ,						1_4_0_0 ,						2_0_0)]

            _A      :       int				    = ["longest", "max_length", "do_not_pad"]
            _A      :       int				    = [None, 1_6, None]
            for max_length, padding in zip(__lowerCamelCase ,						__lowerCamelCase):
                   _A      :       Optional[Any]				    = feature_extractor(
                       __lowerCamelCase ,						padding=__lowerCamelCase ,						max_length=__lowerCamelCase ,						return_attention_mask=__lowerCamelCase)
                   _A      :       Union[str, Any]				    = inputs.input_features
                   _A      :       int				    = inputs.attention_mask
                   _A      :       List[str]				    = [np.sum(__lowerCamelCase) for x in attention_mask]

                   self._check_zero_mean_unit_variance(input_features[0][: fbank_feat_lengths[0]])
                   self._check_zero_mean_unit_variance(input_features[1][: fbank_feat_lengths[1]])
                   self._check_zero_mean_unit_variance(input_features[2][: fbank_feat_lengths[2]])


     def  _lowerCamelCase (						self)			->				Optional[int]:
            _A      :       Tuple				    = self.feature_extraction_class(**self.feat_extract_tester.prepare_feat_extract_dict())
            _A      :       int				    = [floats_list((1, x))[0] for x in range(8_0_0 ,						1_4_0_0 ,						2_0_0)]

            _A      :       Any				    = ["longest", "max_length", "do_not_pad"]
            _A      :       str				    = [None, 1_6, None]
            for max_length, padding in zip(__lowerCamelCase ,						__lowerCamelCase):
                   _A      :       Any				    = feature_extractor(
                       __lowerCamelCase ,						max_length=__lowerCamelCase ,						padding=__lowerCamelCase ,						return_tensors="np" ,						return_attention_mask=__lowerCamelCase)
                   _A      :       Dict				    = inputs.input_features
                   _A      :       str				    = inputs.attention_mask
                   _A      :       int				    = [np.sum(__lowerCamelCase) for x in attention_mask]

                   self._check_zero_mean_unit_variance(input_features[0][: fbank_feat_lengths[0]])
                   self.assertTrue(input_features[0][fbank_feat_lengths[0] :].sum() < 1e-6)
                   self._check_zero_mean_unit_variance(input_features[1][: fbank_feat_lengths[1]])
                   self.assertTrue(input_features[0][fbank_feat_lengths[1] :].sum() < 1e-6)
                   self._check_zero_mean_unit_variance(input_features[2][: fbank_feat_lengths[2]])


     def  _lowerCamelCase (						self)			->				Dict:
            _A      :       Tuple				    = self.feature_extraction_class(**self.feat_extract_tester.prepare_feat_extract_dict())
            _A      :       Optional[int]				    = [floats_list((1, x))[0] for x in range(8_0_0 ,						1_4_0_0 ,						2_0_0)]
            _A      :       Tuple				    = feature_extractor(
                __lowerCamelCase ,						padding="max_length" ,						max_length=4 ,						truncation=__lowerCamelCase ,						return_tensors="np" ,						return_attention_mask=__lowerCamelCase ,						)
            _A      :       Tuple				    = inputs.input_features
            _A      :       Optional[int]				    = inputs.attention_mask
            _A      :       Optional[Any]				    = np.sum(attention_mask == 1 ,						axis=1)

            self._check_zero_mean_unit_variance(input_features[0, : fbank_feat_lengths[0]])
            self._check_zero_mean_unit_variance(input_features[1])
            self._check_zero_mean_unit_variance(input_features[2])


     def  _lowerCamelCase (						self)			->				Dict:
            _A      :       Tuple				    = self.feature_extraction_class(**self.feat_extract_tester.prepare_feat_extract_dict())
            _A      :       Union[str, Any]				    = [floats_list((1, x))[0] for x in range(8_0_0 ,						1_4_0_0 ,						2_0_0)]
            _A      :       Optional[int]				    = feature_extractor(
                __lowerCamelCase ,						padding="longest" ,						max_length=4 ,						truncation=__lowerCamelCase ,						return_tensors="np" ,						return_attention_mask=__lowerCamelCase ,						)
            _A      :       List[Any]				    = inputs.input_features
            _A      :       int				    = inputs.attention_mask
            _A      :       Tuple				    = np.sum(attention_mask == 1 ,						axis=1)

            self._check_zero_mean_unit_variance(input_features[0, : fbank_feat_lengths[0]])
            self._check_zero_mean_unit_variance(input_features[1, : fbank_feat_lengths[1]])
            self._check_zero_mean_unit_variance(input_features[2])

            # make sure that if max_length < longest -> then pad to max_length
            self.assertEqual(input_features.shape ,						(3, 4, 2_4))

            _A      :       List[str]				    = [floats_list((1, x))[0] for x in range(8_0_0 ,						1_4_0_0 ,						2_0_0)]
            _A      :       List[Any]				    = feature_extractor(
                __lowerCamelCase ,						padding="longest" ,						max_length=1_6 ,						truncation=__lowerCamelCase ,						return_tensors="np" ,						return_attention_mask=__lowerCamelCase ,						)
            _A      :       Optional[int]				    = inputs.input_features
            _A      :       Tuple				    = inputs.attention_mask
            _A      :       List[str]				    = np.sum(attention_mask == 1 ,						axis=1)

            self._check_zero_mean_unit_variance(input_features[0, : fbank_feat_lengths[0]])
            self._check_zero_mean_unit_variance(input_features[1, : fbank_feat_lengths[1]])
            self._check_zero_mean_unit_variance(input_features[2])

            # make sure that if max_length < longest -> then pad to max_length
            self.assertEqual(input_features.shape ,						(3, 6, 2_4))


     def  _lowerCamelCase (						self)			->				str:
            import torch

            _A      :       Tuple				    = self.feature_extraction_class(**self.feat_extract_tester.prepare_feat_extract_dict())
            _A      :       str				    = np.random.rand(1_0_0 ,						3_2).astype(np.floataa)
            _A      :       Tuple				    = np_speech_inputs.tolist()

            for inputs in [py_speech_inputs, np_speech_inputs]:
                   _A      :       Dict				    = feature_extractor.pad([{"input_features": inputs}] ,						return_tensors="np")
                   self.assertTrue(np_processed.input_features.dtype == np.floataa)
                   _A      :       Dict				    = feature_extractor.pad([{"input_features": inputs}] ,						return_tensors="pt")
                   self.assertTrue(pt_processed.input_features.dtype == torch.floataa)


     def  _lowerCamelCase (						self ,						__lowerCamelCase)			->				str:
            from datasets import load_dataset

            _A      :       Union[str, Any]				    = load_dataset("hf-internal-testing/librispeech_asr_dummy" ,						"clean" ,						split="validation")
            # automatic decoding with librispeech
            _A      :       Dict				    = ds.sort("id").select(range(__lowerCamelCase))[:num_samples]["audio"]

            return [x["array"] for x in speech_samples]


     def  _lowerCamelCase (						self)			->				Any:
            # fmt: off
            _A      :       Dict				    = np.array([
                -1.5_7_4_5, -1.7_7_1_3, -1.7_0_2_0, -1.6_0_6_9, -1.2_2_5_0, -1.1_1_0_5, -0.9_0_7_2, -0.8_2_4_1,
                -1.2_3_1_0, -0.8_0_9_8, -0.3_3_2_0, -0.4_1_0_1, -0.7_9_8_5, -0.4_9_9_6, -0.8_2_1_3, -0.9_1_2_8,
                -1.0_4_2_0, -1.1_2_8_6, -1.0_4_4_0, -0.7_9_9_9, -0.8_4_0_5, -1.2_2_7_5, -1.5_4_4_3, -1.4_6_2_5,
            ])
            # fmt: on

            _A      :       Union[str, Any]				    = self._load_datasamples(1)
            _A      :       Any				    = self.feature_extraction_class(**self.feat_extract_tester.prepare_feat_extract_dict())
            _A      :       Tuple				    = feature_extractor(__lowerCamelCase ,						return_tensors="pt").input_features
            self.assertEquals(input_features.shape ,						(1, 5_8_4, 2_4))
            self.assertTrue(np.allclose(input_features[0, 0, :3_0] ,						__lowerCamelCase ,						atol=1e-4))




import copy
import tempfile
import unittest

from huggingface_hub import HfFolder, delete_repo
from parameterized import parameterized
from requests.exceptions import HTTPError

from transformers import AutoConfig, GenerationConfig
from transformers.testing_utils import TOKEN, USER, is_staging_test







class      lowerCAmelCase__       (				unittest.TestCase):




     '''simple docstring'''


     @parameterized.expand([(None,), ("foo.json",)])
     def  _lowerCamelCase (						self ,						__lowerCamelCase)			->				List[str]:
            _A      :       str				    = GenerationConfig(
                do_sample=__lowerCamelCase ,						temperature=0.7 ,						length_penalty=1.0 ,						bad_words_ids=[[1, 2, 3], [4, 5]] ,						)
            with tempfile.TemporaryDirectory() as tmp_dir:
                   config.save_pretrained(__lowerCamelCase ,						config_name=__lowerCamelCase)
                   _A      :       Tuple				    = GenerationConfig.from_pretrained(__lowerCamelCase ,						config_name=__lowerCamelCase)

            # Checks parameters that were specified
            self.assertEqual(loaded_config.do_sample ,						__lowerCamelCase)
            self.assertEqual(loaded_config.temperature ,						0.7)
            self.assertEqual(loaded_config.length_penalty ,						1.0)
            self.assertEqual(loaded_config.bad_words_ids ,						[[1, 2, 3], [4, 5]])

            # Checks parameters that were not specified (defaults)
            self.assertEqual(loaded_config.top_k ,						5_0)
            self.assertEqual(loaded_config.max_length ,						2_0)
            self.assertEqual(loaded_config.max_time ,						__lowerCamelCase)


     def  _lowerCamelCase (						self)			->				Optional[int]:
            _A      :       Optional[int]				    = AutoConfig.from_pretrained("gpt2")
            _A      :       int				    = GenerationConfig.from_model_config(__lowerCamelCase)
            _A      :       List[Any]				    = GenerationConfig()

            # The generation config has loaded a few non-default parameters from the model config
            self.assertNotEqual(__lowerCamelCase ,						__lowerCamelCase)

            # One of those parameters is eos_token_id -- check if it matches
            self.assertNotEqual(generation_config_from_model.eos_token_id ,						default_generation_config.eos_token_id)
            self.assertEqual(generation_config_from_model.eos_token_id ,						model_config.eos_token_id)


     def  _lowerCamelCase (						self)			->				Optional[Any]:
            _A      :       Optional[Any]				    = GenerationConfig()
            _A      :       List[Any]				    = {
                "max_new_tokens": 1_0_2_4,
                "foo": "bar",
            }
            _A      :       List[str]				    = copy.deepcopy(__lowerCamelCase)
            _A      :       int				    = generation_config.update(**__lowerCamelCase)

            # update_kwargs was not modified (no side effects)
            self.assertEqual(__lowerCamelCase ,						__lowerCamelCase)

            # update_kwargs was used to update the config on valid attributes
            self.assertEqual(generation_config.max_new_tokens ,						1_0_2_4)

            # `.update()` returns a dictionary of unused kwargs
            self.assertEqual(__lowerCamelCase ,						{"foo": "bar"})


     def  _lowerCamelCase (						self)			->				Any:
            _A      :       int				    = GenerationConfig()
            _A      :       int				    = "bar"

            with tempfile.TemporaryDirectory("test-generation-config") as tmp_dir:
                   generation_config.save_pretrained(__lowerCamelCase)

                   _A      :       Any				    = GenerationConfig.from_pretrained(__lowerCamelCase)
            # update_kwargs was used to update the config on valid attributes
            self.assertEqual(new_config.foo ,						"bar")

            _A      :       Optional[Any]				    = GenerationConfig.from_model_config(__lowerCamelCase)
            assert not hasattr(__lowerCamelCase ,						"foo")  # no new kwargs should be initialized if from config


     def  _lowerCamelCase (						self)			->				List[str]:
            _A      :       Union[str, Any]				    = GenerationConfig()
            self.assertEqual(default_config.temperature ,						1.0)
            self.assertEqual(default_config.do_sample ,						__lowerCamelCase)
            self.assertEqual(default_config.num_beams ,						1)

            _A      :       Optional[int]				    = GenerationConfig(
                do_sample=__lowerCamelCase ,						temperature=0.7 ,						length_penalty=1.0 ,						bad_words_ids=[[1, 2, 3], [4, 5]] ,						)
            self.assertEqual(config.temperature ,						0.7)
            self.assertEqual(config.do_sample ,						__lowerCamelCase)
            self.assertEqual(config.num_beams ,						1)

            with tempfile.TemporaryDirectory() as tmp_dir:
                   config.save_pretrained(__lowerCamelCase)
                   _A      :       Optional[int]				    = GenerationConfig.from_pretrained(__lowerCamelCase ,						temperature=1.0)

            self.assertEqual(loaded_config.temperature ,						1.0)
            self.assertEqual(loaded_config.do_sample ,						__lowerCamelCase)
            self.assertEqual(loaded_config.num_beams ,						1)  # default value







@is_staging_test
class      lowerCAmelCase__       (				unittest.TestCase):




     '''simple docstring'''


     @classmethod
     def  _lowerCamelCase (						cls)			->				Optional[int]:
            _A      :       Dict				    = TOKEN
            HfFolder.save_token(__lowerCamelCase)


     @classmethod
     def  _lowerCamelCase (						cls)			->				List[Any]:
            try:
                   delete_repo(token=cls._token ,						repo_id="test-generation-config")
            except HTTPError:
                   pass

            try:
                   delete_repo(token=cls._token ,						repo_id="valid_org/test-generation-config-org")
            except HTTPError:
                   pass


     def  _lowerCamelCase (						self)			->				Any:
            _A      :       Optional[int]				    = GenerationConfig(
                do_sample=__lowerCamelCase ,						temperature=0.7 ,						length_penalty=1.0 ,						)
            config.push_to_hub("test-generation-config" ,						use_auth_token=self._token)

            _A      :       Union[str, Any]				    = GenerationConfig.from_pretrained(F"{USER}/test-generation-config")
            for k, v in config.to_dict().items():
                   if k != "transformers_version":
                          self.assertEqual(__lowerCamelCase ,						getattr(__lowerCamelCase ,						__lowerCamelCase))

        # Reset repo
            delete_repo(token=self._token ,						repo_id="test-generation-config")

            # Push to hub via save_pretrained
            with tempfile.TemporaryDirectory() as tmp_dir:
                   config.save_pretrained(
                       __lowerCamelCase ,						repo_id="test-generation-config" ,						push_to_hub=__lowerCamelCase ,						use_auth_token=self._token)

            _A      :       Optional[Any]				    = GenerationConfig.from_pretrained(F"{USER}/test-generation-config")
            for k, v in config.to_dict().items():
                   if k != "transformers_version":
                          self.assertEqual(__lowerCamelCase ,						getattr(__lowerCamelCase ,						__lowerCamelCase))


     def  _lowerCamelCase (						self)			->				Union[str, Any]:
            _A      :       Union[str, Any]				    = GenerationConfig(
                do_sample=__lowerCamelCase ,						temperature=0.7 ,						length_penalty=1.0 ,						)
            config.push_to_hub("valid_org/test-generation-config-org" ,						use_auth_token=self._token)

            _A      :       int				    = GenerationConfig.from_pretrained("valid_org/test-generation-config-org")
            for k, v in config.to_dict().items():
                   if k != "transformers_version":
                          self.assertEqual(__lowerCamelCase ,						getattr(__lowerCamelCase ,						__lowerCamelCase))

        # Reset repo
            delete_repo(token=self._token ,						repo_id="valid_org/test-generation-config-org")

            # Push to hub via save_pretrained
            with tempfile.TemporaryDirectory() as tmp_dir:
                   config.save_pretrained(
                       __lowerCamelCase ,						repo_id="valid_org/test-generation-config-org" ,						push_to_hub=__lowerCamelCase ,						use_auth_token=self._token)

            _A      :       Optional[int]				    = GenerationConfig.from_pretrained("valid_org/test-generation-config-org")
            for k, v in config.to_dict().items():
                   if k != "transformers_version":
                          self.assertEqual(__lowerCamelCase ,						getattr(__lowerCamelCase ,						__lowerCamelCase))
