class_docstr: Encapsulates a single alert and handles serializing to Dynamo and merging.
class_docstr_tok: ["Encapsulates","a","single","alert","and","handles","serializing","to","Dynamo","and","merging","."]
docstr: Remove ignored keys from every level of the record.
  
  Args:
      record (dict): Record to traverse
      ignored_keys (set): Set of keys to remove from the record
  
  Returns:
      dict: A new record, with no ignored_keys
docstr_tok: ["Remove","ignored","keys","from","every","level","of","the","record",".","Args",":","record","(","dict",")",":","Record","to","traverse","ignored_keys","(","set",")",":","Set","of","keys","to","remove","from","the","record","Returns",":","dict",":","A","new","record",",","with","no","ignored_keys"]
code: def _clean_record(cls, record, ignored_keys):
      """Remove ignored keys from every level of the record.
  
      Args:
          record (dict): Record to traverse
          ignored_keys (set): Set of keys to remove from the record
  
      Returns:
          dict: A new record, with no ignored_keys
      """
      result = {}
      for key, val in record.items():
          if key in ignored_keys:
              continue
          result[key] = (
              cls._clean_record(val, ignored_keys)
              if isinstance(val, dict)
              else val
          )
      return result
  
imports: from datetime import datetime, timedelta
  import json
  import uuid
  from streamalert.shared import resources, utils
label_desc: Use image node_id 12 for calling the Alert obj's underlying member method code with example usage: obj._clean_record(cls, record, ignored_keys) and returns: result