Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
68f6a82
docs: design spec for zarrs-backed low-level functional API
d-v-b Jun 11, 2026
79c0bce
docs: implementation plan for zarrs functional API phase 1
d-v-b Jun 12, 2026
2eb3b6f
feat: scaffold zarrs-bindings PyO3 crate
d-v-b Jun 12, 2026
bfc0b64
fix: single-source zarrs-bindings version from Cargo.toml
d-v-b Jun 12, 2026
5982c04
feat: add zarr.zarrs package skeleton and test scaffolding
d-v-b Jun 12, 2026
e821d70
fix: pass exc_type to importorskip in zarrs conftest
d-v-b Jun 12, 2026
88c0c4d
feat: sync store bridge for zarrs bindings
d-v-b Jun 12, 2026
737e82e
refactor: review polish for zarrs store bridge
d-v-b Jun 12, 2026
6b8f603
feat: zarrs store bridge and group creation
d-v-b Jun 12, 2026
32573fd
docs: document phase-1 error fidelity and creation race; cargo fmt
d-v-b Jun 12, 2026
f6a95e4
feat: zarrs-backed array creation and metadata reads
d-v-b Jun 12, 2026
59fd58d
test: v2 array creation via zarrs; review polish
d-v-b Jun 12, 2026
2faace5
feat: zarrs-backed node deletion and child listing
d-v-b Jun 12, 2026
dcaf5ef
feat: zarrs-backed whole-chunk decode/encode/raw-read/erase
d-v-b Jun 12, 2026
63429b5
fix: coerce chunk dtype to native byte order for zarrs I/O
d-v-b Jun 12, 2026
e5dc482
chore: lint fixes and changelog for zarr.zarrs
d-v-b Jun 12, 2026
9dd5abd
ci: test job for zarrs bindings
d-v-b Jun 12, 2026
7226b8d
fix: keep zarr.zarrs out of doctest collection; pin Rust toolchain in CI
d-v-b Jun 12, 2026
2b2a6b5
fix: make zarrs test skip xdist-compatible
d-v-b Jun 12, 2026
100a7cb
feat: decode_region with numpy-style basic indexing
d-v-b Jun 12, 2026
ccbf962
fix: keep empty-selection decode_region result read-only
d-v-b Jun 13, 2026
8895224
docs: note decode_region overread; tidy selection normalizer
d-v-b Jun 15, 2026
5faf198
perf: cache constructed Arrays for native filesystem stores
d-v-b Jun 15, 2026
983afbb
fix: recover from poisoned Array-cache mutex instead of wedging
d-v-b Jun 15, 2026
0087a7e
docs: record Array construction cache in design spec
d-v-b Jun 15, 2026
cb87cae
docs: design spec for backend-agnostic CRUD layer
d-v-b Jun 15, 2026
5ae3bb2
docs: consistent CRUD verb set (create/read/write/delete/list)
d-v-b Jun 15, 2026
c7af305
docs: simplify CRUD reads to two non-overlapping addressing axes
d-v-b Jun 15, 2026
3740888
docs: make read_encoded_chunk a facade store.get helper, not a backen…
d-v-b Jun 15, 2026
a9cdae6
docs: implementation plan for backend-agnostic CRUD layer
d-v-b Jun 15, 2026
c2e11e1
feat: zarr.crud skeleton — CrudBackend protocol, registry, config
d-v-b Jun 15, 2026
29d1262
fix: friendly error for missing zarrs backend; document protocol limits
d-v-b Jun 15, 2026
3d3784d
feat: pure-Python ReferenceBackend for zarr.crud
d-v-b Jun 15, 2026
9197a02
fix: honor v2 memory order in ReferenceBackend chunk codec spec
d-v-b Jun 15, 2026
cc7fa45
feat: zarr.crud shared facade + differential suite (reference backend)
d-v-b Jun 15, 2026
9dd680a
refactor: share parse_array_metadata; document bytes contract; OOB test
d-v-b Jun 15, 2026
26af3e4
feat: ZarrsBackend conforms to CrudBackend; zarr.zarrs is now a backend
d-v-b Jun 15, 2026
03c80d7
docs/ci: zarr.crud changelog and CI coverage
d-v-b Jun 15, 2026
c8ce00e
fix: reference backend matches zarrs on v2 groups and all-fill chunk …
d-v-b Jun 15, 2026
75d44ae
test: track zarrs v2-group attribute divergence as strict xfail; docu…
d-v-b Jun 15, 2026
0094048
refactor: move zarrs-bindings crate under packages/ (repo convention)
d-v-b Jun 16, 2026
551dec3
Merge branch 'main' into zarrs-bindings
d-v-b Jun 16, 2026
ee35e90
Merge branch 'main' into zarrs-bindings
d-v-b Jun 16, 2026
4e94249
Merge branch 'main' into zarrs-bindings
d-v-b Jun 16, 2026
004ce2e
Merge branch 'main' into zarrs-bindings
d-v-b Jun 16, 2026
fd51cd4
Merge branch 'main' into zarrs-bindings
d-v-b Jun 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/workflows/zarrs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Zarrs bindings

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
fetch-depth: 0 # hatch-vcs needs tags to compute zarr's version
persist-credentials: false
- name: Install uv
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with:
python-version: '3.12'
- name: Install Rust
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
- name: Run zarrs bindings tests
# the ubuntu runner image ships a Rust toolchain; the maturin build
# backend is fetched by uv on demand
run: uv run --group zarrs pytest tests/crud tests/zarrs -v
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,6 @@ zarr.egg-info/

# zarr-metadata package lockfile (a library, not an app)
packages/zarr-metadata/uv.lock

# zarrs-bindings Rust build artifacts
packages/zarrs-bindings/target/
9 changes: 9 additions & 0 deletions changes/+zarrs-bindings.feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Added `zarr.crud`, an experimental backend-agnostic low-level functional API for
zarr hierarchy CRUD (`create_*`, `read_chunk`, `read_region`, `read_encoded_chunk`,
`write_chunk`, `delete_chunk`, `read_metadata`, `delete_node`, `list_children`).
Array routines take an explicit metadata document, enabling read-only views.
Operations delegate to a pluggable `CrudBackend`: a pure-Python reference backend
(the default) or the zarrs-accelerated backend in `zarr.zarrs`, backed by the Rust
[zarrs](https://zarrs.dev) crate via the in-repo `zarrs-bindings` PyO3 crate.
Select a backend with the `crud.backend` config key or a per-call `backend=`
argument. Build the zarrs backend for development with `uv sync --group zarrs`.
Loading
Loading