Source code for mario.plugins.write
"""Functions for write commands."""
from __future__ import annotations
import csv
import io
import itertools
import typing as t
import yaml
[docs]def write_csv_dicts(rows: t.Iterable[t.Dict], header: bool, dialect: str) -> str:
"""Write iterable of dicts to csv."""
file = io.StringIO()
iterator = iter(rows)
first_row = next(iterator)
fieldnames = list(first_row.keys())
writer = csv.DictWriter(file, fieldnames=fieldnames, dialect=dialect)
if header:
writer.writeheader()
writer.writerows(itertools.chain([first_row], iterator))
return file.getvalue()
[docs]def write_csv_tuples(rows: t.Iterable[t.Tuple], dialect: str) -> str:
"""Write iterable of tuples to csv."""
file = io.StringIO()
writer = csv.writer(file, dialect)
writer.writerows(rows)
return file.getvalue()
[docs]def write_yaml(data) -> str:
"""Write data to yaml string."""
file = io.StringIO()
yaml.dump(data, file)
return file.getvalue()