diff --git a/packages/zarr-metadata/changes/4574.bugfix.1.md b/packages/zarr-metadata/changes/4574.bugfix.1.md index 0d387acd14..53a5935723 100644 --- a/packages/zarr-metadata/changes/4574.bugfix.1.md +++ b/packages/zarr-metadata/changes/4574.bugfix.1.md @@ -1,7 +1 @@ -**Breaking:** A problem in a v2 struct dtype is located where the document - writes it. A record's problem was located under a `fields` key the - document does not have, at `("dtype", "fields", 0, 1)`; it is now at - `("dtype", 0, 1)`, and carries the value found there as its `input`. - `declarations()` places each record's type there too. A definition's - functions still find the record types in `nested` at - `("fields", 0, 1)`, their place in the configuration. +**Breaking:** Every problem is now located where the document writes the value. The v2 readers and the v2 models' `from_key_value` locate a problem in the file that holds it, such as `(".zarray", "order")` or `(".zattrs", "x")`, instead of in the merged document, and a v2 array node reading's `at` is now `(".zarray",)`. A problem in a v2 struct record is at `("dtype", 0, 1)` instead of under a `fields` key the document does not have, a codec's missing configuration member, such as the `endian` of a `bytes` codec, is reported inside the configuration it writes, or at `codecs.N.configuration` when it writes none, and a codec handed values it cannot encode is reported at `codecs.N` however it is spelled. diff --git a/packages/zarr-metadata/changes/4574.bugfix.10.md b/packages/zarr-metadata/changes/4574.bugfix.10.md deleted file mode 100644 index e06b2d6d3d..0000000000 --- a/packages/zarr-metadata/changes/4574.bugfix.10.md +++ /dev/null @@ -1,5 +0,0 @@ -Each problem `read_consolidated_metadata_v3` finds in the inline - `consolidated_metadata` member itself, such as a `kind` that is not - `"inline"` or a key that is not a node path, carries the value found at - its location as its `input`, as every other reader's problems do. Its - `input` was unset. diff --git a/packages/zarr-metadata/changes/4574.bugfix.2.md b/packages/zarr-metadata/changes/4574.bugfix.2.md index 4342fc151c..b0a67f448e 100644 --- a/packages/zarr-metadata/changes/4574.bugfix.2.md +++ b/packages/zarr-metadata/changes/4574.bugfix.2.md @@ -1,4 +1 @@ -A v2 dtype written as the string `"struct"` is refused as a string that is - not a NumPy typestr, like any other, instead of being read as a struct - with no records. `struct` is the name the definition of a records array - is filed under, not part of the v2 dtype grammar. +**Breaking:** The v2 readers now agree with the v3 readers. A `.zarray` member the spec does not define may hold `NaN` and the infinities, a `.zmetadata` key that does not name its node's path, such as `/a/.zarray`, is refused instead of being read as the node at `a`, and a `.zgroup` that holds `attributes` is an `invalid_value` rather than an `unknown_key`, so a caller who tolerates unknown keys no longer drops those attributes. diff --git a/packages/zarr-metadata/changes/4574.bugfix.3.md b/packages/zarr-metadata/changes/4574.bugfix.3.md index adec05b00c..b69507e86d 100644 --- a/packages/zarr-metadata/changes/4574.bugfix.3.md +++ b/packages/zarr-metadata/changes/4574.bugfix.3.md @@ -1,5 +1 @@ -A group listed in v3 consolidated metadata whose own document has a problem, - such as attributes that are not an object, is reported for that problem - alone. It was also reported for disagreeing with the outer listing's copy - of the same node, a difference that came only from the problem. A copy - whose only problem is an unknown key is still compared. +Various mistakes in v2 and consolidated metadata are now reported once, at their own location, with the right kind and message. A float where an integer from a fixed set is required, such as `"zarr_format": 2.0`, is an `invalid_type`, and a v2 typestr with a part its family does not take, such as `