docs: def _dump(file_obj, options, out=sys.stdout):
      """Dump to fo with given options."""
      # writer and keys are lazily loaded. We don't know the keys until we have
      # the first item. And we need the keys for the csv writer.
      total_count = 0
      writer = None
      keys = None
      for row in DictReader(file_obj, options.col):
          if not keys:
              keys = row.keys()
          if not writer:
              writer = csv.DictWriter(out, keys, delimiter=u'\t', quotechar=u'\'', quoting=csv.QUOTE_MINIMAL) \
                  if options.format == 'csv' \
                  else JsonWriter(out) if options.format == 'json' \
                  else None
          if total_count == 0 and options.format == "csv" and not options.no_headers:
              writer.writeheader()
          if options.limit != -1 and total_count >= options.limit:
              return
          row_unicode = {k: v.decode("utf-8") if isinstance(v, bytes) else v for k, v in row.items()}
          writer.writerow(row_unicode)
          total_count += 1