





'''simple docstring'''
import logging
import os
import sys
import threading
from logging import (
    CRITICAL,  # NOQA
    DEBUG,  # NOQA
    ERROR,  # NOQA
    FATAL,  # NOQA
    INFO,  # NOQA
    NOTSET,  # NOQA
    WARN,  # NOQA
    WARNING,  # NOQA
)
from typing import Optional

from tqdm import auto as tqdm_lib


a__							:							Optional[int]			=threading.Lock()
a__							:							Optional[logging.Handler]			=None

a__							:							Optional[Any]			={
    '''debug''': logging.DEBUG,
    '''info''': logging.INFO,
    '''warning''': logging.WARNING,
    '''error''': logging.ERROR,
    '''critical''': logging.CRITICAL,
}

a__							:							List[Any]			=logging.WARNING

a__							:							str			=True
def     lowercase__       (       )			->				int:



							"""simple docstring"""






							__UpperCamelCase	=  os.getenv('DIFFUSERS_VERBOSITY'    ,  __lowercase					)
							if env_level_str:
														if env_level_str in log_levels:
																					return log_levels[env_level_str]
														else:
																					logging.getLogger().warning(
																					    F'''Unknown option DIFFUSERS_VERBOSITY={env_level_str}, '''
																					    F'''has to be one of: { ', '.join(log_levels.keys()					) }'''					)
							return _default_log_level
def     lowercase__       (       )			->				str:



							"""simple docstring"""






							return __name__.split('.'					)[0]
def     lowercase__       (       )			->				logging.Logger:



							"""simple docstring"""






							return logging.getLogger(_get_library_name()					)
def     lowercase__       (       )			->				None:



							"""simple docstring"""






							global _default_handler

							with _lock:
														if _default_handler:
																					# This library has already configured the library root logger.
																					return
														__UpperCamelCase	=  logging.StreamHandler()  # Set sys.stderr as stream.
														__UpperCamelCase	=  sys.stderr.flush

														# Apply our default configuration to the library root logger.
														__UpperCamelCase	=  _get_library_root_logger()
														library_root_logger.addHandler(_default_handler					)
														library_root_logger.setLevel(_get_default_logging_level()					)
														__UpperCamelCase	=  False
def     lowercase__       (       )			->				None:



							"""simple docstring"""






							global _default_handler

							with _lock:
														if not _default_handler:
																					return

														__UpperCamelCase	=  _get_library_root_logger()
														library_root_logger.removeHandler(_default_handler					)
														library_root_logger.setLevel(logging.NOTSET					)
														__UpperCamelCase	=  None
def     lowercase__       (       )			->				str:



							"""simple docstring"""






							return log_levels
def     lowercase__       (       __lowercase						:  Optional[str] = None					)			->				logging.Logger:



							"""simple docstring"""






							if name is None:
														__UpperCamelCase	=  _get_library_name()

							_configure_library_root_logger()
							return logging.getLogger(__lowercase					)
def     lowercase__       (       )			->				int:



							"""simple docstring"""






							_configure_library_root_logger()
							return _get_library_root_logger().getEffectiveLevel()
def     lowercase__       (       __lowercase						:  int					)			->				None:



							"""simple docstring"""






							_configure_library_root_logger()
							_get_library_root_logger().setLevel(__lowercase					)
def     lowercase__       (       )			->				Tuple:



							"""simple docstring"""






							return set_verbosity(__lowercase					)
def     lowercase__       (       )			->				Union[str, Any]:



							"""simple docstring"""






							return set_verbosity(__lowercase					)
def     lowercase__       (       )			->				Any:



							"""simple docstring"""






							return set_verbosity(__lowercase					)
def     lowercase__       (       )			->				int:



							"""simple docstring"""






							return set_verbosity(__lowercase					)
def     lowercase__       (       )			->				None:



							"""simple docstring"""






							_configure_library_root_logger()

							assert _default_handler is not None
							_get_library_root_logger().removeHandler(_default_handler					)
def     lowercase__       (       )			->				None:



							"""simple docstring"""






							_configure_library_root_logger()

							assert _default_handler is not None
							_get_library_root_logger().addHandler(_default_handler					)
def     lowercase__       (       __lowercase						:  logging.Handler					)			->				None:



							"""simple docstring"""






							_configure_library_root_logger()

							assert handler is not None
							_get_library_root_logger().addHandler(__lowercase					)
def     lowercase__       (       __lowercase						:  logging.Handler					)			->				None:



							"""simple docstring"""






							_configure_library_root_logger()

							assert handler is not None and handler not in _get_library_root_logger().handlers
							_get_library_root_logger().removeHandler(__lowercase					)
def     lowercase__       (       )			->				None:



							"""simple docstring"""






							_configure_library_root_logger()
							__UpperCamelCase	=  False
def     lowercase__       (       )			->				None:



							"""simple docstring"""






							_configure_library_root_logger()
							__UpperCamelCase	=  True
def     lowercase__       (       )			->				None:



							"""simple docstring"""






							__UpperCamelCase	=  _get_library_root_logger().handlers

							for handler in handlers:
														__UpperCamelCase	=  logging.Formatter('[%(levelname)s|%(filename)s:%(lineno)s] %(asctime)s >> %(message)s'					)
														handler.setFormatter(__lowercase					)
