fix(format): parse HDF5 2.0 native complex datatypes (class 11)
Class 11 (datatype version 5) properties are a single base floating-point
datatype message, not a compound-style member list. The old parser read the
base type's bytes as member names, yielding a garbage datatype, and failed
with UnexpectedEof when a complex type was nested in a compound.
Parse the base type and surface the type as the equivalent {r, i} compound
(the shape h5py writes for numpy complex dtypes), with a size check against
the base type. Covered by byte-level tests taken from HDF5 2.0 output and an
h5py end-to-end test (writer_h5py_tests is now 27/27 against HDF5 2.0.0).
Found while validating a user report of InvalidDatatypeVersion
{ class: 6, version: 5 } against v2.1.0 (already fixed on main in a13ff51,
never released). Add docs/known-issues.md recording that report, this bug,
the open reference-v4 gap and a gpu_tests parallel-run hang; credit the
reporter in the changelog.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
48c745a960
commit
b55b7dbac5
@@ -245,6 +245,16 @@
|
||||
reading compound types and — critically — every chunked/compressed dataset
|
||||
written by HDF5 2.0. Found by running the h5py interop tests against
|
||||
h5py 3.16 / HDF5 2.0.
|
||||
Independently reported (with a patch) against the v2.1.0 tag by
|
||||
M. Scot Breitenfeld (The HDF Group) — v2.1.0 predates this fix.
|
||||
- `clawhdf5-format`: parse HDF5 2.0 native complex datatypes (class 11,
|
||||
datatype version 5, e.g. `H5T_COMPLEX_IEEE_F64LE`). The properties are a
|
||||
single base floating-point datatype, not a compound-style member list; the
|
||||
old parser read the base type's bytes as member names, producing a garbage
|
||||
datatype, and failed with `UnexpectedEof` when a complex type was nested in
|
||||
a compound. It is now surfaced as the equivalent `{r, i}` compound (the
|
||||
shape h5py writes for numpy complex dtypes), with a size check against the
|
||||
base type. Validated end-to-end against an HDF5 2.0-written file.
|
||||
|
||||
### Performance
|
||||
- `clawhdf5-format`: chunked writes now compress all chunks up front via
|
||||
|
||||
Reference in New Issue
Block a user