



import itertools
from dataclasses import dataclass
from typing import Any, Callable, Dict, List, Optional, Union

import pandas as pd
import pyarrow as pa

import datasets
import datasets.config
from datasets.features.features import require_storage_cast
from datasets.table import table_cast
from datasets.utils.py_utils import Literal


a_						=					datasets.utils.logging.get_logger(__name__)

a_						=					["""names""", """prefix"""]
a_						=					["""warn_bad_lines""", """error_bad_lines""", """mangle_dupe_cols"""]
a_						=					["""encoding_errors""", """on_bad_lines"""]
a_						=					["""date_format"""]



@dataclass
class  __lowerCAmelCase     (	datasets.BuilderConfig   ):
 lowerCAmelCase__       					=  ","
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  "infer"
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  True
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  False
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  True
 lowerCAmelCase__       					=  True
 lowerCAmelCase__       					=  False
 lowerCAmelCase__       					=  True
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  "."
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  '"'
 lowerCAmelCase__       					=  0
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  True
 lowerCAmelCase__       					=  True
 lowerCAmelCase__       					=  0
 lowerCAmelCase__       					=  True
 lowerCAmelCase__       					=  False
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  1_0_0_0_0
 lowerCAmelCase__       					=  None
 lowerCAmelCase__       					=  "strict"
 lowerCAmelCase__       					=  "error"
 lowerCAmelCase__       					=  None




 def        lowerCamelCase      (						self				):



    '''simple docstring'''




    if self.delimiter is not None:
       __lowerCamelCase													=    self.delimiter
    if self.column_names is not None:
       __lowerCamelCase													=    self.column_names




 @property
 def        lowerCamelCase      (						self				):



    '''simple docstring'''
    __lowerCamelCase													=    {
        '''sep''': self.sep,
        '''header''': self.header,
        '''names''': self.names,
        '''index_col''': self.index_col,
        '''usecols''': self.usecols,
        '''prefix''': self.prefix,
        '''mangle_dupe_cols''': self.mangle_dupe_cols,
        '''engine''': self.engine,
        '''converters''': self.converters,
        '''true_values''': self.true_values,
        '''false_values''': self.false_values,
        '''skipinitialspace''': self.skipinitialspace,
        '''skiprows''': self.skiprows,
        '''nrows''': self.nrows,
        '''na_values''': self.na_values,
        '''keep_default_na''': self.keep_default_na,
        '''na_filter''': self.na_filter,
        '''verbose''': self.verbose,
        '''skip_blank_lines''': self.skip_blank_lines,
        '''thousands''': self.thousands,
        '''decimal''': self.decimal,
        '''lineterminator''': self.lineterminator,
        '''quotechar''': self.quotechar,
        '''quoting''': self.quoting,
        '''escapechar''': self.escapechar,
        '''comment''': self.comment,
        '''encoding''': self.encoding,
        '''dialect''': self.dialect,
        '''error_bad_lines''': self.error_bad_lines,
        '''warn_bad_lines''': self.warn_bad_lines,
        '''skipfooter''': self.skipfooter,
        '''doublequote''': self.doublequote,
        '''memory_map''': self.memory_map,
        '''float_precision''': self.float_precision,
        '''chunksize''': self.chunksize,
        '''encoding_errors''': self.encoding_errors,
        '''on_bad_lines''': self.on_bad_lines,
        '''date_format''': self.date_format,
    }

    # some kwargs must not be passed if they don't have a default value
    # some others are deprecated and we can also not pass them if they are the default value
    for pd_read_csv_parameter in _PANDAS_READ_CSV_NO_DEFAULT_PARAMETERS + _PANDAS_READ_CSV_DEPRECATED_PARAMETERS:
       if pd_read_csv_kwargs[pd_read_csv_parameter] == getattr(CsvConfig()	,				__UpperCAmelCase				):
          del pd_read_csv_kwargs[pd_read_csv_parameter]

        # Remove 2.0 new arguments
    if not (datasets.config.PANDAS_VERSION.major >= 2):
       for pd_read_csv_parameter in _PANDAS_READ_CSV_NEW_2_0_0_PARAMETERS:
          del pd_read_csv_kwargs[pd_read_csv_parameter]

        # Remove 1.3 new arguments
    if not (datasets.config.PANDAS_VERSION.major >= 1 and datasets.config.PANDAS_VERSION.minor >= 3):
       for pd_read_csv_parameter in _PANDAS_READ_CSV_NEW_1_3_0_PARAMETERS:
          del pd_read_csv_kwargs[pd_read_csv_parameter]

    return pd_read_csv_kwargs



