Skip to content

Cast fill value to array's dtype #2020

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

Merged
merged 4 commits into from
Jul 10, 2024
Merged

Conversation

d-v-b
Copy link
Contributor

@d-v-b d-v-b commented Jul 9, 2024

In v3 right now, we don't apply any parsing or validation to the fill_value attribute of an array. This PR fixes that.

In this PR, the fill_value is cast to an instance of the array's dtype, using normal numpy dtype casting semantics. I also added JSON serialization for complex dtypes, but this is not tested yet. I will add those tests as part of a later refactor of the metadata tests.

For v2 arrays, I am importing the v2 fill value parsing function and wrapping it in a very light wrapper. This preserves all the v2 behavior.

I also added a fill_value attribute to the Array class. Happy to remove this if it's not supposed to be there.

I put the metadata tests in a new directory structure: tests/v3/metadata/test_v2.py for v2 stuff and tests/v3/metadata/test_v3.py for v3 stuff. This keeps the v2 and v3 logic separated, and removes the need to name functions test_foo_v3 and the like. We should ultimately use an analogous layout in the library code.

Longer term we should support the raw bits datatypes defined in the zarr v3 spec, but I don't think we need that now.

TODO:

  • Add unit tests and/or doctests in docstrings
  • Add docstrings and API docs for any new/modified user-facing classes and functions
  • New/modified features documented in docs/tutorial.rst
  • Changes documented in docs/release.rst
  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

@d-v-b d-v-b requested review from jhamman and normanrz July 9, 2024 14:57
Copy link
Member

@normanrz normanrz left a comment

Choose a reason for hiding this comment

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

Great work!

@d-v-b d-v-b merged commit b8baa68 into zarr-developers:v3 Jul 10, 2024
24 checks passed
@d-v-b d-v-b deleted the cast_fill_value branch July 10, 2024 15:39
dcherian added a commit to dcherian/zarr-python that referenced this pull request Jul 25, 2024
* v3: (22 commits)
  chore: update pre-commit hooks (zarr-developers#2051)
  Apply ruff/flake8-bandit rule B006 (zarr-developers#2049)
  Move fixtures to `tests` (zarr-developers#1813)
  Multiple imports for an import name (zarr-developers#2047)
  Redundant list comprehension (zarr-developers#2048)
  chore: update pre-commit hooks (zarr-developers#2039)
  Cast fill value to array's dtype (zarr-developers#2020)
  chore: update pre-commit hooks (zarr-developers#2017)
  make shardingcodec pickleable  (zarr-developers#2011)
  doc: copy 3.0.0.alpha changelog into release.rst (zarr-developers#2007)
  build(ci): enable python 3.12 in github actions (zarr-developers#2005)
  Bump NumPy to 2.0 (zarr-developers#1983)
  chore: update pre-commit hooks (zarr-developers#1989)
  Fix indexing with bools (zarr-developers#1968)
  Fix string interpolation (zarr-developers#1998)
  Unnecessary comprehension (zarr-developers#1997)
  Stop ignoring these ruff rules (zarr-developers#2001)
  Merge collapsible if statements (zarr-developers#1999)
  Unnecessary comprehension (zarr-developers#1996)
  Handle Path in `make_store_path` (zarr-developers#1992)
  ...
@dcherian dcherian mentioned this pull request Jul 25, 2024
6 tasks
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.

2 participants