-
Notifications
You must be signed in to change notification settings - Fork 32
ZEP10: Generic extensions (v3.2 spec changes) #344
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Hi @joshmoore, I have a question about the processing model for generic extensions on groups. I can see two options: Option 1 "isolated" - Generic extensions apply to the node (group or array) on which they are declared and no other nodes. Option 2 "inherited" - Generic extensions apply to the node on which they are declared and all descendant nodes. To elaborate a little, under option 1, when an implementation reads the metadata for any given node, then it does not need to read the metadata for any ancestor nodes. I.e., implementations can always assume that each node can safely be accessed and interpreted in isolation from any other nodes. Under option 2, when an implementation reads the metadata for any given node, it would also have to read the metadata for all ancestor nodes. It would then have to collect all generic extension declarations found on the node and its ancestors, and apply them all in some order, when interpreting the given node. FWIW I see a number of potential difficulties with option 2, but I'll wait to check first if these two options are clear and if you had an intention regarding one or the other. |
The document discusses this a bit under I agree that inheriting by default is problematic because it forces you to read all ancestor metadata in all cases. It seems like there are two possible solutions --- explicitly adding an additional extension to add descendants, or some generic metadata field, e.g. Some extensions (like storage transformers) might make it impossible to access the |
|
Definitely agreed that it's a tricky part of this (and why we might even consider moving this whole conversation thread to its own location). If we don't think we can specify the possible ways that unknown extensions might need to refer to siblings (my assumption), then perhaps we can make use of extensibility itself to allow prototyping different mechanisms (my hope). |
|
My thinking is that we don't need to define the behavior of application to sub nodes in this PR and leave it open to the extension specs to define their own behavior. See https://github.com/zarr-developers/zeps/pull/67/files#r2102632220 |
|
A heads up that most of the discussion is currently happening on zarr-developers/zeps#67. I've pushed a few clarification committees there that haven't yet triggered any new committees here. |
|
I had hoped to have some in person meetings to further socialize the general concept here. They didn't materialize. With the (Northern) summer period ramping up, I don't think the aggressive timeline outlined above will be possible. I will summarize the discussion on zarr-developers/zeps#67 including a few questions that are lingering on my side with the hope of having an updated version of the ZEP early August for us to restart the clock. |
|
@joshmoore I realised one potential thing after our chat yesterday about ZEP10 in regards to compatibility with Zarr 3.0. It seems to be supported in this thread to have the following
However, that conflicts with the below snippet from Zarr 3.0 if
If {
"node_type": "group",
...
"extensions": {
"must_understand": true,
"consolidated_metadata": {
"must_understand": false,
...
}
}
}Food for thought... |
That is a good point --- a possible solution would be to use |
|
Closing following this conversation: zarr-developers/zeps#67 (comment) |
This is the implementation of ZEP10 which introduces a generic
extensionsobject.☝🏽 👉🏽 Rendered ZEP10 page: https://zeps--67.org.readthedocs.build/en/67/draft/ZEP0010.html
🗓️ Proposed Timeline for ZEP Feedback and Approval
The @zarr-developers/steering-council is proposing the following timeline for community review and approval of this ZEP. The goal is to hold a vote within 30 days, with the policy that non-response will be interpreted as approval.
📍 Timeline
Days 8–14Days 15–20Days 21–30Day 31If this PR is merged, then Zarr 3.2 will be released and ZEP10 will be moved to the "accepted" status.
✅ Vote Tracking
Please indicate your stance on this ZEP by commenting below.
Legend:
✅ Approve | ❌ Disapprove | 🤔 Abstain | 👍🏽 Endorse (for non-voters) | 👎 Object (for non-voters)
You are welcome to vote or endorse early, but please be aware that subsequent pushes to the PR may substantially change the proposal.
If you have any questions or concerns, please comment on this thread or contact the ZEP editors.