
"""simple docstring"""







import inspect
import re
from hashlib import shaaaa
from typing import Dict, List

from .arrow import arrow
from .audiofolder import audiofolder
from .csv import csv
from .imagefolder import imagefolder
from .json import json
from .pandas import pandas
from .parquet import parquet
from .sql import sql  # noqa F401
from .text import text
def   __UpperCamelCase   (					SCREAMING_SNAKE_CASE )  ->     str:







							"""simple docstring"""


							__snake_case     			=       []
							for line in lines:
														__snake_case     			=       re.sub(r"#.*"							,    ""							,    SCREAMING_SNAKE_CASE )  # remove comments
														if line:
																					filtered_lines.append(SCREAMING_SNAKE_CASE )
							__snake_case     			=       "\n".join(SCREAMING_SNAKE_CASE )

							# Make a hash from all this code
							__snake_case     			=       full_str.encode("utf-8" )
							return shaaaa(SCREAMING_SNAKE_CASE ).hexdigest()


# get importable module names and hash for caching
_SCREAMING_SNAKE_CASE	       =      {
    """csv""": (csv.__name__, _hash_python_lines(inspect.getsource(csv).splitlines())),
    """json""": (json.__name__, _hash_python_lines(inspect.getsource(json).splitlines())),
    """pandas""": (pandas.__name__, _hash_python_lines(inspect.getsource(pandas).splitlines())),
    """parquet""": (parquet.__name__, _hash_python_lines(inspect.getsource(parquet).splitlines())),
    """arrow""": (arrow.__name__, _hash_python_lines(inspect.getsource(arrow).splitlines())),
    """text""": (text.__name__, _hash_python_lines(inspect.getsource(text).splitlines())),
    """imagefolder""": (imagefolder.__name__, _hash_python_lines(inspect.getsource(imagefolder).splitlines())),
    """audiofolder""": (audiofolder.__name__, _hash_python_lines(inspect.getsource(audiofolder).splitlines())),
}

# Used to infer the module to use based on the data files extensions
_SCREAMING_SNAKE_CASE	       =      {
    """.csv""": ("""csv""", {}),
    """.tsv""": ("""csv""", {"""sep""": """\t"""}),
    """.json""": ("""json""", {}),
    """.jsonl""": ("""json""", {}),
    """.parquet""": ("""parquet""", {}),
    """.arrow""": ("""arrow""", {}),
    """.txt""": ("""text""", {}),
}
_EXTENSION_TO_MODULE.update({ext: ("""imagefolder""", {}) for ext in imagefolder.ImageFolder.EXTENSIONS})
_EXTENSION_TO_MODULE.update({ext.upper(): ("""imagefolder""", {}) for ext in imagefolder.ImageFolder.EXTENSIONS})
_EXTENSION_TO_MODULE.update({ext: ("""audiofolder""", {}) for ext in audiofolder.AudioFolder.EXTENSIONS})
_EXTENSION_TO_MODULE.update({ext.upper(): ("""audiofolder""", {}) for ext in audiofolder.AudioFolder.EXTENSIONS})
_SCREAMING_SNAKE_CASE	       =      {"""imagefolder""", """audiofolder"""}

# Used to filter data files based on extensions given a module name
_SCREAMING_SNAKE_CASE	       =      {}
for _ext, (_module, _) in _EXTENSION_TO_MODULE.items():
		_MODULE_TO_EXTENSIONS.setdefault(_module, []).append(_ext)

_MODULE_TO_EXTENSIONS["imagefolder"].append(""".zip""")



_MODULE_TO_EXTENSIONS["audiofolder"].append(""".zip""")


"""simple docstring"""







import math

from ...configuration_utils import PretrainedConfig
from ...utils import logging


_SCREAMING_SNAKE_CASE	       =      logging.get_logger(__name__)

_SCREAMING_SNAKE_CASE	       =      {
    """facebook/data2vec-base-960h""": """https://huggingface.co/facebook/data2vec-audio-base-960h/resolve/main/config.json""",
    # See all Data2VecAudio models at https://huggingface.co/models?filter=data2vec-audio
}







