class_docstr: CSV record parser
class_docstr_tok: ["CSV","record","parser"]
docstr: Parse a string into a comma separated value reader object
  
  Args:
      data (str): Data to be parsed.
  
  Returns:
      list<tuple>: List of tuples with records and their parsing status
          Examples: [({'key': 'value'}, True)]
docstr_tok: ["Parse","a","string","into","a","comma","separated","value","reader","object","Args",":","data","(","str",")",":","Data","to","be","parsed",".","Returns",":","list","<","tuple",">",":","List","of","tuples","with","records","and","their","parsing","status","Examples",":","[","(","{","'key","'",":","'value","'","}",",","True",")","]"]
code: def _parse(self, data):
      """Parse a string into a comma separated value reader object
  
      Args:
          data (str): Data to be parsed.
  
      Returns:
          list<tuple>: List of tuples with records and their parsing status
              Examples: [({'key': 'value'}, True)]
      """
      extracted_data = []
      if self._json_path:
          # Support extraction of csv data within json
          extracted_data = self._json_path_records(data)
          if not extracted_data:
              return [(data, False)]
  
      # Fall back on the data as default if extraction failed
      data = extracted_data or [data]
  
      return self._extract_records(data, self._schema)
  
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 5 for calling the CSVParser obj's underlying member method code with example usage: obj._parse(data) and returns: self, list