docs: def generate_policy(self, config):
          # type: (Config) -> Dict[str, Any]
          """Auto generate policy for an application."""
          # Admittedly, this is pretty bare bones logic for the time
          # being.  All it really does it work out, given a Config instance,
          # which files need to analyzed and then delegates to the
          # appropriately analyzer functions to do the real work.
          # This may change in the future.
          app_py = os.path.join(config.project_dir, 'app.py')
          assert self._osutils.file_exists(app_py)
          app_source = self._osutils.get_file_contents(app_py, binary=False)
          app_policy = policy_from_source_code(app_source)
          app_policy['Statement'].append(CLOUDWATCH_LOGS)
          if config.subnet_ids and config.security_group_ids:
              app_policy['Statement'].append(VPC_ATTACH_POLICY)
          return app_policy