




import itertools
from dataclasses import dataclass
from typing import List, Optional

import pyarrow as pa
import pyarrow.parquet as pq

import datasets
from datasets.table import table_cast


snake_case__      :	Any       	=      datasets.utils.logging.get_logger(__name__)


@dataclass
class 						_a       (  datasets.BuilderConfig    ):






  """simple docstring"""





  A_						=   10_000
  A_						=   None
  A_						=   None




class 						_a       (  datasets.ArrowBasedBuilder    ):






  """simple docstring"""





  A_						=   ParquetConfig




  def    _UpperCAmelCase     (     self )			-> Optional[Any]:
     return datasets.DatasetInfo(features=self.config.features )




  def    _UpperCAmelCase     (     self		,		_UpperCAmelCase )			-> Dict:
     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}""" )
     UpperCamelCase_									=     dl_manager.download_and_extract(self.config.data_files )
     if isinstance(_UpperCAmelCase		,		(str, list, tuple) ):
        UpperCamelCase_									=     data_files
        if isinstance(_UpperCAmelCase		,		_UpperCAmelCase ):
           UpperCamelCase_									=     [files]
        # Use `dl_manager.iter_files` to skip hidden files in an extracted archive
        UpperCamelCase_									=     [dl_manager.iter_files(_UpperCAmelCase ) for file in files]
        return [datasets.SplitGenerator(name=datasets.Split.TRAIN		,		gen_kwargs={'files': files} )]
     UpperCamelCase_									=     []
     for split_name, files in data_files.items():
        if isinstance(_UpperCAmelCase		,		_UpperCAmelCase ):
           UpperCamelCase_									=     [files]
        # Use `dl_manager.iter_files` to skip hidden files in an extracted archive
        UpperCamelCase_									=     [dl_manager.iter_files(_UpperCAmelCase ) for file in files]
        # Infer features is they are stoed in the arrow schema
        if self.info.features is None:
           for file in itertools.chain.from_iterable(_UpperCAmelCase ):
              with open(_UpperCAmelCase		,		'rb' ) as f:
                 UpperCamelCase_									=     datasets.Features.from_arrow_schema(pq.read_schema(_UpperCAmelCase ) )
              break
        splits.append(datasets.SplitGenerator(name=_UpperCAmelCase		,		gen_kwargs={'files': files} ) )
     return splits




  def    _UpperCAmelCase     (     self		,		_UpperCAmelCase )			-> pa.Table:
     if self.info.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
        UpperCamelCase_									=     table_cast(_UpperCAmelCase		,		self.info.features.arrow_schema )
     return pa_table




  def    _UpperCAmelCase     (     self		,		_UpperCAmelCase )			-> Optional[int]:
     UpperCamelCase_									=     self.info.features.arrow_schema if self.info.features is not None else None
     if self.info.features is not None and self.config.columns is not None:
        if sorted(field.name for field in schema ) != sorted(self.config.columns ):
           raise ValueError(
               f"""Tried to load parquet data with columns '{self.config.columns}' with mismatching features '{self.info.features}'""" )
     for file_idx, file in enumerate(itertools.chain.from_iterable(_UpperCAmelCase ) ):
        with open(_UpperCAmelCase		,		'rb' ) as f:
           UpperCamelCase_									=     pq.ParquetFile(_UpperCAmelCase )
           try:
              for batch_idx, record_batch in enumerate(
                  parquet_file.iter_batches(batch_size=self.config.batch_size		,		columns=self.config.columns ) ):
                 UpperCamelCase_									=     pa.Table.from_batches([record_batch] )
                 # Uncomment for debugging (will print the Arrow table size and elements)
                 # logger.warning(f"pa_table: {pa_table} num rows: {pa_table.num_rows}")
                 # logger.warning('\n'.join(str(pa_table.slice(i, 1).to_pydict()) for i in range(pa_table.num_rows)))
                 yield f"""{file_idx}_{batch_idx}""", self._cast_table(_UpperCAmelCase )
           except ValueError as e:
              logger.error(f"""Failed to read file '{file}' with error {type(_UpperCAmelCase )}: {e}""" )
              raise













import warnings

from ...utils import logging
from .image_processing_videomae import VideoMAEImageProcessor


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


class 						_a       (  UpperCAmelCase__    ):






  """simple docstring"""





  def __init__(     self		,		*_UpperCAmelCase		,		**_UpperCAmelCase )			-> None:
     warnings.warn(
         'The class VideoMAEFeatureExtractor is deprecated and will be removed in version 5 of Transformers.'
         ' Please use VideoMAEImageProcessor instead.'		,		_UpperCAmelCase		,		)
     super().__init__(*_UpperCAmelCase		,		**_UpperCAmelCase )