class 							__magic_name__     (		lowercase__   ):
					_SCREAMING_SNAKE_CASE       :					Any     							=   'data2vec-audio'





					def __init__(				self   :							Any							,						snake_case_   :							Optional[Any]=32							,						snake_case_   :							Tuple=768							,						snake_case_   :							Optional[int]=12							,						snake_case_   :							str=12							,						snake_case_   :							int=3072							,						snake_case_   :							Tuple="gelu"							,						snake_case_   :							Optional[Any]=0.1							,						snake_case_   :							str=0.1							,						snake_case_   :							int=0.1							,						snake_case_   :							int=0.0							,						snake_case_   :							Optional[int]=0.1							,						snake_case_   :							Dict=0.1							,						snake_case_   :							Dict=0.02							,						snake_case_   :							Optional[int]=1e-5							,						snake_case_   :							Optional[Any]="gelu"							,						snake_case_   :							Tuple=(512, 512, 512, 512, 512, 512, 512)							,						snake_case_   :							int=(5, 2, 2, 2, 2, 2, 2)							,						snake_case_   :							Union[str, Any]=(10, 3, 3, 3, 3, 2, 2)							,						snake_case_   :							Optional[int]=False							,						snake_case_   :							int=16							,						snake_case_   :							List[Any]=19							,						snake_case_   :							str=5							,						snake_case_   :							List[Any]=0.05							,						snake_case_   :							Dict=10							,						snake_case_   :							Dict=2							,						snake_case_   :							Dict=0.0							,						snake_case_   :							Union[str, Any]=10							,						snake_case_   :							Optional[Any]=0							,						snake_case_   :							Optional[Any]="sum"							,						snake_case_   :							List[str]=False							,						snake_case_   :							List[Any]=False							,						snake_case_   :							Optional[int]=256							,						snake_case_   :							int=(512, 512, 512, 512, 1500)							,						snake_case_   :							List[Any]=(5, 3, 3, 1, 1)							,						snake_case_   :							Any=(1, 2, 3, 1, 1)							,						snake_case_   :							List[Any]=512							,						snake_case_   :							Optional[int]=0							,						snake_case_   :							Dict=1							,						snake_case_   :							List[str]=2							,						snake_case_   :							Optional[Any]=False							,						snake_case_   :							Optional[Any]=3							,						snake_case_   :							Tuple=2							,						snake_case_   :							Any=3							,						snake_case_   :							Union[str, Any]=None							,						**snake_case_   :							int							,						):
												super().__init__(**snake_case_							,						pad_token_id=snake_case_							,						bos_token_id=snake_case_							,						eos_token_id=snake_case_    )
												__snake_case     			=       hidden_size
												__snake_case     			=       feat_extract_activation
												__snake_case     			=       list(snake_case_    )
												__snake_case     			=       list(snake_case_    )
												__snake_case     			=       list(snake_case_    )
												__snake_case     			=       conv_bias
												__snake_case     			=       num_conv_pos_embeddings
												__snake_case     			=       num_conv_pos_embedding_groups
												__snake_case     			=       conv_pos_kernel_size
												__snake_case     			=       len(self.conv_dim    )
												__snake_case     			=       num_hidden_layers
												__snake_case     			=       intermediate_size
												__snake_case     			=       hidden_act
												__snake_case     			=       num_attention_heads
												__snake_case     			=       hidden_dropout
												__snake_case     			=       attention_dropout
												__snake_case     			=       activation_dropout
												__snake_case     			=       feat_proj_dropout
												__snake_case     			=       final_dropout
												__snake_case     			=       layerdrop
												__snake_case     			=       layer_norm_eps
												__snake_case     			=       initializer_range
												__snake_case     			=       vocab_size
												__snake_case     			=       use_weighted_layer_sum

												if (
												    (len(self.conv_stride    ) != self.num_feat_extract_layers)
												    or (len(self.conv_kernel    ) != self.num_feat_extract_layers)
												    or (len(self.conv_dim    ) != self.num_feat_extract_layers)
												):
																			raise ValueError(
																			    "Configuration for convolutional layers is incorrect. It is required that `len(config.conv_dim)` =="
																			    " `len(config.conv_stride)` == `len(config.conv_kernel)`, but is `len(config.conv_dim) ="
																			    F''' {len(self.conv_dim    )}`, `len(config.conv_stride) = {len(self.conv_stride    )}`,'''
																			    F''' `len(config.conv_kernel) = {len(self.conv_kernel    )}`.'''    )

												# fine-tuning config parameters for SpecAugment: https://arxiv.org/abs/1904.08779
												__snake_case     			=       mask_time_prob
												__snake_case     			=       mask_time_length
												__snake_case     			=       mask_time_min_masks
												__snake_case     			=       mask_feature_prob
												__snake_case     			=       mask_feature_length
												__snake_case     			=       mask_feature_min_masks

												# ctc loss
												__snake_case     			=       ctc_loss_reduction
												__snake_case     			=       ctc_zero_infinity

												# adapter
												__snake_case     			=       add_adapter
												__snake_case     			=       adapter_kernel_size
												__snake_case     			=       adapter_stride
												__snake_case     			=       num_adapter_layers
												__snake_case     			=       output_hidden_size or hidden_size

												# SequenceClassification-specific parameter. Feel free to ignore for other classes.
												__snake_case     			=       classifier_proj_size

												# XVector-specific parameters. Feel free to ignore for other classes.
												__snake_case     			=       list(snake_case_    )
												__snake_case     			=       list(snake_case_    )
												__snake_case     			=       list(snake_case_    )
												__snake_case     			=       xvector_output_dim





					@property
					def 							lowerCAmelCase      (				self   :							List[str]    ):
												return math.prod(self.conv_stride    )
