



'''simple docstring'''





import importlib
import json
import os
from collections import OrderedDict
from typing import Dict, Optional, Union

# Build the list of all feature extractors
from ...configuration_utils import PretrainedConfig
from ...dynamic_module_utils import get_class_from_dynamic_module, resolve_trust_remote_code
from ...feature_extraction_utils import FeatureExtractionMixin
from ...utils import CONFIG_NAME, FEATURE_EXTRACTOR_NAME, get_file_from_repo, logging
from .auto_factory import _LazyAutoMapping
from .configuration_auto import (
    CONFIG_MAPPING_NAMES,
    AutoConfig,
    model_type_to_module_name,
    replace_list_option_in_docstrings,
)


_lowerCAmelCase      						=	logging.get_logger(__name__)

_lowerCAmelCase      						=	OrderedDict(
    [
        ('''audio-spectrogram-transformer''', '''ASTFeatureExtractor'''),
        ('''beit''', '''BeitFeatureExtractor'''),
        ('''chinese_clip''', '''ChineseCLIPFeatureExtractor'''),
        ('''clap''', '''ClapFeatureExtractor'''),
        ('''clip''', '''CLIPFeatureExtractor'''),
        ('''clipseg''', '''ViTFeatureExtractor'''),
        ('''conditional_detr''', '''ConditionalDetrFeatureExtractor'''),
        ('''convnext''', '''ConvNextFeatureExtractor'''),
        ('''cvt''', '''ConvNextFeatureExtractor'''),
        ('''data2vec-audio''', '''Wav2Vec2FeatureExtractor'''),
        ('''data2vec-vision''', '''BeitFeatureExtractor'''),
        ('''deformable_detr''', '''DeformableDetrFeatureExtractor'''),
        ('''deit''', '''DeiTFeatureExtractor'''),
        ('''detr''', '''DetrFeatureExtractor'''),
        ('''dinat''', '''ViTFeatureExtractor'''),
        ('''donut-swin''', '''DonutFeatureExtractor'''),
        ('''dpt''', '''DPTFeatureExtractor'''),
        ('''encodec''', '''EncodecFeatureExtractor'''),
        ('''flava''', '''FlavaFeatureExtractor'''),
        ('''glpn''', '''GLPNFeatureExtractor'''),
        ('''groupvit''', '''CLIPFeatureExtractor'''),
        ('''hubert''', '''Wav2Vec2FeatureExtractor'''),
        ('''imagegpt''', '''ImageGPTFeatureExtractor'''),
        ('''layoutlmv2''', '''LayoutLMv2FeatureExtractor'''),
        ('''layoutlmv3''', '''LayoutLMv3FeatureExtractor'''),
        ('''levit''', '''LevitFeatureExtractor'''),
        ('''maskformer''', '''MaskFormerFeatureExtractor'''),
        ('''mctct''', '''MCTCTFeatureExtractor'''),
        ('''mobilenet_v1''', '''MobileNetV1FeatureExtractor'''),
        ('''mobilenet_v2''', '''MobileNetV2FeatureExtractor'''),
        ('''mobilevit''', '''MobileViTFeatureExtractor'''),
        ('''nat''', '''ViTFeatureExtractor'''),
        ('''owlvit''', '''OwlViTFeatureExtractor'''),
        ('''perceiver''', '''PerceiverFeatureExtractor'''),
        ('''poolformer''', '''PoolFormerFeatureExtractor'''),
        ('''regnet''', '''ConvNextFeatureExtractor'''),
        ('''resnet''', '''ConvNextFeatureExtractor'''),
        ('''segformer''', '''SegformerFeatureExtractor'''),
        ('''sew''', '''Wav2Vec2FeatureExtractor'''),
        ('''sew-d''', '''Wav2Vec2FeatureExtractor'''),
        ('''speech_to_text''', '''Speech2TextFeatureExtractor'''),
        ('''speecht5''', '''SpeechT5FeatureExtractor'''),
        ('''swiftformer''', '''ViTFeatureExtractor'''),
        ('''swin''', '''ViTFeatureExtractor'''),
        ('''swinv2''', '''ViTFeatureExtractor'''),
        ('''table-transformer''', '''DetrFeatureExtractor'''),
        ('''timesformer''', '''VideoMAEFeatureExtractor'''),
        ('''tvlt''', '''TvltFeatureExtractor'''),
        ('''unispeech''', '''Wav2Vec2FeatureExtractor'''),
        ('''unispeech-sat''', '''Wav2Vec2FeatureExtractor'''),
        ('''van''', '''ConvNextFeatureExtractor'''),
        ('''videomae''', '''VideoMAEFeatureExtractor'''),
        ('''vilt''', '''ViltFeatureExtractor'''),
        ('''vit''', '''ViTFeatureExtractor'''),
        ('''vit_mae''', '''ViTFeatureExtractor'''),
        ('''vit_msn''', '''ViTFeatureExtractor'''),
        ('''wav2vec2''', '''Wav2Vec2FeatureExtractor'''),
        ('''wav2vec2-conformer''', '''Wav2Vec2FeatureExtractor'''),
        ('''wavlm''', '''Wav2Vec2FeatureExtractor'''),
        ('''whisper''', '''WhisperFeatureExtractor'''),
        ('''xclip''', '''CLIPFeatureExtractor'''),
        ('''yolos''', '''YolosFeatureExtractor'''),
    ]
)

