





'''simple docstring'''




from typing import TYPE_CHECKING

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


lowercase__    :      str						=    {
    '''configuration_wav2vec2''': ['''WAV_2_VEC_2_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''Wav2Vec2Config'''],
    '''feature_extraction_wav2vec2''': ['''Wav2Vec2FeatureExtractor'''],
    '''processing_wav2vec2''': ['''Wav2Vec2Processor'''],
    '''tokenization_wav2vec2''': ['''Wav2Vec2CTCTokenizer''', '''Wav2Vec2Tokenizer'''],
}


try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  lowercase__    :      Tuple						=    [
      '''WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST''',
      '''Wav2Vec2ForAudioFrameClassification''',
      '''Wav2Vec2ForCTC''',
      '''Wav2Vec2ForMaskedLM''',
      '''Wav2Vec2ForPreTraining''',
      '''Wav2Vec2ForSequenceClassification''',
      '''Wav2Vec2ForXVector''',
      '''Wav2Vec2Model''',
      '''Wav2Vec2PreTrainedModel''',
  ]

try:
  if not is_tf_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  lowercase__    :      Optional[int]						=    [
      '''TF_WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST''',
      '''TFWav2Vec2ForCTC''',
      '''TFWav2Vec2Model''',
      '''TFWav2Vec2PreTrainedModel''',
      '''TFWav2Vec2ForSequenceClassification''',
  ]

try:
  if not is_flax_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  lowercase__    :      Any						=    [
      '''FlaxWav2Vec2ForCTC''',
      '''FlaxWav2Vec2ForPreTraining''',
      '''FlaxWav2Vec2Model''',
      '''FlaxWav2Vec2PreTrainedModel''',
  ]


if TYPE_CHECKING:
  from .configuration_wavaveca import WAV_2_VEC_2_PRETRAINED_CONFIG_ARCHIVE_MAP, WavaVecaConfig
  from .feature_extraction_wavaveca import WavaVecaFeatureExtractor
  from .processing_wavaveca import WavaVecaProcessor
  from .tokenization_wavaveca import WavaVecaCTCTokenizer, WavaVecaTokenizer

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_wavaveca import (
        WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST,
        WavaVecaForAudioFrameClassification,
        WavaVecaForCTC,
        WavaVecaForMaskedLM,
        WavaVecaForPreTraining,
        WavaVecaForSequenceClassification,
        WavaVecaForXVector,
        WavaVecaModel,
        WavaVecaPreTrainedModel,
    )

  try:
    if not is_tf_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_tf_wavaveca import (
        TF_WAV_2_VEC_2_PRETRAINED_MODEL_ARCHIVE_LIST,
        TFWavaVecaForCTC,
        TFWavaVecaForSequenceClassification,
        TFWavaVecaModel,
        TFWavaVecaPreTrainedModel,
    )

  try:
    if not is_flax_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_tf_wavaveca import (
        FlaxWavaVecaForCTC,
        FlaxWavaVecaForPreTraining,
        FlaxWavaVecaModel,
        FlaxWavaVecaPreTrainedModel,
    )


else:
  import sys

  lowercase__    :      List[Any]						=    _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)






'''simple docstring'''




import itertools
from dataclasses import dataclass
from typing import Optional

import pandas as pd
import pyarrow as pa

import datasets
from datasets.table import table_cast


@dataclass
class  SCREAMING_SNAKE_CASE    (datasets.BuilderConfig							):
     lowerCAmelCase					=       None




class  SCREAMING_SNAKE_CASE    (datasets.ArrowBasedBuilder							):
     lowerCAmelCase					=       PandasConfig


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          return datasets.DatasetInfo(features=self.config.features)


     def 							SCREAMING_SNAKE_CASE  (						self						,	_UpperCAmelCase):

          '''simple docstring'''






          if not self.config.data_files:
               raise ValueError(F'At least one data file must be specified, but got data_files={self.config.data_files}')
          __A						: Dict      =       dl_manager.download_and_extract(self.config.data_files)
          if isinstance(_UpperCAmelCase						,	(str, list, tuple)):
               __A						: Union[str, Any]      =       data_files
               if isinstance(_UpperCAmelCase						,	_UpperCAmelCase):
                    __A						: Optional[int]      =       [files]
               # Use `dl_manager.iter_files` to skip hidden files in an extracted archive
               __A						: Optional[Any]      =       [dl_manager.iter_files(_UpperCAmelCase) for file in files]
               return [datasets.SplitGenerator(name=datasets.Split.TRAIN						,	gen_kwargs={'files': files})]
          __A						: Tuple      =       []
          for split_name, files in data_files.items():
               if isinstance(_UpperCAmelCase						,	_UpperCAmelCase):
                    __A						: Dict      =       [files]
               # Use `dl_manager.iter_files` to skip hidden files in an extracted archive
               __A						: Optional[Any]      =       [dl_manager.iter_files(_UpperCAmelCase) for file in files]
               splits.append(datasets.SplitGenerator(name=_UpperCAmelCase						,	gen_kwargs={'files': files}))
          return splits


     def 							SCREAMING_SNAKE_CASE  (						self						,	_UpperCAmelCase):

          '''simple docstring'''






          if self.config.features is not None:
               # more expensive cast to support nested features with keys in a different order
               # allows str <-> int/float or str to Audio for example
               __A						: List[str]      =       table_cast(_UpperCAmelCase						,	self.config.features.arrow_schema)
          return pa_table


     def 							SCREAMING_SNAKE_CASE  (						self						,	_UpperCAmelCase):

          '''simple docstring'''






          for i, file in enumerate(itertools.chain.from_iterable(_UpperCAmelCase)):
               with open(_UpperCAmelCase						,	'rb') as f:
                    __A						: Optional[int]      =       pa.Table.from_pandas(pd.read_pickle(_UpperCAmelCase))
                    yield i, self._cast_table(_UpperCAmelCase)