Fix CI ValueError on NumPy 2.x by avoiding VLENUTF8 string dtype in tests #853
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes the CI failures triggered by recent NumPy 2.x changes that were causing test initialization to crash with a ValueError.
While investigating #847, I found that several test fixtures were creating Zarr datasets using
dtype=str. With NumPy ≥ 2.0 this path goes through the VLENUTF8 codec in numcodecs, which performs boolean checks that are no longer allowed and result in the following error:ValueError: The truth value of an array with more than one element is ambiguous
What changed
In the affected test fixtures,
dtype=strhas been replaced withdtype="U"(NumPy fixed-length Unicode dtype).This keeps the stored data as strings while avoiding the VLENUTF8 code path entirely.
Why this approach
Impact
Verification
dtype=strusage exists outside testsThis should unblock the current CI failures and allow dependent PRs to proceed without introducing version constraints or behavioral changes.
Fixes #847