Skip to content

Fix consolidated-metadata staleness in deep iteration, require_array dtype check, attribute-update semantics, and sync timeout cancellation - #190

Draft
d-v-b wants to merge 8 commits into
mainfrom
claude/group-sync-misc-bugfixes
Draft

d-v-b wants to merge 8 commits into
mainfrom
claude/group-sync-misc-bugfixes

Conversation

@d-v-b

@d-v-b d-v-b commented Jun 12, 2026 •

Copy link
Copy Markdown
Owner

🤖 AI text below 🤖

Fixes group, sync, and GPU-wrapper issues, including recursive member option forwarding, optional dtype validation in require_array, async attribute merging, safe sync dispatch, and GPU buffer behavior.

The child-consolidation flag affects groups loaded during traversal; an already-consolidated root remains authoritative. Review corrected that distinction and added a 16-case sync/async, V2/V3, root/child consolidation matrix. Integration with current main preserves parse_data_type support. The deprecation example now explicitly selects V2 when recommending a numcodecs compressor.

Validation: 936 group/sync/consolidation tests plus 27 V2 tests passed; mypy and all commit hooks passed. GPU paths were inspected but could not be executed without CUDA.

dependabot Bot and others added 7 commits May 31, 2026 19:28
…#176)

Bumps the actions group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [prefix-dev/setup-pixi](https://github.com/prefix-dev/setup-pixi) | `0.9.5` | `0.9.6` |
| [codecov/codecov-action](https://github.com/codecov/codecov-action) | `6.0.0` | `6.0.1` |
| [github/issue-metrics](https://github.com/github/issue-metrics) | `4.2.2` | `4.2.7` |
| [j178/prek-action](https://github.com/j178/prek-action) | `2.0.3` | `2.0.4` |
| [actions/upload-artifact](https://github.com/actions/upload-artifact) | `7.0.0` | `7.0.1` |
| [actions/download-artifact](https://github.com/actions/download-artifact) | `7.0.0` | `8.0.1` |
| [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) | `1.13.0` | `1.14.0` |
| [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) | `0.5.3` | `0.5.6` |



Updates `prefix-dev/setup-pixi` from 0.9.5 to 0.9.6
- [Release notes](https://github.com/prefix-dev/setup-pixi/releases)
- [Commits](prefix-dev/setup-pixi@1b2de7f...5185adf)

Updates `codecov/codecov-action` from 6.0.0 to 6.0.1
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@57e3a13...e79a696)

Updates `github/issue-metrics` from 4.2.2 to 4.2.7
- [Release notes](https://github.com/github/issue-metrics/releases)
- [Commits](github-community-projects/issue-metrics@c9e9838...1e38d5e)

Updates `j178/prek-action` from 2.0.3 to 2.0.4
- [Release notes](https://github.com/j178/prek-action/releases)
- [Commits](j178/prek-action@6ad8027...bdca6f1)

Updates `actions/upload-artifact` from 7.0.0 to 7.0.1
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v7...043fb46)

Updates `actions/download-artifact` from 7.0.0 to 8.0.1
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@v7...3e5f45b)

Updates `pypa/gh-action-pypi-publish` from 1.13.0 to 1.14.0
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](pypa/gh-action-pypi-publish@v1.13.0...cef2210)

Updates `zizmorcore/zizmor-action` from 0.5.3 to 0.5.6
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](zizmorcore/zizmor-action@b1d7e1f...5f14fd0)

---
updated-dependencies:
- dependency-name: prefix-dev/setup-pixi
  dependency-version: 0.9.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: codecov/codecov-action
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: github/issue-metrics
  dependency-version: 4.2.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: j178/prek-action
  dependency-version: 2.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
- dependency-name: actions/download-artifact
  dependency-version: 8.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
- dependency-name: pypa/gh-action-pypi-publish
  dependency-version: 1.14.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
- dependency-name: zizmorcore/zizmor-action
  dependency-version: 0.5.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…bute-update semantics, and sync timeout cancellation

B11: _members() and Group.members() ignored use_consolidated_for_children when
the root group itself had consolidated metadata, causing all descendants to be
served from the stale cache.  Fix: skip the consolidated fast-path when the
flag is False, and pass the flag through the recursive _iter_members_deep call.

B12: Group.update_attributes_async replaced attributes instead of merging them,
diverging from every other update path.  Fix: merge with existing attributes
before writing.

B13: AsyncGroup.require_array converted dtype=None to np.dtype(None) = float64,
then rejected any existing array whose dtype was not castable to float64.
Fix: skip the dtype check entirely when the caller did not supply a dtype.

B14: The zarr.storage.default_compressor deprecation warning pointed users to
array.v2_default_compressor.numeric, a config key that was itself removed in
3.1.0.  Fix: update the message to recommend the compressors= argument.

B15: sync() did not cancel the underlying concurrent.futures.Future on timeout,
leaving the coroutine running indefinitely on the IO thread.
Fix: call future.cancel() before raising TimeoutError.

B16: NDBuffer.create on GPU used cp.empty when fill_value is None, diverging
from the CPU path which uses np.zeros.  Fix: mirror CPU semantics.

Adds typed regression tests for B11-B15; GPU test for B16 deferred to CI.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Refresh the branch with current main, retain parse_data_type support, and verify consolidated child selection across formats and APIs.

Assisted-by: Codex:GPT-6

This branch has not been deployed

No deployments
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.

1 participant