-
-
Notifications
You must be signed in to change notification settings - Fork 283
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
Doc/v3 migration guide #2102
base: main
Are you sure you want to change the base?
Doc/v3 migration guide #2102
Conversation
One thing that might be helpful: what's the group's tolerance for either compatibility code or deprecations as a way to ease the transition? It sounds like strict backwards compatibility (perhaps with warnings) isn't a goal. Is there tolerance for things like #2098 (e.g. restore some properties to the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left some comments - I'll mark this as request changes since it still needs major additions.
1. Pin the supported Zarr-Python version to ``zarr>=2,<3``. This is a best practice and will protect your users from any incompatibilities that may arise during the release of Zarr-Python 3.0. | ||
2. Limit your imports from the Zarr-Python package. Most of the primary API ``zarr.*`` will be compatible in 3.0. However, the following breaking API changes are planned: | ||
|
||
- ``numcodecs.*`` will no longer be available in ``zarr.*``. (Suggested action: transition to importing codecs from ``numcodecs`` directly.) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- ``numcodecs.*`` will no longer be available in ``zarr.*``. (Suggested action: transition to importing codecs from ``numcodecs`` directly.) | |
- ``zarr.numcodecs.*`` will no longer be available. These imports can be replaced by importing ``numcodecs`` directly. |
We should be doing more than "suggesting", we should be providing concrete fixes/code updates!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Even if there isn't a reasonable way to deprecate the imports, as a minimum this migration guide should provide a complete list of all imports that are disappearing and how to replace them.
docs/migration.rst
Outdated
- The following internal modules are being removed or significant changed: | ||
|
||
- ``zarr.attrs`` | ||
- ``zarr.codecs`` | ||
- ``zarr.context`` | ||
- ``zarr.core`` | ||
- ``zarr.hierarchy`` | ||
- ``zarr.indexing`` | ||
- ``zarr.meta`` | ||
- ``zarr.meta_v1`` | ||
- ``zarr.storage`` | ||
- ``zarr.sync`` | ||
- ``zarr.types`` | ||
- ``zarr.util`` | ||
- ``zarr.n5`` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs a clear list of how to update code to adapt to these removals or changes.
Co-authored-by: David Stansby <[email protected]>
I just came here following the link from #1849. Currently, this guide feels very incomplete, and since #2182 is now in-flight, I think this guide should become very clear. From the perspective of a maintainer / close user of a bunch of libraries that depend on zarr but have extremely limited maintainer time, the most important thing I want to understand is how hard it will be to support both zarr 2.18 and zarr 3+ within a single library. I think this is the critical question for a smooth transition, because it is hard for libraries to all migrate at the same time, and you want libraries to be installable together in the same environment — you don't want someone depending on both napari and ome-zarr to face napari requiring zarr>=3 and ome-zarr requiring zarr<3. So many libraries would want to support the subset of zarr that is identical in v3 and v2 until everyone can agree to depend on 3+. |
@jni - thanks for the feedback. I agree this is not ready to ship yet. The main things that we know are changing is the |
If we want downstream packages to test with version 3.0.0a1, it might be good to do a blog post or add something to the docs explaining how to do that testing, what to look for, and how to provide feedback? |
Well, @Czaki started doing that for us in napari/napari#7215 and @d-v-b has been helping 🙏. It looks like one of the remaining issues is that But I think we can resolve this by explicitly writing a v2 zarr in the test?
Something along the lines of:
(An exhaustive list of such changes would be useful.) |
Tensorstore has supported zarr v3 for a long time: https://google.github.io/tensorstore/driver/zarr3/index.html |
oh, interesting, thanks for pointing that out @d-v-b! I couldn't actually find the relevant PR but did not look exhaustively. 🙏 |
A few changes I've found while updating xarray. Are all of these intentional?
|
Over the past few weeks, we've had a number of conversations/questions about the policy for backward compatibility, deprecations, and breaking changes with the upcoming 3.0 release. This doc is meant to help us iterate toward common language. In its initial form, it is not complete.
Goals for the text here:
cc @zarr-developers/python-core-devs