1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//! The Zarr extension point registry for the `zarrs` crate.
//!
//! Zarr V3 extension points include data types, codecs, chunk grids, chunk key encodings, and storage transformers.
//! Additionally, [`ZEP0009`] introduces a new `extension` metadata field for arbitrary array and group extensions.
//!
//! Zarr V2 extension points are limited to data types and codecs.
//!
//! ### Extension Aliasing
//!
//! An extension point `name` (or `id` in Zarr V2) may change over time as the Zarr specification and extensions evolve.
//! For example, the `bytes` codec was originally called `endian` in the provisionally accepted Zarr V3 specification.
//! Aliasing of `name`s enables seamless backward compatibility and interoperability between different Zarr versions, Zarr implementations, and extension versions (where compatible).
//!
//! This crate defines a *unique extension identifier* for each known extension in each extension point.
//! Known aliases for an extension can be mapped to their unique extension identifier that can be mapped to a default `name` for metadata serialisation.
//! Extension alias maps can be mutated to support custom extensions or to override the defaults.
//!
//! *Unique extension identifiers* are an implementation detail and may not match extension `name`s.
//! However, they are publicly exposed to permit manipulation of aliases and default names.
//!
//! ### Extension Name Conventions
//! Prior to [`ZEP0009`], a Zarr V3 extension point `name` was encouraged to be a unique URI pointing to a specification of the extension.
//! [`ZEP0009`] revises conventions for extension point naming:
//! - private or experimental extensions must use a *namespaced name* (e.g. `numcodecs.bitround`, `zarrs.vlen`, etc.), and
//! - extensions registered at [`zarr-extensions`] can use a *raw name*, such as `bfloat16`, or a *namespaced name*.
//!
//! ### Alias Maps
//! This crate provides [`Default`] alias maps for Zarr V2 and V3 extension points.
//! The alias maps define the list of known compatible extension point aliases and a *default* `name` for each extension point.
//! The default `name` is what will be serialised when creating a new array or group, unless overriden.
//! Alias maps are currently limited to codecs and data types, but they may be extended to other extension types in the future.
//!
//! In the [`zarrs`] crate, the extension point aliases can be configured to support custom extensions or to override the defaults, such as if [`zarrs_metadata`](`crate`) is lagging [`zarr-extensions`].
//! This crate will be continually updated to include new compatible extension point aliases as they are developed in other implementations and registered at [`zarr-extensions`].
//!
//! ## Licence
//! `zarrs_registry` is licensed under either of
//! - the Apache License, Version 2.0 [LICENSE-APACHE](https://docs.rs/crate/zarrs_registry/latest/source/LICENCE-APACHE) or <http://www.apache.org/licenses/LICENSE-2.0> or
//! - the MIT license [LICENSE-MIT](https://docs.rs/crate/zarrs_registry/latest/source/LICENCE-MIT) or <http://opensource.org/licenses/MIT>, at your option.
//!
//! Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
//!
//! [`ZEP0009`]: https://zarr.dev/zeps/draft/ZEP0009.html
//! [`zarrs`]: https://docs.rs/zarrs/latest/zarrs/index.html
//! [`zarr-extensions`]: https://github.com/zarr-developers/zarr-extensions
pub use ;
pub use ;
pub use ;
pub use ExtensionAliasesChunkGridV3;
pub use ExtensionAliasesChunkKeyEncodingV3;
pub use ;
pub use ;
pub use ExtensionAliasesStorageTransformerV3;
/// Unique identifiers for _chunk grid_ extensions.
/// Unique identifiers for _chunk key encoding_ extensions.
/// Unique identifiers for _codec_ extensions.
/// Unique identifiers for _data type_ extensions.
/// Unique identifiers for _storage transformer_ extensions.