Parquet Options
ParquetReader and ParquetWriter are Polars-only — no engine argument — so any Polars read/write option passes straight through as a keyword argument. See the Readers and Writers reference for full signatures.
Read-Option Passthrough
Set options on the constructor (applied to every read) or per call (merged over the constructor’s, per-call wins). This is the exact same passthrough mechanism as the Excel reader — keyword arguments forwarded verbatim to Polars. Because pl.read_parquet exposes its options as plain top-level parameters (columns, n_rows, …), you pass them directly; there is no dict to wrap them in (unlike pl.read_excel, whose calamine options live inside a read_options dict — a difference in the Polars signatures, not in Datagrunt).
# Read only specific columns
reader.to_dataframe(columns=['name', 'city'])
# Read at most 100 rows
reader.to_dataframe(n_rows=100)The key source is reserved — the file path is controlled exclusively through the constructor — and passing it raises a ValueError.
Write-Option Passthrough
write_parquet re-encodes Parquet → Parquet, and any Polars writer option (for example compression=) passes straight through as a keyword argument:
writer = ParquetWriter('data.parquet')
writer.write_parquet('recompressed.parquet', compression='zstd')Formula Injection Safety
Values are written verbatim — Datagrunt preserves data, it does not sanitize it. For spreadsheet-interpreted output formats (write_csv and write_excel), a value beginning with =, +, -, or @ is treated as a formula when opened in Excel / LibreOffice / Google Sheets (CSV/formula injection, CWE-1236). See Formula Injection Safety for details — if your source data is untrusted, sanitize at the application layer.