_lowerCAmelCase      						=	_LazyAutoMapping(CONFIG_MAPPING_NAMES, FEATURE_EXTRACTOR_MAPPING_NAMES)
def    _SCREAMING_SNAKE_CASE  (       UpperCamelCase			):



    """simple docstring"""





    for module_name, extractors in FEATURE_EXTRACTOR_MAPPING_NAMES.items():
        if class_name in extractors:
            lowerCAmelCase__ :  Tuple							      =					model_type_to_module_name(__UpperCamelCase			)

            lowerCAmelCase__ :  List[Any]							      =					importlib.import_module(f""".{module_name}"""							,    """transformers.models"""			)
            try:
                return getattr(__UpperCamelCase							,    __UpperCamelCase			)
            except AttributeError:
                continue

    for _, extractor in FEATURE_EXTRACTOR_MAPPING._extra_content.items():
        if getattr(__UpperCamelCase							,    """__name__"""							,    __UpperCamelCase			) == class_name:
            return extractor

        # We did not fine the class, but maybe it's because a dep is missing. In that case, the class will be in the main
        # init and we return the proper dummy to get an appropriate error message.
    lowerCAmelCase__ :  Dict							      =					importlib.import_module("""transformers"""			)
    if hasattr(__UpperCamelCase							,    __UpperCamelCase			):
        return getattr(__UpperCamelCase							,    __UpperCamelCase			)

    return None
def    _SCREAMING_SNAKE_CASE  (       UpperCamelCase							,    UpperCamelCase = None							,    UpperCamelCase = False							,    UpperCamelCase = False							,    UpperCamelCase = None							,    UpperCamelCase = None							,    UpperCamelCase = None							,    UpperCamelCase = False							,    **UpperCamelCase							,    ):



    """simple docstring"""





    lowerCAmelCase__ :  Dict							      =					get_file_from_repo(
        __UpperCamelCase							,    __UpperCamelCase							,    cache_dir=__UpperCamelCase							,    force_download=__UpperCamelCase							,    resume_download=__UpperCamelCase							,    proxies=__UpperCamelCase							,    use_auth_token=__UpperCamelCase							,    revision=__UpperCamelCase							,    local_files_only=__UpperCamelCase							,    )
    if resolved_config_file is None:
        logger.info(
            """Could not locate the feature extractor configuration file, will try to use the model config instead."""			)
        return {}

    with open(__UpperCamelCase							,    encoding="""utf-8"""			) as reader:
        return json.load(__UpperCamelCase			)






