Skip to content
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

mypy fixes for NumPy 2.1.0 #2139

Merged
merged 3 commits into from
Aug 30, 2024

Conversation

TomAugspurger
Copy link
Contributor

This includes some fixes to get mypy type checks passing.

Closes #2131

This includes some fixes to get mypy type checks passing.
@@ -37,7 +38,7 @@ async def _decode_single(
crc32_bytes = data[-4:]
inner_bytes = data[:-4]

computed_checksum = np.uint32(crc32c(inner_bytes)).tobytes()
computed_checksum = np.uint32(crc32c(cast(typing_extensions.Buffer, inner_bytes))).tobytes()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't inner_bytes a numpy array, not a buffer here? So it needs to be converted to a buffer, not just have it's type cast? Maybe I'm misunderstanding something here...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, it is an ndarray. At least as far as my copy of mypy is concerned, that's not sufficient for this type check to pass. This might have changed in newer versions of python though.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are ndarrays also Buffers in reality then?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here's the definition of Buffer: https://github.com/python/typing_extensions/blob/d9509f902c20e3d51c62b8abe522809b4760c0ff/src/typing_extensions.py#L3316-L3342

In python 3.12, a new ABC was added, to cover the addition of a Python API to the buffer protocol: https://peps.python.org/pep-0688/

For 3.11 and earlier, ndarrays are compatible with Buffer (they implement the buffer protocol) but apparently mypy doesn't know that.

src/zarr/codecs/crc32c_.py Show resolved Hide resolved
Co-authored-by: David Stansby <dstansby@gmail.com>
@dstansby dstansby merged commit 6ea9997 into zarr-developers:v3 Aug 30, 2024
25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[v3] New Mypy errors now on v3 branch
2 participants