class_docstr: Abstract Parser class to be inherited by all StreamAlert Parsers
class_docstr_tok: ["Abstract","Parser","class","to","be","inherited","by","all","StreamAlert","Parsers"]
docstr: Add the result of parsing to the proper array, updating the envelope in the process
  
  Args:
      record (dict): Value of the parsed (or unparsed, if failed) record
      valid (bool): True if the parsing was successful, False otherwise
      envelope (dict): Extracted envelope to be added to the parsed record
docstr_tok: ["Add","the","result","of","parsing","to","the","proper","array",",","updating","the","envelope","in","the","process","Args",":","record","(","dict",")",":","Value","of","the","parsed","(","or","unparsed",",","if","failed",")","record","valid","(","bool",")",":","True","if","the","parsing","was","successful",",","False","otherwise","envelope","(","dict",")",":","Extracted","envelope","to","be","added","to","the","parsed","record"]
code: def _add_parse_result(self, record, valid, envelope):
      """Add the result of parsing to the proper array, updating the envelope in the process
  
      Args:
          record (dict): Value of the parsed (or unparsed, if failed) record
          valid (bool): True if the parsing was successful, False otherwise
          envelope (dict): Extracted envelope to be added to the parsed record
      """
      if not valid:
          self._invalid_parses.append(record)
          return
  
      self._apply_envelope(record, envelope)
      self._add_optional_keys(
          record, self._schema, self._optional_top_level_keys
      )
  
      self._valid_parses.append(record)
  
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 23 for calling the ParserBase obj's underlying member method code with example usage: obj._add_parse_result(record, valid, envelope) without return types