-
Notifications
You must be signed in to change notification settings - Fork 58
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
Pin numcodecs to version that support python 3.10 #549
base: branch-24.12
Are you sure you want to change the base?
Pin numcodecs to version that support python 3.10 #549
Conversation
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.
Can we allow newer numcodecs versions on newer Python versions? Why is the upper bound necessary? Are there significant incompatibilities between 0.13 and 0.14?
Also needs an update here:
kvikio/conda/recipes/kvikio/meta.yaml
Line 74 in d40b7e4
- numcodecs !=0.12.0 |
864e382
to
d8dd17d
Compare
Co-authored-by: Bradley Dice <[email protected]>
The 0.14 pypi package doesn't offer python 3.10 support. Outside of that I have no idea what kind of compatibility there is between releases. |
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.
Thanks Rob! 🙏
Added suggestions below for the pinnings. Think we need them a bit tighter
Co-authored-by: jakirkham <[email protected]>
This is a good question. Perhaps first it is helpful to provide some context around the existing pin? We added this pin due to a bug in Numcodecs' entrypoint handling logic that occurred in As to newer versions of Numcodecs, periodically it does add new optional codecs. Sometimes there are small fixes or improvements to existing ones. The API has been pretty stable for a while Looking at the diff between 0.12.1 and 0.14, it appears Python 3.10 was dropped (as discussed above), some dependencies were bumped or new versions supported (like NumPy 2), Zarr v3 (unreleased) support was added, a new cyclic redundancy check (CRC) with optional dependency was added, existing CRCs got a new optional flag, a performance fix to the Think the real question is, are we ok with having some drift between what our oldest supported Python version (currently 3.10) and what our newest supported Python version (currently 3.12) can be installed with? And if so, are there any changes we may need to make elsewhere to adapt to this reality? If not, should we start constraining all our dependencies based on the oldest Python version we support (and when do we refresh them)? Admittedly we might want to have this discussion in somewhere more general than this PR for greater visibility and easier referencing. Though wanted to follow up here since this is where the questions came up |
Yes, we are usually happy with allowing drift here. If we pin all our dependencies to only those version ranges that work with all our supported Python versions, we would be too tightly pinned for broad compatibility with the Python ecosystem. If the numcodecs APIs we use are compatible with 0.13 and 0.14, we should not exclude 0.14. |
I have expanded the comment in 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 have expanded the comment in the
dependencies.yaml
with more context on the pinning.
@robertmaynard Did you push? I don't see the context / comments. Blocking merge until we can figure out why this needs the upper bound.
dependencies.yaml
Outdated
@@ -356,7 +356,7 @@ dependencies: | |||
- numpy>=1.23,<3.0a0 | |||
- zarr | |||
# See https://github.com/zarr-developers/numcodecs/pull/475 |
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.
Is the PR linked above still relevant? I think it may be safe to remove this comment now.
Somehow didn't push. Updated now |
dependencies.yaml
Outdated
# Pinned to the 0.13 for the following reasons: | ||
# https://github.com/zarr-developers/numcodecs/pull/475 | ||
# 0.14.0 doesn't offer python 3.10 support | ||
- numcodecs>=0.13.0,<0.14.0a0 |
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.
Not every version in this range needs to support every Python version that we build for. We only need one compatible version of numcodecs
in this range for each Python version we support. It is fine to let Python 3.11 and 3.12 float to numcodecs 0.14 (or newer) even if Python 3.10 can only use 0.13.
Can we relax this?
# Pinned to the 0.13 for the following reasons: | |
# https://github.com/zarr-developers/numcodecs/pull/475 | |
# 0.14.0 doesn't offer python 3.10 support | |
- numcodecs>=0.13.0,<0.14.0a0 | |
- numcodecs>=0.13.0 |
Updated to allow all version >= 0.13.0 |
No description provided.