class_docstr: CSV record parser
class_docstr_tok: ["CSV","record","parser"]
docstr: Return the CSV reader for the data using the configured delimiter, etc
  
  Returns:
      StringIO: Open CSV reader object or False upon error
docstr_tok: ["Return","the","CSV","reader","for","the","data","using","the","configured","delimiter",",","etc","Returns",":","StringIO",":","Open","CSV","reader","object","or","False","upon","error"]
code: def _get_reader(self, data):
      """Return the CSV reader for the data using the configured delimiter, etc
  
      Returns:
          StringIO: Open CSV reader object or False upon error
      """
      try:
          if isinstance(data, bytes):
              data = data.decode()
          return csv.reader(
              io.StringIO(data),
              delimiter=self.delimiter,
              quotechar=self.quotechar,
              escapechar=self.escapechar,
          )
      except (ValueError, csv.Error):
          return False
  
imports: from abc import ABCMeta, abstractmethod
  from copy import deepcopy
  import csv
  from fnmatch import fnmatch
  import json
  import logging
  import re
  import io
  import jmespath
  from streamalert.shared.logger import get_logger
label_desc: Use image node_id 4 for calling the CSVParser obj's underlying member method code with example usage: obj._get_reader(data) and returns: csv, False