def     lowercase__       (       )			->				None:



							"""simple docstring"""






							__UpperCamelCase	=  _get_library_root_logger().handlers

							for handler in handlers:
														handler.setFormatter(__lowercase					)
def     lowercase__       (       self						:  int    ,  *__lowercase						:  List[str]    ,  **__lowercase						:  List[Any]					)			->				Any:



							"""simple docstring"""






							__UpperCamelCase	=  os.getenv('DIFFUSERS_NO_ADVISORY_WARNINGS'    ,  __lowercase					)
							if no_advisory_warnings:
														return
							self.warning(*__lowercase    ,  **__lowercase					)


a__							:							Dict			=warning_advice

class 					snake_case					:




	"""simple docstring"""



	def __init__(	self	:							Optional[int]							,     *__A	:							int							,     **__A	:							Dict     ):  # pylint: disable=unused-argument
								__UpperCamelCase	=  args[0] if args else None






	def __iter__(	self	:							str     ):
								return iter(self._iterator     )






	def __getattr__(	self	:							Tuple							,     __A	:							Any     ):

								def empty_fn(*__A	:							Any							,     **__A	:							List[str]     ):  # pylint: disable=unused-argument
															return

								return empty_fn






	def __enter__(	self	:							str     ):
								return self






	def __exit__(	self	:							Optional[Any]							,     __A	:							Dict							,     __A	:							str							,     __A	:							Dict     ):
								return






class 					snake_case					:




	"""simple docstring"""



	def __call__(	self	:							Union[str, Any]							,     *__A	:							Union[str, Any]							,     **__A	:							Dict     ):
								if _tqdm_active:
															return tqdm_lib.tqdm(*__A							,     **__A     )
								else:
															return EmptyTqdm(*__A							,     **__A     )






	def 	_lowerCamelCase (	self	:							Any							,     *__A	:							str							,     **__A	:							Optional[int]     ):
								__UpperCamelCase	=  None
								if _tqdm_active:
															return tqdm_lib.tqdm.set_lock(*__A							,     **__A     )






	def 	_lowerCamelCase (	self	:							Optional[int]     ):
								if _tqdm_active:
															return tqdm_lib.tqdm.get_lock()






a__							:							List[Any]			=_tqdm_cls()
def     lowercase__       (       )			->				bool:



							"""simple docstring"""






							global _tqdm_active
							return bool(_tqdm_active					)
def     lowercase__       (       )			->				List[str]:



							"""simple docstring"""






							global _tqdm_active
							__UpperCamelCase	=  True


def     lowercase__       (       )			->				str:



							"""simple docstring"""






							global _tqdm_active
							__UpperCamelCase	=  False







'''simple docstring'''
import itertools
from dataclasses import dataclass
from typing import Optional

import pyarrow as pa

import datasets
from datasets.table import table_cast


a__							:							Optional[Any]			=datasets.utils.logging.get_logger(__name__)

@dataclass
class 					snake_case					(   datasets.BuilderConfig	):




 """simple docstring"""



 SCREAMING_SNAKE_CASE_     : Optional[datasets.Features]      		=None






class 					snake_case					(   datasets.ArrowBasedBuilder	):




 """simple docstring"""



 SCREAMING_SNAKE_CASE_     : int      		=ArrowConfig






 def 	_lowerCamelCase (	self	:							List[str]     ):
        return datasets.DatasetInfo(features=self.config.features     )






 def 	_lowerCamelCase (	self	:							Union[str, Any]							,     __A	:							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(__A							,     (str, list, tuple)     ):
               __UpperCamelCase	=  data_files
               if isinstance(__A							,     __A     ):
                      __UpperCamelCase	=  [files]
               # Use `dl_manager.iter_files` to skip hidden files in an extracted archive
               __UpperCamelCase	=  [dl_manager.iter_files(__A     ) 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(__A							,     __A     ):
                      __UpperCamelCase	=  [files]
               # Use `dl_manager.iter_files` to skip hidden files in an extracted archive
               __UpperCamelCase	=  [dl_manager.iter_files(__A     ) 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(__A     ):
                             with open(__A							,     'rb'     ) as f:
                                    __UpperCamelCase	=  datasets.Features.from_arrow_schema(pa.ipc.open_stream(__A     ).schema     )
                             break
               splits.append(datasets.SplitGenerator(name=__A							,     gen_kwargs={'files': files}     )     )
        return splits






 def 	_lowerCamelCase (	self	:							Any							,     __A	:							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(__A							,     self.info.features.arrow_schema     )
        return pa_table






 def 	_lowerCamelCase (	self	:							int							,     __A	:							Optional[Any]     ):
        for file_idx, file in enumerate(itertools.chain.from_iterable(__A     )     ):
               with open(__A							,     'rb'     ) as f:
                      try:
                             for batch_idx, record_batch in enumerate(pa.ipc.open_stream(__A     )     ):
                                    __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(__A     )
                      except ValueError as e:
                             logger.error(f'''Failed to read file \'{file}\' with error {type(__A     )}: {e}'''     )
                             raise
