parameters: (self, f, **kwds)
docstring: Workhorse function for processing nested list into DataFrame
docstring_summary: Workhorse function for processing nested list into DataFrame
docstring_tokens: Workhorse function for processing nested list into DataFrame
function: def __init__(self, f, **kwds):
          """
          Workhorse function for processing nested list into DataFrame
          """
          ParserBase.__init__(self, kwds)
  
          self.data = None
          self.buf = []
          self.pos = 0
          self.line_pos = 0
  
          self.encoding = kwds["encoding"]
          self.compression = kwds["compression"]
          self.memory_map = kwds["memory_map"]
          self.skiprows = kwds["skiprows"]
  
          if callable(self.skiprows):
              self.skipfunc = self.skiprows
          else:
              self.skipfunc = lambda x: x in self.skiprows
  
          self.skipfooter = _validate_skipfooter_arg(kwds["skipfooter"])
          self.delimiter = kwds["delimiter"]
  
          self.quotechar = kwds["quotechar"]
          if isinstance(self.quotechar, str):
              self.quotechar = str(self.quotechar)
  
          self.escapechar = kwds["escapechar"]
          self.doublequote = kwds["doublequote"]
          self.skipinitialspace = kwds["skipinitialspace"]
          self.lineterminator = kwds["lineterminator"]
          self.quoting = kwds["quoting"]
          self.usecols, _ = _validate_usecols_arg(kwds["usecols"])
          self.skip_blank_lines = kwds["skip_blank_lines"]
  
          self.warn_bad_lines = kwds["warn_bad_lines"]
          self.error_bad_lines = kwds["error_bad_lines"]
  
          self.names_passed = kwds["names"] or None
  
          self.has_index_names = False
          if "has_index_names" in kwds:
              self.has_index_names = kwds["has_index_names"]
  
          self.verbose = kwds["verbose"]
          self.converters = kwds["converters"]
  
          self.dtype = kwds["dtype"]
          self.thousands = kwds["thousands"]
          self.decimal = kwds["decimal"]
  
          self.comment = kwds["comment"]
          self._comment_lines = []
  
          f, handles = get_handle(
              f,
              "r",
              encoding=self.encoding,
              compression=self.compression,
              memory_map=self.memory_map,
          )
          self.handles.extend(handles)
  
          # Set self.data to something that can read lines.
          if hasattr(f, "readline"):
              self._make_reader(f)
          else:
              self.data = f
  
          # Get columns in two steps: infer from data, then
          # infer column indices from self.usecols if it is specified.
          self._col_indices = None
          (
              self.columns,
              self.num_original_columns,
              self.unnamed_cols,
          ) = self._infer_columns()
  
          # Now self.columns has the set of columns that we will process.
          # The original set is stored in self.original_columns.
          if len(self.columns) > 1:
              # we are processing a multi index column
              (
                  self.columns,
                  self.index_names,
                  self.col_names,
                  _,
              ) = self._extract_multi_indexer_columns(
                  self.columns, self.index_names, self.col_names
              )
              # Update list of original names to include all indices.
              self.num_original_columns = len(self.columns)
          else:
              self.columns = self.columns[0]
  
          # get popped off for index
          self.orig_names = list(self.columns)
  
          # needs to be cleaned/refactored
          # multiple date column thing turning into a real spaghetti factory
  
          if not self._has_complex_date_col:
              (index_names, self.orig_names, self.columns) = self._get_index_name(
                  self.columns
              )
              self._name_processed = True
              if self.index_names is None:
                  self.index_names = index_names
  
          if self.parse_dates:
              self._no_thousands_columns = self._set_no_thousands_columns()
          else:
              self._no_thousands_columns = None
  
          if len(self.decimal) != 1:
              raise ValueError("Only length-1 decimal markers supported")
  
          if self.thousands is None:
              self.nonnum = re.compile(fr"[^-^0-9^{self.decimal}]+")
          else:
              self.nonnum = re.compile(fr"[^-^0-9^{self.thousands}^{self.decimal}]+")
function_tokens: def __init__ ( self , f , * * kwds ) : ParserBase . __init__ ( self , kwds ) self . data = None self . buf = [ ] self . pos = 0 self . line_pos = 0 self . encoding = kwds [ "encoding" ] self . compression = kwds [ "compression" ] self . memory_map = kwds [ "memory_map" ] self . skiprows = kwds [ "skiprows" ] if callable ( self . skiprows ) : self . skipfunc = self . skiprows else : self . skipfunc = lambda x : x in self . skiprows self . skipfooter = _validate_skipfooter_arg ( kwds [ "skipfooter" ] ) self . delimiter = kwds [ "delimiter" ] self . quotechar = kwds [ "quotechar" ] if isinstance ( self . quotechar , str ) : self . quotechar = str ( self . quotechar ) self . escapechar = kwds [ "escapechar" ] self . doublequote = kwds [ "doublequote" ] self . skipinitialspace = kwds [ "skipinitialspace" ] self . lineterminator = kwds [ "lineterminator" ] self . quoting = kwds [ "quoting" ] self . usecols , _ = _validate_usecols_arg ( kwds [ "usecols" ] ) self . skip_blank_lines = kwds [ "skip_blank_lines" ] self . warn_bad_lines = kwds [ "warn_bad_lines" ] self . error_bad_lines = kwds [ "error_bad_lines" ] self . names_passed = kwds [ "names" ] or None self . has_index_names = False if "has_index_names" in kwds : self . has_index_names = kwds [ "has_index_names" ] self . verbose = kwds [ "verbose" ] self . converters = kwds [ "converters" ] self . dtype = kwds [ "dtype" ] self . thousands = kwds [ "thousands" ] self . decimal = kwds [ "decimal" ] self . comment = kwds [ "comment" ] self . _comment_lines = [ ] f , handles = get_handle ( f , "r" , encoding = self . encoding , compression = self . compression , memory_map = self . memory_map , ) self . handles . extend ( handles ) # Set self.data to something that can read lines. if hasattr ( f , "readline" ) : self . _make_reader ( f ) else : self . data = f # Get columns in two steps: infer from data, then # infer column indices from self.usecols if it is specified. self . _col_indices = None ( self . columns , self . num_original_columns , self . unnamed_cols , ) = self . _infer_columns ( ) # Now self.columns has the set of columns that we will process. # The original set is stored in self.original_columns. if len ( self . columns ) > 1 : # we are processing a multi index column ( self . columns , self . index_names , self . col_names , _ , ) = self . _extract_multi_indexer_columns ( self . columns , self . index_names , self . col_names ) # Update list of original names to include all indices. self . num_original_columns = len ( self . columns ) else : self . columns = self . columns [ 0 ] # get popped off for index self . orig_names = list ( self . columns ) # needs to be cleaned/refactored # multiple date column thing turning into a real spaghetti factory if not self . _has_complex_date_col : ( index_names , self . orig_names , self . columns ) = self . _get_index_name ( self . columns ) self . _name_processed = True if self . index_names is None : self . index_names = index_names if self . parse_dates : self . _no_thousands_columns = self . _set_no_thousands_columns ( ) else : self . _no_thousands_columns = None if len ( self . decimal ) != 1 : raise ValueError ( "Only length-1 decimal markers supported" ) if self . thousands is None : self . nonnum = re . compile ( fr"[^-^0-9^{self.decimal}]+" ) else : self . nonnum = re . compile ( fr"[^-^0-9^{self.thousands}^{self.decimal}]+" )