Release Notes
Version history and notable changes for the svy-io Python package.
All notable changes to svy-io, high-speed reading and writing of survey files (SAS, SPSS, Stata) as Polars frames via ReadStat, are recorded here. Releases follow Semantic Versioning; the layout follows Keep a Changelog. Part of the svy project.
Unreleased
0.1.1 — 2026-07-12
Fixed
- SAS datetime values are now decoded correctly. Datetime formats were matched by a
"date"prefix test, soDATETIMEcolumns were sent through the days-since-1960 date path and lost their time-of-day. Datetime formats are now checked first and decoded against a trueDatetimeepoch, preserving the time component. Also fixes anAttributeErroron variables with a null format on the defaultread_savpath. - Numeric ID columns stay numeric. The magnitude/name-based temporal inference heuristics are now gated behind
infer_temporal_formats(opt-in), so numeric identifier columns are no longer coerced to dates/times. as_factor(levels="both")on numeric coded columns no longer mis-handles literal separators; values are stringified before theCategoricalcast.write_savno longer mutates the caller’svalue_labels.- All file-like reader inputs work again (a missing
tempfileimport crashed them). - FFI hardening. Builder pre-allocation is clamped to 65,536 rows so a crafted header can no longer drive a multi-GB eager allocation and abort the process; ReadStat callbacks are wrapped in panic guards that raise Python exceptions instead of aborting; the XPT writer now emits all record batches (rows after the first batch were silently dropped) and handles StringView/dictionary columns.
Packaging
- Source builds and Intel macOS now work. The sdist previously shipped without ReadStat’s C sources (an
includeglob matched zero files), so every source build failed — and Intel Macs always hit that path because nox86_64-apple-darwinwheel was published. The sdist now bundles all ReadStat sources, and prebuilt Intel macOS wheels are published.
0.1.0 — 2026-05
First release tracked in this changelog. For earlier history, see the Git tags.