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.