
import functools
import operator

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


A     :	List[str]    = logging.get_logger(__name__)

A     :	Dict    = {
    'facebook/wav2vec2-base-960h': 'https://huggingface.co/facebook/wav2vec2-base-960h/resolve/main/config.json',
    # See all Wav2Vec2 models at https://huggingface.co/models?filter=wav2vec2
}







class 			__A( a			):
				snake_case_						   =    '''wav2vec2'''




				def __init__(     self		,     _snake_case=32		,     _snake_case=768		,     _snake_case=12		,     _snake_case=12		,     _snake_case=3_072		,     _snake_case="gelu"		,     _snake_case=0.1		,     _snake_case=0.1		,     _snake_case=0.1		,     _snake_case=0.0		,     _snake_case=0.0		,     _snake_case=0.1		,     _snake_case=0.1		,     _snake_case=0.02		,     _snake_case=1E-5		,     _snake_case="group"		,     _snake_case="gelu"		,     _snake_case=(512, 512, 512, 512, 512, 512, 512)		,     _snake_case=(5, 2, 2, 2, 2, 2, 2)		,     _snake_case=(10, 3, 3, 3, 3, 2, 2)		,     _snake_case=False		,     _snake_case=128		,     _snake_case=16		,     _snake_case=False		,     _snake_case=True		,     _snake_case=0.05		,     _snake_case=10		,     _snake_case=2		,     _snake_case=0.0		,     _snake_case=10		,     _snake_case=0		,     _snake_case=320		,     _snake_case=2		,     _snake_case=0.1		,     _snake_case=100		,     _snake_case=256		,     _snake_case=256		,     _snake_case=0.1		,     _snake_case="sum"		,     _snake_case=False		,     _snake_case=False		,     _snake_case=256		,     _snake_case=(512, 512, 512, 512, 1_500)		,     _snake_case=(5, 3, 3, 1, 1)		,     _snake_case=(1, 2, 3, 1, 1)		,     _snake_case=512		,     _snake_case=0		,     _snake_case=1		,     _snake_case=2		,     _snake_case=False		,     _snake_case=3		,     _snake_case=2		,     _snake_case=3		,     _snake_case=None		,     _snake_case=None		,     **_snake_case		,     )    ->      Optional[Any]:


								'''simple docstring'''




								super().__init__(**_snake_case		,     pad_token_id=_snake_case		,     bos_token_id=_snake_case		,     eos_token_id=_snake_case				)
								__a										=    hidden_size
								__a										=    feat_extract_norm
								__a										=    feat_extract_activation
								__a										=    list(_snake_case				)
								__a										=    list(_snake_case				)
								__a										=    list(_snake_case				)
								__a										=    conv_bias
								__a										=    num_conv_pos_embeddings
								__a										=    num_conv_pos_embedding_groups
								__a										=    len(self.conv_dim				)
								__a										=    num_hidden_layers
								__a										=    intermediate_size
								__a										=    hidden_act
								__a										=    num_attention_heads
								__a										=    hidden_dropout
								__a										=    attention_dropout
								__a										=    activation_dropout
								__a										=    feat_proj_dropout
								__a										=    final_dropout
								__a										=    layerdrop
								__a										=    layer_norm_eps
								__a										=    initializer_range
								__a										=    vocab_size
								__a										=    do_stable_layer_norm
								__a										=    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
								__a										=    apply_spec_augment
								__a										=    mask_time_prob
								__a										=    mask_time_length
								__a										=    mask_time_min_masks
								__a										=    mask_feature_prob
								__a										=    mask_feature_length
								__a										=    mask_feature_min_masks

								# parameters for pretraining with codevector quantized representations
								__a										=    num_codevectors_per_group
								__a										=    num_codevector_groups
								__a										=    contrastive_logits_temperature
								__a										=    feat_quantizer_dropout
								__a										=    num_negatives
								__a										=    codevector_dim
								__a										=    proj_codevector_dim
								__a										=    diversity_loss_weight

								# ctc loss
								__a										=    ctc_loss_reduction
								__a										=    ctc_zero_infinity

								# adapter
								__a										=    add_adapter
								__a										=    adapter_kernel_size
								__a										=    adapter_stride
								__a										=    num_adapter_layers
								__a										=    output_hidden_size or hidden_size
								__a										=    adapter_attn_dim

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

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




				@property
				def 				SCREAMING_SNAKE_CASE_		(     self				)    ->      Dict:


								'''simple docstring'''




								return functools.reduce(operator.mul		,     self.conv_stride		,     1				)