class        lowerCAmelCase_:
  '''simple docstring'''




  def __init__(    self      )    ->		List[Any]:
      raise EnvironmentError(
          """AutoFeatureExtractor is designed to be instantiated """
          """using the `AutoFeatureExtractor.from_pretrained(pretrained_model_name_or_path)` method."""      )




  @classmethod
  @replace_list_option_in_docstrings(_lowercase      )
  def 							UpperCAmelCase_	(    cls  ,__UpperCAmelCase  ,**__UpperCAmelCase      )    ->		Union[str, Any]:
      lowerCAmelCase__ :  Optional[int]							      =					kwargs.pop("""config"""  ,_lowercase      )
      lowerCAmelCase__ :  Any							      =					kwargs.pop("""trust_remote_code"""  ,_lowercase      )
      lowerCAmelCase__ :  List[str]							      =					True

      lowerCAmelCase__      ,   lowerCAmelCase__ :  str							      =					FeatureExtractionMixin.get_feature_extractor_dict(_lowercase  ,**_lowercase      )
      lowerCAmelCase__ :  int							      =					config_dict.get("""feature_extractor_type"""  ,_lowercase      )
      lowerCAmelCase__ :  List[Any]							      =					None
      if "AutoFeatureExtractor" in config_dict.get("""auto_map"""  ,{}      ):
          lowerCAmelCase__ :  Union[str, Any]							      =					config_dict["""auto_map"""]["""AutoFeatureExtractor"""]

      # If we don't find the feature extractor class in the feature extractor config, let's try the model config.
      if feature_extractor_class is None and feature_extractor_auto_map is None:
          if not isinstance(_lowercase  ,_lowercase      ):
              lowerCAmelCase__ :  Union[str, Any]							      =					AutoConfig.from_pretrained(_lowercase  ,**_lowercase      )
          # It could be in `config.feature_extractor_type``
          lowerCAmelCase__ :  Union[str, Any]							      =					getattr(_lowercase  ,"""feature_extractor_type"""  ,_lowercase      )
          if hasattr(_lowercase  ,"""auto_map"""      ) and "AutoFeatureExtractor" in config.auto_map:
              lowerCAmelCase__ :  Optional[Any]							      =					config.auto_map["""AutoFeatureExtractor"""]

      if feature_extractor_class is not None:
          lowerCAmelCase__ :  List[Any]							      =					feature_extractor_class_from_name(_lowercase      )

      lowerCAmelCase__ :  Union[str, Any]							      =					feature_extractor_auto_map is not None
      lowerCAmelCase__ :  List[str]							      =					feature_extractor_class is not None or type(_lowercase      ) in FEATURE_EXTRACTOR_MAPPING
      lowerCAmelCase__ :  Tuple							      =					resolve_trust_remote_code(
          _lowercase  ,_lowercase  ,_lowercase  ,_lowercase      )

      if has_remote_code and trust_remote_code:
          lowerCAmelCase__ :  int							      =					get_class_from_dynamic_module(
              _lowercase  ,_lowercase  ,**_lowercase      )
          lowerCAmelCase__ :  Dict							      =					kwargs.pop("""code_revision"""  ,_lowercase      )
          if os.path.isdir(_lowercase      ):
              feature_extractor_class.register_for_auto_class()
          return feature_extractor_class.from_dict(_lowercase  ,**_lowercase      )
      elif feature_extractor_class is not None:
          return feature_extractor_class.from_dict(_lowercase  ,**_lowercase      )
      # Last try: we use the FEATURE_EXTRACTOR_MAPPING.
      elif type(_lowercase      ) in FEATURE_EXTRACTOR_MAPPING:
          lowerCAmelCase__ :  Tuple							      =					FEATURE_EXTRACTOR_MAPPING[type(_lowercase      )]
          return feature_extractor_class.from_dict(_lowercase  ,**_lowercase      )

      raise ValueError(
          F"""Unrecognized feature extractor in {pretrained_model_name_or_path}. Should have a """
          F"""`feature_extractor_type` key in its {FEATURE_EXTRACTOR_NAME} of {CONFIG_NAME}, or one of the following """
          F"""`model_type` keys in its {CONFIG_NAME}: {', '.join(c for c in FEATURE_EXTRACTOR_MAPPING_NAMES.keys()      )}"""      )






  @staticmethod
  def 							UpperCAmelCase_	(    __UpperCAmelCase  ,__UpperCAmelCase      )    ->		Optional[Any]:
      FEATURE_EXTRACTOR_MAPPING.register(_lowercase  ,_lowercase      )



__lowerCamelCase			: List[Any]							   =		6_5521



def 	__SCREAMING_SNAKE_CASE  (					__UpperCamelCase    :       str	)							->					int:







  """simple docstring"""





  SCREAMING_SNAKE_CASE__										=      1
  SCREAMING_SNAKE_CASE__										=      0
  for plain_chr in plain_text:
    SCREAMING_SNAKE_CASE__										=      (a + ord(__UpperCamelCase	)) % MOD_ADLER
    SCREAMING_SNAKE_CASE__										=      (b + a) % MOD_ADLER
  return (b << 16) | a
