Lockstep major-version cut alongside the protowire v1.0 spec freeze and `protowire-cpp` v1.0.0, which this port wraps via the nanobind FFI. Breaking — there is no alias period; v1.0 is itself the major bump.
Python API rename
| Before | After |
|---|---|
| `pxf.TableDirective` | `pxf.DatasetDirective` |
| `pxf.TableReader` | `pxf.DatasetReader` |
| `pxf.Result.tables` | `pxf.Result.datasets` |
| — | `pxf.ProtoDirective` + `pxf.ProtoShape` (new) |
| — | `pxf.Result.protos: tuple[ProtoDirective, ...]` (new) |
FFI shape change
`_protowire.pxf_unmarshal_full` now returns a 6-tuple `(raw, set_paths, null_paths, directives, datasets, protos)`. The cpp side surfaces `ProtoDirective` as a `(shape, type_name, body)` tuple; Python wraps it into the new frozen dataclass with `shape` typed as `Literal["anonymous", "named", "source", "descriptor"]`.
Install
```
pip install protowire-python==1.0.0
```
Built with cibuildwheel — Linux x86_64/aarch64, Windows AMD64, macOS arm64, plus the sdist.
Lockstep v1.0 ports
See the protowire v1.0.0 release for the full lockstep table.