from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_sentencepiece_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


A     :	Dict    = {
    'configuration_xlm_roberta': [
        'XLM_ROBERTA_PRETRAINED_CONFIG_ARCHIVE_MAP',
        'XLMRobertaConfig',
        'XLMRobertaOnnxConfig',
    ],
}

try:
					if not is_sentencepiece_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					A     :	Union[str, Any]    = ['XLMRobertaTokenizer']

try:
					if not is_tokenizers_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					A     :	int    = ['XLMRobertaTokenizerFast']

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					A     :	List[Any]    = [
					    'XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST',
					    'XLMRobertaForCausalLM',
					    'XLMRobertaForMaskedLM',
					    'XLMRobertaForMultipleChoice',
					    'XLMRobertaForQuestionAnswering',
					    'XLMRobertaForSequenceClassification',
					    'XLMRobertaForTokenClassification',
					    'XLMRobertaModel',
					    'XLMRobertaPreTrainedModel',
					]

try:
					if not is_tf_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					A     :	int    = [
					    'TF_XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST',
					    'TFXLMRobertaForCausalLM',
					    'TFXLMRobertaForMaskedLM',
					    'TFXLMRobertaForMultipleChoice',
					    'TFXLMRobertaForQuestionAnswering',
					    'TFXLMRobertaForSequenceClassification',
					    'TFXLMRobertaForTokenClassification',
					    'TFXLMRobertaModel',
					    'TFXLMRobertaPreTrainedModel',
					]

try:
					if not is_flax_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					A     :	Tuple    = [
					    'FLAX_XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST',
					    'FlaxXLMRobertaForMaskedLM',
					    'FlaxXLMRobertaForCausalLM',
					    'FlaxXLMRobertaForMultipleChoice',
					    'FlaxXLMRobertaForQuestionAnswering',
					    'FlaxXLMRobertaForSequenceClassification',
					    'FlaxXLMRobertaForTokenClassification',
					    'FlaxXLMRobertaModel',
					    'FlaxXLMRobertaPreTrainedModel',
					]

if TYPE_CHECKING:
					from .configuration_xlm_roberta import (
					    XLM_ROBERTA_PRETRAINED_CONFIG_ARCHIVE_MAP,
					    XLMRobertaConfig,
					    XLMRobertaOnnxConfig,
					)

					try:
										if not is_sentencepiece_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .tokenization_xlm_roberta import XLMRobertaTokenizer

					try:
										if not is_tokenizers_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .tokenization_xlm_roberta_fast import XLMRobertaTokenizerFast

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_xlm_roberta import (
										    XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST,
										    XLMRobertaForCausalLM,
										    XLMRobertaForMaskedLM,
										    XLMRobertaForMultipleChoice,
										    XLMRobertaForQuestionAnswering,
										    XLMRobertaForSequenceClassification,
										    XLMRobertaForTokenClassification,
										    XLMRobertaModel,
										    XLMRobertaPreTrainedModel,
										)

					try:
										if not is_tf_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_tf_xlm_roberta import (
										    TF_XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST,
										    TFXLMRobertaForCausalLM,
										    TFXLMRobertaForMaskedLM,
										    TFXLMRobertaForMultipleChoice,
										    TFXLMRobertaForQuestionAnswering,
										    TFXLMRobertaForSequenceClassification,
										    TFXLMRobertaForTokenClassification,
										    TFXLMRobertaModel,
										    TFXLMRobertaPreTrainedModel,
										)

					try:
										if not is_flax_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_flax_xlm_roberta import (
										    FLAX_XLM_ROBERTA_PRETRAINED_MODEL_ARCHIVE_LIST,
										    FlaxXLMRobertaForCausalLM,
										    FlaxXLMRobertaForMaskedLM,
										    FlaxXLMRobertaForMultipleChoice,
										    FlaxXLMRobertaForQuestionAnswering,
										    FlaxXLMRobertaForSequenceClassification,
										    FlaxXLMRobertaForTokenClassification,
										    FlaxXLMRobertaModel,
										    FlaxXLMRobertaPreTrainedModel,
										)

else:
					import sys

					A     :	Tuple    = _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)