class_docstr: CSV record parser
class_docstr_tok: ["CSV","record","parser"]
docstr: Extract record(s) from the csv data using the specified schema
  
  Args:
      data (list<str>): List of strings representing a csv row.
      schema (dict): Schema to be used for parsing.
  
  Returns:
      list<tuple>: List of tuples with records and their parsing status
          Examples: [({'key': 'value'}, True)]
docstr_tok: ["Extract","record","(","s",")","from","the","csv","data","using","the","specified","schema","Args",":","data","(","list","<","str",">",")",":","List","of","strings","representing","a","csv","row",".","schema","(","dict",")",":","Schema","to","be","used","for","parsing",".","Returns",":","list","<","tuple",">",":","List","of","tuples","with","records","and","their","parsing","status","Examples",":","[","(","{","'key","'",":","'value","'","}",",","True",")","]"]
code: def _extract_records(self, data, schema):
      """Extract record(s) from the csv data using the specified schema
  
      Args:
          data (list<str>): List of strings representing a csv row.
          schema (dict): Schema to be used for parsing.
  
      Returns:
          list<tuple>: List of tuples with records and their parsing status
              Examples: [({'key': 'value'}, True)]
      """
      csv_payloads = []
      for item in data:
          reader = self._get_reader(item)
          if not reader:
              csv_payloads.append((item, False))
              continue
  
          try:
              for row in reader:
                  parsed_payload = self._parse_row(row, schema)
                  result = parsed_payload if parsed_payload else row
                  # Append the result and whether or not it was a success
                  csv_payloads.append(
                      (result, result is parsed_payload)
                  )
          except csv.Error:
              csv_payloads.append((item, False))
  
      return csv_payloads
  
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 6 for calling the CSVParser obj's underlying member method code with example usage: obj._extract_records(data, schema) and returns: csv_payloads