html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue https://github.com/pydata/xarray/pull/6475#issuecomment-1254062705,https://api.github.com/repos/pydata/xarray/issues/6475,1254062705,IC_kwDOAMm_X85Kv3px,6528957,2022-09-21T18:15:26Z,2022-10-29T02:45:24Z,CONTRIBUTOR,"sorry about the long delay here. This has been updated for the V3 store paths used in Zarr >v2.12 and to remove the need for specifying `path` with v3 stores. To do: - [x] wait for zarr v2.13 release, hopefully also including a new fix in #https://github.com/zarr-developers/zarr-python/pull/1142 - [x] update at least one CI test case to run the tests with zarr v2.13 and ZARR_V3_EXPERIMENTAL_API=1 enviroment variable A separate issue is that consolidated metadata isn't in the core Zarr v3 spec, so we will need to have a Zarr Enhancement Proposal to formally define how the metadata should be stored. In the experimental API, it behaves as for v2 and is stored at `/meta/root/consolidated` by default.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1200581329 https://github.com/pydata/xarray/pull/6475#issuecomment-1294266012,https://api.github.com/repos/pydata/xarray/issues/6475,1294266012,IC_kwDOAMm_X85NJO6c,6528957,2022-10-28T00:33:24Z,2022-10-28T00:33:24Z,CONTRIBUTOR,I am happy for someone to take over if possible. Thank you.,"{""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1200581329 https://github.com/pydata/xarray/pull/6475#issuecomment-1099265057,https://api.github.com/repos/pydata/xarray/issues/6475,1099265057,IC_kwDOAMm_X85BhXQh,6528957,2022-04-14T14:48:39Z,2022-04-14T14:55:07Z,CONTRIBUTOR,"> Does Zarr v3 have a notion of a ""root"" group? That feels like a more sensible default to me, both for Xarray and Zarr-Python I think we likely need to introduce a separate `Hierarchy` class as in the early [zarrita](https://github.com/alimanfoo/zarrita) python prototype and the [xtensor-zarr](https://github.com/xtensor-stack/xtensor-zarr) C++ implementation to be able to access the root via public API. The concept of ""hierarchy"" as a collection of Nodes which are either Arrays or Groups is mentioned in the spec, but there is no corresponding class for this in zarr-python currently. One issue with relying only on `Array` and `Group` as currently implemented in Zarr-Python is that we can create array nodes outside of any group subfolder. e.g. one can currently create an Array directly at path 'array1' and this would put the chunks under `'data/root/array1/'`, and metadata at `'meta/root/array1.array.json'`. However, the root itself is not a `Group`. A group is basically a subfolder under root (e.g.' `open_group` with path = `group1` creates `'/meta/root/group1/'` folder and `'meta/root/group1.group.json'` metadata). There is no mechanism in the spec to open root directly as a `Group`! > This sounds fine for now, but I am concerned that it will slow the adoption of Zarr v3. Eventually, we would presumably want to change the default to version 3, but this is difficult to do if it entirely breaks backwards compatibility. We did define `DEFAULT_ZARR_VERSION=2` (privately). If we update that variable to 3 in a future release, the default when `zarr_version` is not specified will change. > My preference would be for the default behavior to try opening Zarr v2, and fall back to opening in v3 mode, even if this requires attempting to open a file from the store. This is similar to how Xarray handles other Zarr versioning issues (e.g., for consolidated metadata). Perhaps Zarr-Python could raise an informative error that we could catch if the Zarr version is incorrect, or even handle this behavior itself? Yeah, something like this seems feasible on the Zarr side for convenience routines like `open_group`. The v3 spec **requires** `zarr.json` metadata that specifies the protocol version. If we traverse up the directory tree and do not find this file, then it is not a valid v3 or later spec and we can try opening it as v2. ","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1200581329