CSV sources#
CSV capture is available in the development source. The published
0.1.0.dev0 package predates this functionality.
Configure an explicit local CSV source, a schema and resource limits as shown in Local format source boundary. The source ID identifies the same logical dataset across captures. Choose it deliberately: changing a path does not change that identity, and using the same ID for unrelated datasets can make them appear comparable.
Provide the lowercase SHA-256 of the file’s exact bytes as --source-version
to pipewhy scan. The file must still match that digest during the entire
read. Once a scan completes, its snapshot can be reopened, compared and exported
without the original file. An unavailable, malformed, changed or oversized file
produces an unavailable capture with a reason; partial records are discarded.
The header must exactly match the configured field names and order. The supported
scalar types are text, boolean, signed and unsigned 8-, 16-, 32- and 64-bit
integers, finite decimal, finite binary64 and supported ISO timestamps. Each field
has an explicit stable ID and null-marker policy. A null marker applies after CSV
decoding whether the source field was quoted or unquoted. Nested values and
unlisted types are unsupported. Strict normalization is the default; select
--profile logical-v1 to opt in to logical equivalence.
Limit source, record and field bytes, field count, batch records, batch words and total records in the configuration. The reader also respects the interpreter’s existing CSV field-character limit. Complete capture counts are the rows observed after verification, not an independently supplied upstream count. Source lineage is unknown unless supported by evidence; no upstream lineage is inferred from the file. Remote object storage is not part of this local CSV reader.