'''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_:     Union[str, Any]  =get_tests_dir('fixtures')
SCREAMING_SNAKE_CASE_:     List[Any]  =get_tests_dir('fixtures/dummy_feature_extractor_config.json')
SCREAMING_SNAKE_CASE_:     Union[str, Any]  =get_tests_dir('fixtures/dummy-config.json')




class        __A      ( unittest.TestCase	):



    def 					_lowercase						(self    :    List[Any] ):
         UpperCAmelCase_           =   0



    def 					_lowercase						(self    :    Any ):
         UpperCAmelCase_           =   AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-base-960h" )
         self.assertIsInstance(__a   ,			__a )



    def 					_lowercase						(self    :    Any ):
         UpperCAmelCase_           =   AutoFeatureExtractor.from_pretrained(__a )
         self.assertIsInstance(__a   ,			__a )



    def 					_lowercase						(self    :    Dict ):
         with tempfile.TemporaryDirectory() as tmpdirname:
              UpperCAmelCase_           =   WavaVecaConfig()

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

              config_dict.pop("feature_extractor_type" )
              UpperCAmelCase_           =   WavaVecaFeatureExtractor(**__a )

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

              UpperCAmelCase_           =   AutoFeatureExtractor.from_pretrained(__a )

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

         self.assertIsInstance(__a   ,			__a )



    def 					_lowercase						(self    :    Dict ):
         UpperCAmelCase_           =   AutoFeatureExtractor.from_pretrained(__a )
         self.assertIsInstance(__a   ,			__a )



    def 					_lowercase						(self    :    Dict ):
         with self.assertRaisesRegex(
             __a   ,			"bert-base is not a local folder and is not a valid model identifier" ):
              UpperCAmelCase_           =   AutoFeatureExtractor.from_pretrained("bert-base" )



    def 					_lowercase						(self    :    List[str] ):
         with self.assertRaisesRegex(
             __a   ,			r"aaaaaa is not a valid git identifier \(branch name, tag name or commit id\)" ):
              UpperCAmelCase_           =   AutoFeatureExtractor.from_pretrained(__a   ,			revision="aaaaaa" )



    def 					_lowercase						(self    :    List[str] ):
         with self.assertRaisesRegex(
             __a   ,			"hf-internal-testing/config-no-model does not appear to have a file named preprocessor_config.json."   ,			):
              UpperCAmelCase_           =   AutoFeatureExtractor.from_pretrained("hf-internal-testing/config-no-model" )



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

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

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



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

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

         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 					_lowercase						(self    :    List[Any] ):




         class        __A      ( UpperCamelCase__	):
             a__       :						Optional[Any]          =  True

         try:
              AutoConfig.register("custom"   ,			__a )
              AutoFeatureExtractor.register(__a   ,			__a )
              # If remote code is not set, the default is to use local
              UpperCAmelCase_           =   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.
              UpperCAmelCase_           =   AutoFeatureExtractor.from_pretrained(
                  "hf-internal-testing/test_dynamic_feature_extractor"   ,			trust_remote_code=__a )
              self.assertEqual(feature_extractor.__class__.__name__   ,			"NewFeatureExtractor" )
              self.assertTrue(feature_extractor.is_local )

              # If remote is enabled, we load from the Hub
              UpperCAmelCase_           =   AutoFeatureExtractor.from_pretrained(
                  "hf-internal-testing/test_dynamic_feature_extractor"   ,			trust_remote_code=__a )
              self.assertEqual(feature_extractor.__class__.__name__   ,			"NewFeatureExtractor" )
              self.assertTrue(not hasattr(__a   ,			"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'''





def 	lowerCAmelCase_				(					snake_case_       : int					,    snake_case_       : int			)    ->      int:


     '''simple docstring'''




     return x if y == 0 else greatest_common_divisor(snake_case_					,    x % y			)





def 	lowerCAmelCase_				(					snake_case_       : int					,    snake_case_       : int			)    ->      int:


     '''simple docstring'''




     return (x * y) // greatest_common_divisor(snake_case_					,    snake_case_			)





def 	lowerCAmelCase_				(					snake_case_       : int = 20			)    ->      int:


     '''simple docstring'''




     UpperCAmelCase_           =   1
     for i in range(1					,    n + 1			):
          UpperCAmelCase_           =   lcm(snake_case_					,    snake_case_			)
     return g


if __name__ == "__main__":
    print(f"{solution() = }")




