code: def preflightInfo(info):
      
      missingRequired = set()
      missingRecommended = set()
      for attr in requiredAttributes:
          if not hasattr(info, attr) or getattr(info, attr) is None:
              missingRequired.add(attr)
      for attr in recommendedAttributes:
          if not hasattr(info, attr) or getattr(info, attr) is None:
              missingRecommended.add(attr)
      return dict(missingRequired=missingRequired, missingRecommended=missingRecommended)
docs: Returns a dict containing two items. The value for each
      item will be a list of info attribute names.
  
      ==================  ===
      missingRequired     Required data that is missing.
      missingRecommended  Recommended data that is missing.
      ==================  ===