





'''simple docstring'''


import json
import sys
import tempfile
import unittest
from pathlib import Path

import transformers
from transformers import (
    CONFIG_MAPPING,
    FEATURE_EXTRACTOR_MAPPING,
    AutoConfig,
    AutoFeatureExtractor,
    WavaVecaConfig,
    WavaVecaFeatureExtractor,
)
from transformers.testing_utils import DUMMY_UNKNOWN_IDENTIFIER, get_tests_dir


sys.path.append(str(Path(__file__).parent.parent.parent.parent / "utils"))

from test_module.custom_configuration import CustomConfig  # noqa E402
from test_module.custom_feature_extraction import CustomFeatureExtractor  # noqa E402


_SCREAMING_SNAKE_CASE									=				get_tests_dir("fixtures")
_SCREAMING_SNAKE_CASE									=				get_tests_dir("fixtures/dummy_feature_extractor_config.json")
_SCREAMING_SNAKE_CASE									=				get_tests_dir("fixtures/dummy-config.json")

class  lowerCAmelCase_		(		unittest.TestCase		):




 def 				_snake_case (						self		)     ->				Optional[int]:
     _lowerCAmelCase						      =   0




 def 				_snake_case (						self		)     ->				Optional[int]:
     _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-base-960h"		)
     self.assertIsInstance(_lowerCAmelCase      ,  _lowerCAmelCase		)




 def 				_snake_case (						self		)     ->				Optional[int]:
     _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained(_lowerCAmelCase		)
     self.assertIsInstance(_lowerCAmelCase      ,  _lowerCAmelCase		)




 def 				_snake_case (						self		)     ->				str:
     with tempfile.TemporaryDirectory() as tmpdirname:
         _lowerCAmelCase						      =   WavaVecaConfig()

         # remove feature_extractor_type to make sure config.json alone is enough to load feature processor locally
         _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained(_lowerCAmelCase		).to_dict()

         config_dict.pop("feature_extractor_type"		)
         _lowerCAmelCase						      =   WavaVecaFeatureExtractor(**_lowerCAmelCase		)

         # save in new folder
         model_config.save_pretrained(_lowerCAmelCase		)
         config.save_pretrained(_lowerCAmelCase		)

         _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained(_lowerCAmelCase		)

         # make sure private variable is not incorrectly saved
         _lowerCAmelCase						      =   json.loads(config.to_json_string()		)
         self.assertTrue("_processor_class" not in dict_as_saved		)

     self.assertIsInstance(_lowerCAmelCase      ,  _lowerCAmelCase		)




 def 				_snake_case (						self		)     ->				str:
     _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained(_lowerCAmelCase		)
     self.assertIsInstance(_lowerCAmelCase      ,  _lowerCAmelCase		)




 def 				_snake_case (						self		)     ->				Tuple:
     with self.assertRaisesRegex(
         _lowerCAmelCase      ,  "bert-base is not a local folder and is not a valid model identifier"		):
         _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained("bert-base"		)




 def 				_snake_case (						self		)     ->				Union[str, Any]:
     with self.assertRaisesRegex(
         _lowerCAmelCase      ,  r"aaaaaa is not a valid git identifier \(branch name, tag name or commit id\)"		):
         _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained(_lowerCAmelCase      ,  revision="aaaaaa"		)




 def 				_snake_case (						self		)     ->				Union[str, Any]:
     with self.assertRaisesRegex(
         _lowerCAmelCase      ,  "hf-internal-testing/config-no-model does not appear to have a file named preprocessor_config.json."      ,  ):
         _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained("hf-internal-testing/config-no-model"		)




 def 				_snake_case (						self		)     ->				Any:
     # If remote code is not set, we will time out when asking whether to load the model.
     with self.assertRaises(_lowerCAmelCase		):
         _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained(
             "hf-internal-testing/test_dynamic_feature_extractor"		)
     # If remote code is disabled, we can't load this config.
     with self.assertRaises(_lowerCAmelCase		):
         _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained(
             "hf-internal-testing/test_dynamic_feature_extractor"      ,  trust_remote_code=_lowerCAmelCase		)

     _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained(
         "hf-internal-testing/test_dynamic_feature_extractor"      ,  trust_remote_code=_lowerCAmelCase		)
     self.assertEqual(feature_extractor.__class__.__name__      ,  "NewFeatureExtractor"		)

     # Test feature extractor can be reloaded.
     with tempfile.TemporaryDirectory() as tmp_dir:
         feature_extractor.save_pretrained(_lowerCAmelCase		)
         _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained(_lowerCAmelCase      ,  trust_remote_code=_lowerCAmelCase		)
     self.assertEqual(reloaded_feature_extractor.__class__.__name__      ,  "NewFeatureExtractor"		)




 def 				_snake_case (						self		)     ->				Union[str, Any]:
     try:
         AutoConfig.register("custom"      ,  _lowerCAmelCase		)
         AutoFeatureExtractor.register(_lowerCAmelCase      ,  _lowerCAmelCase		)
         # Trying to register something existing in the Transformers library will raise an error
         with self.assertRaises(_lowerCAmelCase		):
             AutoFeatureExtractor.register(_lowerCAmelCase      ,  _lowerCAmelCase		)

         # Now that the config is registered, it can be used as any other config with the auto-API
         _lowerCAmelCase						      =   CustomFeatureExtractor.from_pretrained(_lowerCAmelCase		)
         with tempfile.TemporaryDirectory() as tmp_dir:
             feature_extractor.save_pretrained(_lowerCAmelCase		)
             _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained(_lowerCAmelCase		)
             self.assertIsInstance(_lowerCAmelCase      ,  _lowerCAmelCase		)

     finally:
         if "custom" in CONFIG_MAPPING._extra_content:
             del CONFIG_MAPPING._extra_content["custom"]
         if CustomConfig in FEATURE_EXTRACTOR_MAPPING._extra_content:
             del FEATURE_EXTRACTOR_MAPPING._extra_content[CustomConfig]





 def 				_snake_case (						self		)     ->				Optional[int]:

     class  lowerCAmelCase_		(		__magic_name__		):
      __lowerCamelCase    :				int								=       True

     try:
         AutoConfig.register("custom"      ,  _lowerCAmelCase		)
         AutoFeatureExtractor.register(_lowerCAmelCase      ,  _lowerCAmelCase		)
         # If remote code is not set, the default is to use local
         _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained(
             "hf-internal-testing/test_dynamic_feature_extractor"		)
         self.assertEqual(feature_extractor.__class__.__name__      ,  "NewFeatureExtractor"		)
         self.assertTrue(feature_extractor.is_local		)

         # If remote code is disabled, we load the local one.
         _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained(
             "hf-internal-testing/test_dynamic_feature_extractor"      ,  trust_remote_code=_lowerCAmelCase		)
         self.assertEqual(feature_extractor.__class__.__name__      ,  "NewFeatureExtractor"		)
         self.assertTrue(feature_extractor.is_local		)

         # If remote is enabled, we load from the Hub
         _lowerCAmelCase						      =   AutoFeatureExtractor.from_pretrained(
             "hf-internal-testing/test_dynamic_feature_extractor"      ,  trust_remote_code=_lowerCAmelCase		)
         self.assertEqual(feature_extractor.__class__.__name__      ,  "NewFeatureExtractor"		)
         self.assertTrue(not hasattr(_lowerCAmelCase      ,  "is_local"		)		)

     finally:
         if "custom" in CONFIG_MAPPING._extra_content:
             del CONFIG_MAPPING._extra_content["custom"]
         if CustomConfig in FEATURE_EXTRACTOR_MAPPING._extra_content:
             del FEATURE_EXTRACTOR_MAPPING._extra_content[CustomConfig]









'''simple docstring'''


from __future__ import annotations


def 						__a(SCREAMING_SNAKE_CASE_	:       list     ):



    '''simple docstring'''





    if not nums:
        raise ValueError("List is empty"     )
    return sum(SCREAMING_SNAKE_CASE_     ) / len(SCREAMING_SNAKE_CASE_     )


if __name__ == "__main__":
       import doctest

       doctest.testmod()