class  __lowerCAmelCase     (	datasets.ArrowBasedBuilder   ):
 lowerCAmelCase__       					=  CsvConfig




 def        lowerCamelCase      (						self				):



    '''simple docstring'''
    return datasets.DatasetInfo(features=self.config.features				)




 def        lowerCamelCase      (						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}"""				)
    __lowerCamelCase													=    dl_manager.download_and_extract(self.config.data_files				)
    if isinstance(__UpperCAmelCase	,				(str, list, tuple)				):
       __lowerCamelCase													=    data_files
       if isinstance(__UpperCAmelCase	,				__UpperCAmelCase				):
          __lowerCamelCase													=    [files]
       __lowerCamelCase													=    [dl_manager.iter_files(__UpperCAmelCase				) for file in files]
       return [datasets.SplitGenerator(name=datasets.Split.TRAIN	,				gen_kwargs={'''files''': files}				)]
    __lowerCamelCase													=    []
    for split_name, files in data_files.items():
       if isinstance(__UpperCAmelCase	,				__UpperCAmelCase				):
          __lowerCamelCase													=    [files]
       __lowerCamelCase													=    [dl_manager.iter_files(__UpperCAmelCase				) for file in files]
       splits.append(datasets.SplitGenerator(name=__UpperCAmelCase	,				gen_kwargs={'''files''': files}				)				)
    return splits




 def        lowerCamelCase      (						self	,				__UpperCAmelCase				):



    '''simple docstring'''




    if self.config.features is not None:
       __lowerCamelCase													=    self.config.features.arrow_schema
       if all(not require_storage_cast(__UpperCAmelCase				) for feature in self.config.features.values()				):
          # cheaper cast
          __lowerCamelCase													=    pa.Table.from_arrays([pa_table[field.name] for field in schema]	,				schema=__UpperCAmelCase				)
       else:
          # more expensive cast; allows str <-> int/float or str to Audio for example
          __lowerCamelCase													=    table_cast(__UpperCAmelCase	,				__UpperCAmelCase				)
    return pa_table




 def        lowerCamelCase      (						self	,				__UpperCAmelCase				):



    '''simple docstring'''
    __lowerCamelCase													=    self.config.features.arrow_schema if self.config.features else None
    # dtype allows reading an int column as str
    __lowerCamelCase													=    (
        {
            name: dtype.to_pandas_dtype() if not require_storage_cast(__UpperCAmelCase				) else object
            for name, dtype, feature in zip(schema.names	,				schema.types	,				self.config.features.values()				)
        }
        if schema is not None
        else None
    )
    for file_idx, file in enumerate(itertools.chain.from_iterable(__UpperCAmelCase				)				):
       __lowerCamelCase													=    pd.read_csv(__UpperCAmelCase	,				iterator=__UpperCAmelCase	,				dtype=__UpperCAmelCase	,				**self.config.pd_read_csv_kwargs				)
       try:
          for batch_idx, df in enumerate(__UpperCAmelCase				):
             __lowerCamelCase													=    pa.Table.from_pandas(__UpperCAmelCase				)
             # 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 (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 inspect
import re

from transformers.utils import direct_transformers_import


# All paths are set with the intent you should run this script from the root of the repo with the command
# python utils/check_config_docstrings.py
a_			=					"""src/transformers"""


# This is to make sure the transformers module imported is the one in the repo.
a_			=					direct_transformers_import(PATH_TO_TRANSFORMERS)

a_			=					transformers.models.auto.configuration_auto.CONFIG_MAPPING

# Regex pattern used to find the checkpoint mentioned in the docstring of `config_class`.
# For example, `[bert-base-uncased](https://huggingface.co/bert-base-uncased)`
a_			=					re.compile(R"""\[(.+?)\]\((https://huggingface\.co/.+?)\)""")


a_			=					{
    """DecisionTransformerConfig""",
    """EncoderDecoderConfig""",
    """MusicgenConfig""",
    """RagConfig""",
    """SpeechEncoderDecoderConfig""",
    """TimmBackboneConfig""",
    """VisionEncoderDecoderConfig""",
    """VisionTextDualEncoderConfig""",
    """LlamaConfig""",
}





def 		a__			(		_UpperCamelCase			: Union[str, Any]							):
   __lowerCamelCase													=    None

   # source code of `config_class`
   __lowerCamelCase													=    inspect.getsource(_UpperCamelCase							)
   __lowerCamelCase													=    _re_checkpoint.findall(_UpperCamelCase							)

   # Each `checkpoint` is a tuple of a checkpoint name and a checkpoint link.
   # For example, `('bert-base-uncased', 'https://huggingface.co/bert-base-uncased')`
   for ckpt_name, ckpt_link in checkpoints:
      # allow the link to end with `/`
      if ckpt_link.endswith('''/'''							):
         __lowerCamelCase													=    ckpt_link[:-1]

      # verify the checkpoint name corresponds to the checkpoint link
      __lowerCamelCase													=    F"""https://huggingface.co/{ckpt_name}"""
      if ckpt_link == ckpt_link_from_name:
         __lowerCamelCase													=    ckpt_name
         break

   return checkpoint





def 		a__			(		):
   __lowerCamelCase													=    []

   for config_class in list(CONFIG_MAPPING.values()							):
      # Skip deprecated models
      if "models.deprecated" in config_class.__module__:
         continue
      __lowerCamelCase													=    get_checkpoint_from_config_class(_UpperCamelCase							)

      __lowerCamelCase													=    config_class.__name__
      if checkpoint is None and name not in CONFIG_CLASSES_TO_IGNORE_FOR_DOCSTRING_CHECKPOINT_CHECK:
         configs_without_checkpoint.append(_UpperCamelCase							)

   if len(_UpperCamelCase							) > 0:
      __lowerCamelCase													=    '''\n'''.join(sorted(_UpperCamelCase							)							)
      raise ValueError(F"""The following configurations don't contain any valid checkpoint:\n{message}"""							)


if __name__ == "__main__":
  check_config_docstrings_have_checkpoints()






