
import functools
import operator

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


_UpperCAmelCase      :				Union[str, Any]          = logging.get_logger(__name__)

_UpperCAmelCase      :				str          = {
    "microsoft/unispeech-sat-base-100h-libri-ft": (
        "https://huggingface.co/microsoft/unispeech-sat-base-100h-libri-ft/resolve/main/config.json"
    ),
    # See all UniSpeechSat models at https://huggingface.co/models?filter=unispeech_sat
}


class        lowercase      (	_SCREAMING_SNAKE_CASE     ):
		__lowercase : Optional[Any]			  =       "unispeech-sat"



		def __init__(				self       ,   A_=32       ,   A_=768       ,   A_=12       ,   A_=12       ,   A_=3_072       ,   A_="gelu"       ,   A_=0.1       ,   A_=0.1       ,   A_=0.1       ,   A_=0.0       ,   A_=0.0       ,   A_=0.1       ,   A_=0.1       ,   A_=0.02       ,   A_=1e-5       ,   A_="group"       ,   A_="gelu"       ,   A_=(512, 512, 512, 512, 512, 512, 512)       ,   A_=(5, 2, 2, 2, 2, 2, 2)       ,   A_=(10, 3, 3, 3, 3, 2, 2)       ,   A_=False       ,   A_=128       ,   A_=16       ,   A_=False       ,   A_=True       ,   A_=0.05       ,   A_=10       ,   A_=2       ,   A_=0.0       ,   A_=10       ,   A_=0       ,   A_=320       ,   A_=2       ,   A_=0.1       ,   A_=100       ,   A_=256       ,   A_=256       ,   A_=0.1       ,   A_="mean"       ,   A_=False       ,   A_=False       ,   A_=256       ,   A_=(512, 512, 512, 512, 1_500)       ,   A_=(5, 3, 3, 1, 1)       ,   A_=(1, 2, 3, 1, 1)       ,   A_=512       ,   A_=0       ,   A_=1       ,   A_=2       ,   A_=504       ,   **A_       ,   )						->      int:
				"""simple docstring"""
				super().__init__(**A_       ,   pad_token_id=A_       ,   bos_token_id=A_       ,   eos_token_id=A_ )
				UpperCamelCase						=  hidden_size
				UpperCamelCase						=  feat_extract_norm
				UpperCamelCase						=  feat_extract_activation
				UpperCamelCase						=  list(A_ )
				UpperCamelCase						=  list(A_ )
				UpperCamelCase						=  list(A_ )
				UpperCamelCase						=  conv_bias
				UpperCamelCase						=  num_conv_pos_embeddings
				UpperCamelCase						=  num_conv_pos_embedding_groups
				UpperCamelCase						=  len(self.conv_dim )
				UpperCamelCase						=  num_hidden_layers
				UpperCamelCase						=  intermediate_size
				UpperCamelCase						=  hidden_act
				UpperCamelCase						=  num_attention_heads
				UpperCamelCase						=  hidden_dropout
				UpperCamelCase						=  attention_dropout
				UpperCamelCase						=  activation_dropout
				UpperCamelCase						=  feat_proj_dropout
				UpperCamelCase						=  final_dropout
				UpperCamelCase						=  layerdrop
				UpperCamelCase						=  layer_norm_eps
				UpperCamelCase						=  initializer_range
				UpperCamelCase						=  vocab_size
				UpperCamelCase						=  num_clusters
				UpperCamelCase						=  do_stable_layer_norm
				UpperCamelCase						=  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
				UpperCamelCase						=  apply_spec_augment
				UpperCamelCase						=  mask_time_prob
				UpperCamelCase						=  mask_time_length
				UpperCamelCase						=  mask_time_min_masks
				UpperCamelCase						=  mask_feature_prob
				UpperCamelCase						=  mask_feature_length
				UpperCamelCase						=  mask_feature_min_masks

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

				# ctc loss
				UpperCamelCase						=  ctc_loss_reduction
				UpperCamelCase						=  ctc_zero_infinity

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

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



		@property
		def __UpperCamelCase				(				self )						->      Dict:
				"""simple docstring"""
				return functools.reduce(operator.mul       ,   self.conv_stride       ,   1 )




import re


def    A (      lowercase				)     ->						str:
		'''simple docstring'''

		if len(re.findall('[ATCG]'					, lowercase				)				) != len(lowercase				):
				raise ValueError('Invalid Strand'				)

		return dna.translate(dna.maketrans('ATCG'					, 'TAGC'				)				)


if __name__ == "__main__":
					import doctest

					doctest.testmod()
