CSV Inspect
Read schema and samples, not the whole file. Do not start analysis until this output exists.
When to use
- User wants headers, preview rows, shape, encoding, or delimiter
- Any later step will parse a
.csv/.tsv/.tab/.txttable
Stop after inspect if that was the whole request. For rankings, z-scores, or a written report, inspect first, then use a separate analysis path.
Command
csv-inspect must be on PATH. Run it in the shell. Do not call
scripts/csv-inspect. Do not prefix with python3. Do not reimplement this
inspect in Python.
csv-inspect /path/to/some.csv
csv-inspect /path/to/some.csv --head 10 --tail 3
csv-inspect /path/to/some.csv --json
Do not cat / read the raw file to "see columns". Do not load the table into
pandas just to print columns or head.
What you must take from the output
names: use these strings exactly (case, spaces, punctuation)encoding/delimiter: pass the same when you lateropen/read_csvtypes: inferred from--scanrows (default 200).dateincludesYYYY-MMperiod strings — do not treat them as Excel serials; split orto_datetimeexplicitly.samplevalues may come from later rows too.rows: data rows only (header excluded unless--no-header)
Hard rules
- Inspect before any groupby / z-score / report write.
- Failures must show a traceback. Do not wrap the first parse in
except Exception as e: print(e). - Never dump a large table into the transcript.
--headdefaults to 5; raise it only if the user asked for more. - If
columnsis 1 and values contain;or\t, re-run with the printeddelimiteror inspect a larger sample — the sniffer can be wrong on tiny files. - After a successful inspect, do not re-inspect in a loop. Proceed or stop.
Done criteria
-
csv-inspectwas run on the target file via the shell - Column names in later code match
namesexactly - Raw file was not bulk-read into context
- If the user only asked for preview/schema, you stopped after the inspect output
