


'''simple docstring'''

import os
import tempfile
from functools import partial
from unittest import TestCase
from unittest.mock import patch

import datasets
import datasets.config

from .utils import require_beam





class   snake_case					(					datasets.BeamBasedBuilder    ):





  """simple docstring"""




  def 						snake_case	(					self  ):







   """simple docstring"""
   return datasets.DatasetInfo(
       features=datasets.Features({"content": datasets.Value("string"  )}  )    ,						supervised_keys=UpperCamelCase    ,						)






  def 						snake_case	(					self    ,						UpperCamelCase    ,						UpperCamelCase  ):







   """simple docstring"""
   return [datasets.SplitGenerator(name=datasets.Split.TRAIN    ,						gen_kwargs={"examples": get_test_dummy_examples()}  )]







  def 						snake_case	(					self    ,						UpperCamelCase    ,						UpperCamelCase  ):







   """simple docstring"""
   import apache_beam as beam

   return pipeline | "Load Examples" >> beam.Create(UpperCamelCase  )





class   snake_case					(					datasets.BeamBasedBuilder    ):





  """simple docstring"""




  def 						snake_case	(					self  ):







   """simple docstring"""
   return datasets.DatasetInfo(
       features=datasets.Features({"a": datasets.Sequence({"b": datasets.Value("string"  )}  )}  )    ,						supervised_keys=UpperCamelCase    ,						)






  def 						snake_case	(					self    ,						UpperCamelCase    ,						UpperCamelCase  ):







   """simple docstring"""
   return [
       datasets.SplitGenerator(name=datasets.Split.TRAIN    ,						gen_kwargs={"examples": get_test_nested_examples()}  )
   ]







  def 						snake_case	(					self    ,						UpperCamelCase    ,						UpperCamelCase  ):







   """simple docstring"""
   import apache_beam as beam

   return pipeline | "Load Examples" >> beam.Create(UpperCamelCase  )





def __snake_case      (   ):
 return [(i, {"content": content}) for i, content in enumerate(["foo", "bar", "foobar"]	)]





def __snake_case      (   ):
 return [(i, {"a": {"b": [content]}}) for i, content in enumerate(["foo", "bar", "foobar"]	)]







