CSV Desk delivery practice pack — October 29, 2026

All data is fictional. Keep an untouched copy.
Requires Python 3.9+. Tested with Python 3.14.9 on macOS.
No extra packages, network requests or spreadsheet uploads.

From this extracted folder:
python3 test_csv_delivery.py
python3 csv_delivery.py split split-input.csv split-output --rows 3
python3 csv_delivery.py compare changes-before.csv changes-after.csv changes-output --key record_id

On Windows with Python launcher installed, replace python3 with py -3 (not tested here).
Output folders must be new; parent folders must exist. An interrupted run may leave a partial folder: use outputs only with a completed summary.json.
CSV files use UTF-8 with BOM, commas, double quotes and CRLF record endings.
Input limit 5 MB each; field limit 1000000 characters; split limit 1000 parts.
The helper reads data into memory, retains strings, and does not sanitize spreadsheet formulas.

Compare changes-expected-status.csv and changes-expected-fields.csv with generated reports.
Split expected boundaries are in split-expected-counts.csv.
CSV source and expected files are static parser fixtures, not Excel workbooks.
The test runner uses temporary folders and leaves original fixture files unchanged.

Tutorials:
https://csvfieldguide.com/guides/split-csv-by-records/
https://csvfieldguide.com/guides/compare-csv-field-changes/
