|
| 1 | +**Breaking:** a v3 array's `codecs` are read as a pipeline: in order -- |
| 2 | +array -> array codecs, then one array -> bytes codec, then bytes -> bytes |
| 3 | +codecs -- and each codec judged against the chunk it is handed, which is |
| 4 | +the grid's chunks of the array's data type, as the array -> array codecs |
| 5 | +before it hand them on. A codec out of order, a second array -> bytes |
| 6 | +codec or none at all; a `bytes` codec without an `endian` handed numbers |
| 7 | +of several bytes, or handed values that vary in size; a `transpose` whose |
| 8 | +`order` has another number of axes than its chunk; a `cast_value` to or |
| 9 | +from a data type that models no real numbers, wrapping to one that is |
| 10 | +not integral, or mapping a scalar that is not a fill value of the data |
| 11 | +type on its side; a `scale_offset` handed values that are no numbers, or |
| 12 | +with an `offset` or `scale` that is not a value of its data type; and a |
| 13 | +struct field whose values vary in size are each a problem where they |
| 14 | +sit, where the package accepted them before. `read_pipeline(codecs, |
| 15 | +chunk)` gives each codec with the chunk it is handed, |
| 16 | +`chunk_grid_lengths(grid, shape)` the lengths a grid's chunks take, and |
| 17 | +`storage_of(data_type)` how a data type's values are stored. A |
| 18 | +definition's `rules` are handed the fields its configuration holds as |
| 19 | +the scope read them, and the kinds gain `chunk_lengths` (grids), |
| 20 | +`storage` (data types), and `chunk_rules` and `transition` (codecs). |
0 commit comments