docs: def report(config, output, use, output_dir, accounts,
             field, no_default_fields, tags, region, debug, verbose,
             policy, policy_tags, format, resource, cache_path):
      """report on a cross account policy execution."""
      accounts_config, custodian_config, executor = init(
          config, use, debug, verbose, accounts, tags, policy,
          resource=resource, policy_tags=policy_tags)
  
      resource_types = set()
      for p in custodian_config.get('policies'):
          resource_types.add(p['resource'])
      if len(resource_types) > 1:
          raise ValueError("can only report on one resource type at a time")
      elif not len(custodian_config['policies']) > 0:
          raise ValueError("no matching policies found")
  
      records = []
      with executor(max_workers=WORKER_COUNT) as w:
          futures = {}
          for a in accounts_config.get('accounts', ()):
              for r in resolve_regions(region or a.get('regions', ())):
                  futures[w.submit(
                      report_account,
                      a, r,
                      custodian_config,
                      output_dir,
                      cache_path,
                      debug)] = (a, r)
  
          for f in as_completed(futures):
              a, r = futures[f]
              if f.exception():
                  if debug:
                      raise
                  log.warning(
                      "Error running policy in %s @ %s exception: %s",
                      a['name'], r, f.exception())
              records.extend(f.result())
  
      log.debug(
          "Found %d records across %d accounts and %d policies",
          len(records), len(accounts_config['accounts']),
          len(custodian_config['policies']))
  
      if format == 'json':
          dumps(records, output, indent=2)
          return
  
      prefix_fields = OrderedDict(
          (('Account', 'account'), ('Region', 'region'), ('Policy', 'policy')))
      config = Config.empty()
      factory = resource_registry.get(list(resource_types)[0])
  
      formatter = Formatter(
          factory.resource_type,
          extra_fields=field,
          include_default_fields=not(no_default_fields),
          include_region=False,
          include_policy=False,
          fields=prefix_fields)
  
      rows = formatter.to_csv(records, unique=False)
      writer = UnicodeWriter(output, formatter.headers())
      writer.writerow(formatter.headers())
      writer.writerows(rows)