class   snake_case					(					lowercase    ):





  """simple docstring"""




  @require_beam
  def 						snake_case	(					self  ):







   """simple docstring"""
   lowerCamelCase_  				=						len(get_test_dummy_examples()  )
   with tempfile.TemporaryDirectory() as tmp_cache_dir:
    lowerCamelCase_  				=						DummyBeamDataset(cache_dir=UpperCamelCase    ,						beam_runner="DirectRunner"  )
    builder.download_and_prepare()
    self.assertTrue(
        os.path.exists(
            os.path.join(UpperCamelCase    ,						builder.name    ,						"default"    ,						"0.0.0"    ,						f'''{builder.name}-train.arrow'''  )  )  )
    self.assertDictEqual(builder.info.features    ,						datasets.Features({"content": datasets.Value("string"  )}  )  )
    lowerCamelCase_  				=						builder.as_dataset()
    self.assertEqual(dset["train"].num_rows    ,						UpperCamelCase  )
    self.assertEqual(dset["train"].info.splits["train"].num_examples    ,						UpperCamelCase  )
    self.assertDictEqual(dset["train"][0]    ,						get_test_dummy_examples()[0][1]  )
    self.assertDictEqual(
        dset["train"][expected_num_examples - 1]    ,						get_test_dummy_examples()[expected_num_examples - 1][1]  )
    self.assertTrue(
        os.path.exists(os.path.join(UpperCamelCase    ,						builder.name    ,						"default"    ,						"0.0.0"    ,						"dataset_info.json"  )  )  )
    del dset






  @require_beam
  def 						snake_case	(					self  ):







   """simple docstring"""
   import apache_beam as beam

   lowerCamelCase_  				=						beam.io.parquetio.WriteToParquet

   lowerCamelCase_  				=						len(get_test_dummy_examples()  )
   with tempfile.TemporaryDirectory() as tmp_cache_dir:
    lowerCamelCase_  				=						DummyBeamDataset(cache_dir=UpperCamelCase    ,						beam_runner="DirectRunner"  )
    with patch("apache_beam.io.parquetio.WriteToParquet"  ) as write_parquet_mock:
     lowerCamelCase_  				=						partial(UpperCamelCase    ,						num_shards=2  )
     builder.download_and_prepare()
    self.assertTrue(
        os.path.exists(
            os.path.join(
                UpperCamelCase    ,						builder.name    ,						"default"    ,						"0.0.0"    ,						f'''{builder.name}-train-00000-of-00002.arrow'''  )  )  )
    self.assertTrue(
        os.path.exists(
            os.path.join(
                UpperCamelCase    ,						builder.name    ,						"default"    ,						"0.0.0"    ,						f'''{builder.name}-train-00000-of-00002.arrow'''  )  )  )
    self.assertDictEqual(builder.info.features    ,						datasets.Features({"content": datasets.Value("string"  )}  )  )
    lowerCamelCase_  				=						builder.as_dataset()
    self.assertEqual(dset["train"].num_rows    ,						UpperCamelCase  )
    self.assertEqual(dset["train"].info.splits["train"].num_examples    ,						UpperCamelCase  )
    # Order is not preserved when sharding, so we just check that all the elements are there
    self.assertListEqual(sorted(dset["train"]["content"]  )    ,						sorted(["foo", "bar", "foobar"]  )  )
    self.assertTrue(
        os.path.exists(os.path.join(UpperCamelCase    ,						builder.name    ,						"default"    ,						"0.0.0"    ,						"dataset_info.json"  )  )  )
    del dset






  @require_beam
  def 						snake_case	(					self  ):







   """simple docstring"""
   with tempfile.TemporaryDirectory() as tmp_cache_dir:
    lowerCamelCase_  				=						DummyBeamDataset(cache_dir=UpperCamelCase  )
    self.assertRaises(datasets.builder.MissingBeamOptions    ,						builder.download_and_prepare  )







  @require_beam
  def 						snake_case	(					self  ):







   """simple docstring"""
   lowerCamelCase_  				=						len(get_test_nested_examples()  )
   with tempfile.TemporaryDirectory() as tmp_cache_dir:
    lowerCamelCase_  				=						NestedBeamDataset(cache_dir=UpperCamelCase    ,						beam_runner="DirectRunner"  )
    builder.download_and_prepare()
    self.assertTrue(
        os.path.exists(
            os.path.join(UpperCamelCase    ,						builder.name    ,						"default"    ,						"0.0.0"    ,						f'''{builder.name}-train.arrow'''  )  )  )
    self.assertDictEqual(
        builder.info.features    ,						datasets.Features({"a": datasets.Sequence({"b": datasets.Value("string"  )}  )}  )  )
    lowerCamelCase_  				=						builder.as_dataset()
    self.assertEqual(dset["train"].num_rows    ,						UpperCamelCase  )
    self.assertEqual(dset["train"].info.splits["train"].num_examples    ,						UpperCamelCase  )
    self.assertDictEqual(dset["train"][0]    ,						get_test_nested_examples()[0][1]  )
    self.assertDictEqual(
        dset["train"][expected_num_examples - 1]    ,						get_test_nested_examples()[expected_num_examples - 1][1]  )
    self.assertTrue(
        os.path.exists(os.path.join(UpperCamelCase    ,						builder.name    ,						"default"    ,						"0.0.0"    ,						"dataset_info.json"  )  )  )
    del dset







'''simple docstring'''

import functools
import operator

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


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

a_						:       Dict      			=				{
    """microsoft/unispeech-large-1500h-cv""": (
        """https://huggingface.co/microsoft/unispeech-large-1500h-cv/resolve/main/config.json"""
    ),
    # See all UniSpeech models at https://huggingface.co/models?filter=unispeech
}





class   snake_case					(					lowercase    ):





  """simple docstring"""




  _lowerCamelCase						=						"unispeech"






  def __init__(					self    ,						UpperCamelCase=32    ,						UpperCamelCase=768    ,						UpperCamelCase=12    ,						UpperCamelCase=12    ,						UpperCamelCase=3072    ,						UpperCamelCase="gelu"    ,						UpperCamelCase=0.1    ,						UpperCamelCase=0.1    ,						UpperCamelCase=0.1    ,						UpperCamelCase=0.0    ,						UpperCamelCase=0.0    ,						UpperCamelCase=0.1    ,						UpperCamelCase=0.1    ,						UpperCamelCase=0.02    ,						UpperCamelCase=1e-5    ,						UpperCamelCase="group"    ,						UpperCamelCase="gelu"    ,						UpperCamelCase=(512, 512, 512, 512, 512, 512, 512)    ,						UpperCamelCase=(5, 2, 2, 2, 2, 2, 2)    ,						UpperCamelCase=(10, 3, 3, 3, 3, 2, 2)    ,						UpperCamelCase=False    ,						UpperCamelCase=128    ,						UpperCamelCase=16    ,						UpperCamelCase=False    ,						UpperCamelCase=True    ,						UpperCamelCase=0.05    ,						UpperCamelCase=10    ,						UpperCamelCase=2    ,						UpperCamelCase=0.0    ,						UpperCamelCase=10    ,						UpperCamelCase=0    ,						UpperCamelCase=320    ,						UpperCamelCase=2    ,						UpperCamelCase=0.1    ,						UpperCamelCase=100    ,						UpperCamelCase=256    ,						UpperCamelCase=256    ,						UpperCamelCase=0.1    ,						UpperCamelCase="mean"    ,						UpperCamelCase=False    ,						UpperCamelCase=False    ,						UpperCamelCase=256    ,						UpperCamelCase=80    ,						UpperCamelCase=0    ,						UpperCamelCase=1    ,						UpperCamelCase=2    ,						UpperCamelCase=0.5    ,						**UpperCamelCase    ,						):







   """simple docstring"""
   super().__init__(**UpperCamelCase    ,						pad_token_id=UpperCamelCase    ,						bos_token_id=UpperCamelCase    ,						eos_token_id=UpperCamelCase  )
   lowerCamelCase_  				=						hidden_size
   lowerCamelCase_  				=						feat_extract_norm
   lowerCamelCase_  				=						feat_extract_activation
   lowerCamelCase_  				=						list(UpperCamelCase  )
   lowerCamelCase_  				=						list(UpperCamelCase  )
   lowerCamelCase_  				=						list(UpperCamelCase  )
   lowerCamelCase_  				=						conv_bias
   lowerCamelCase_  				=						num_conv_pos_embeddings
   lowerCamelCase_  				=						num_conv_pos_embedding_groups
   lowerCamelCase_  				=						len(self.conv_dim  )
   lowerCamelCase_  				=						num_hidden_layers
   lowerCamelCase_  				=						intermediate_size
   lowerCamelCase_  				=						hidden_act
   lowerCamelCase_  				=						num_attention_heads
   lowerCamelCase_  				=						hidden_dropout
   lowerCamelCase_  				=						attention_dropout
   lowerCamelCase_  				=						activation_dropout
   lowerCamelCase_  				=						feat_proj_dropout
   lowerCamelCase_  				=						final_dropout
   lowerCamelCase_  				=						layerdrop
   lowerCamelCase_  				=						layer_norm_eps
   lowerCamelCase_  				=						initializer_range
   lowerCamelCase_  				=						num_ctc_classes
   lowerCamelCase_  				=						vocab_size
   lowerCamelCase_  				=						do_stable_layer_norm
   lowerCamelCase_  				=						use_weighted_layer_sum
   lowerCamelCase_  				=						classifier_proj_size

   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
   lowerCamelCase_  				=						apply_spec_augment
   lowerCamelCase_  				=						mask_time_prob
   lowerCamelCase_  				=						mask_time_length
   lowerCamelCase_  				=						mask_time_min_masks
   lowerCamelCase_  				=						mask_feature_prob
   lowerCamelCase_  				=						mask_feature_length
   lowerCamelCase_  				=						mask_feature_min_masks

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

   # ctc loss
   lowerCamelCase_  				=						ctc_loss_reduction
   lowerCamelCase_  				=						ctc_zero_infinity

   # pretraining loss
   lowerCamelCase_  				=						replace_prob







  @property
  def 						snake_case	(					self  ):







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



