Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
6f9724c
fix: minor correctness and hygiene fixes from the sync-pipeline audit…
d-v-b Jul 30, 2026
ff17c7e
fix: byte-order handling for structured dtypes in the bytes codec (#220)
d-v-b Jul 14, 2026
eb9a6e7
feat: add the zarr-indexing package (TensorStore-style index transforms)
d-v-b Jul 28, 2026
9a744c3
style: conventional submodule import in the chunk-resolution tests
d-v-b Jul 28, 2026
fb8a2a7
perf(zarr-indexing): joint chunk enumeration for correlated vindex maps
d-v-b Jul 29, 2026
3fd36cd
docs(zarr-indexing): standalone documentation site; add package justfile
d-v-b Jul 30, 2026
733b3c3
chore: drop the already-released 4141 changelog fragment
d-v-b Jul 30, 2026
c3ad000
docs(zarr-indexing): canonicalize ndsel references to zarr-developers…
d-v-b Jul 30, 2026
ec8e70a
chore(deps): bump the python-dependencies group across 1 directory wi…
dependabot[bot] Jul 30, 2026
b0d574b
Merge branch 'main' into feat/zarr-indexing-package
d-v-b Jul 30, 2026
57e66d9
fix: reject malformed chunk keys in DefaultChunkKeyEncoding (#4219)
d-v-b Jul 30, 2026
7390206
Merge branch 'main' into feat/zarr-indexing-package
d-v-b Jul 30, 2026
7241e9a
chore: drop the root uv-workspace wiring for zarr-indexing
d-v-b Jul 30, 2026
6f52da5
fix: gate fused sync fast paths on full store sync capability; wrappe…
d-v-b Jul 30, 2026
53e6dc6
docs: dev blog, performance examples, and compiled 3.3.0 release note…
d-v-b Jul 30, 2026
ea62a0a
Merge branch 'main' into feat/zarr-indexing-package
d-v-b Jul 31, 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
3 changes: 3 additions & 0 deletions .github/workflows/check_changelogs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,6 @@ jobs:

- name: Check zarr-metadata changelog entries
run: uv run --no-sync python ci/check_changelog_entries.py packages/zarr-metadata/changes

- name: Check zarr-indexing changelog entries
run: uv run --no-sync python ci/check_changelog_entries.py packages/zarr-indexing/changes
117 changes: 117 additions & 0 deletions .github/workflows/zarr-indexing-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
name: zarr-indexing release

on:
workflow_dispatch:
push:
tags:
- 'zarr_indexing-v*'

permissions:
contents: read

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

jobs:
build:
name: Build wheel and sdist
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: packages/zarr-indexing
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
fetch-depth: 0 # hatch-vcs needs full history + tags

- name: Install Hatch
uses: pypa/hatch@257e27e51a6a5616ed08a39a408a21c35c9931bc
with:
version: '1.16.5'

- name: Build
run: hatch build

- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: zarr-indexing-dist
path: packages/zarr-indexing/dist

test_artifacts:
name: Test built artifacts
needs: [build]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: zarr-indexing-dist
path: dist

- name: Install uv
uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
with:
enable-cache: false

- name: Set up Python
run: uv python install 3.12

- name: Install built wheel and run import smoke test
run: |
wheel=$(ls dist/*.whl)
uv run --with "${wheel}" --python 3.12 --no-project \
python -c "import zarr_indexing; print('zarr_indexing', zarr_indexing.__version__)"

upload_pypi:
name: Upload to PyPI
needs: [build, test_artifacts]
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/zarr_indexing-v')
runs-on: ubuntu-latest
environment:
name: zarr-indexing-releases
url: https://pypi.org/p/zarr-indexing
permissions:
id-token: write # required for OIDC trusted publishing
attestations: write # required for artifact attestations
steps:
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: zarr-indexing-dist
path: dist

- name: Generate artifact attestation
uses: actions/attest@f7c74d28b9d84cb8768d0b8ca14a4bac6ef463e6 # v4.2.0
with:
subject-path: dist/*

- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0

upload_testpypi:
name: Upload to TestPyPI
needs: [build, test_artifacts]
if: github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
environment:
name: zarr-indexing-releases-test
url: https://test.pypi.org/p/zarr-indexing
permissions:
id-token: write
attestations: write
steps:
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: zarr-indexing-dist
path: dist

- name: Generate artifact attestation
uses: actions/attest@f7c74d28b9d84cb8768d0b8ca14a4bac6ef463e6 # v4.2.0
with:
subject-path: dist/*

- name: Publish package to TestPyPI
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
with:
repository-url: https://test.pypi.org/legacy/
123 changes: 123 additions & 0 deletions .github/workflows/zarr-indexing.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
name: zarr-indexing

on:
push:
branches: [main]
paths:
- 'packages/zarr-indexing/**'
- '.github/workflows/zarr-indexing.yml'
pull_request:
paths:
- 'packages/zarr-indexing/**'
- '.github/workflows/zarr-indexing.yml'
workflow_dispatch:

permissions:
contents: read

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

jobs:
test:
name: pytest py=${{ matrix.python-version }}
runs-on: ubuntu-latest
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
python-version: ['3.12', '3.13', '3.14']
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Install uv
uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
with:
enable-cache: true
- name: Set up Python ${{ matrix.python-version }}
run: uv python install ${{ matrix.python-version }}
# The transform tests exercise chunk resolution against zarr's ChunkGrid,
# so they run from the repo root against the root environment (which
# provides `zarr`) with this package as an editable overlay rather than in
# package isolation.
- name: Sync test dependency group
run: uv sync --group test --python ${{ matrix.python-version }}
- name: Run pytest
run: uv run --no-sync --group test --with-editable ./packages/zarr-indexing python -m pytest packages/zarr-indexing/tests

ruff:
name: ruff
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: packages/zarr-indexing
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Install uv
uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
- name: Run ruff
run: uvx ruff check .

pyright:
name: pyright
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: packages/zarr-indexing
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Install uv
uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
with:
enable-cache: true
- name: Set up Python
run: uv python install 3.12
- name: Sync test dependency group
run: uv sync --group test --python 3.12
- name: Run pyright
run: uv run --group test --with pyright pyright src

docs:
name: docs
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: packages/zarr-indexing
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Install uv
uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
with:
enable-cache: true
- name: Install just
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4
- name: Build docs
# The strict mkdocs build lives in packages/zarr-indexing/justfile.
run: just docs-check

zarr-indexing-complete:
name: zarr-indexing complete
needs: [test, ruff, pyright, docs]
if: always()
runs-on: ubuntu-latest
steps:
- name: Check failure
if: |
contains(needs.*.result, 'failure') ||
contains(needs.*.result, 'cancelled')
run: exit 1
- name: Success
run: echo Success!
15 changes: 7 additions & 8 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,14 @@ build:
python: "3.12"
jobs:
post_checkout:
# Cancel pull request builds whose changes are confined to the
# zarr-metadata package, which has its own Read the Docs project. Exit
# code 183 cancels the build and reports success to the Git provider.
# Scoped to PR builds ("external" versions) because origin/main is only
# a meaningful diff base there. Read the Docs strips shell quoting from
# commands, so the exclude pathspec must use the quote-free :! form,
# not ':(exclude)'.
# Cancel pull request builds whose changes are confined to the packages
# that have their own Read the Docs projects. Exit code 183 cancels the
# build and reports success to the Git provider. Scoped to PR builds
# ("external" versions) because origin/main is only a meaningful diff
# base there. Read the Docs strips shell quoting from commands, so the
# exclude pathspecs must use the quote-free :! form, not ':(exclude)'.
- |
if [ "$READTHEDOCS_VERSION_TYPE" = "external" ] && git diff --quiet origin/main -- :!packages/zarr-metadata;
if [ "$READTHEDOCS_VERSION_TYPE" = "external" ] && git diff --quiet origin/main -- :!packages/zarr-metadata :!packages/zarr-indexing;
then
exit 183;
fi
Expand Down
3 changes: 0 additions & 3 deletions changes/3352.bugfix.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/4128.feature.md

This file was deleted.

11 changes: 0 additions & 11 deletions changes/4157.bugfix.md

This file was deleted.

7 changes: 0 additions & 7 deletions changes/4172.misc.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/4179.bugfix.md

This file was deleted.

3 changes: 0 additions & 3 deletions changes/4183.bugfix.md

This file was deleted.

4 changes: 0 additions & 4 deletions changes/4187.feature.md

This file was deleted.

10 changes: 0 additions & 10 deletions changes/4194.bugfix.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/4199.bugfix.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/4201.bugfix.md

This file was deleted.

10 changes: 0 additions & 10 deletions changes/4202.bugfix.md

This file was deleted.

1 change: 0 additions & 1 deletion changes/4203.bugfix.md

This file was deleted.

16 changes: 0 additions & 16 deletions changes/4204.bugfix.md

This file was deleted.

6 changes: 6 additions & 0 deletions docs/blog/.authors.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
authors:
d-v-b:
name: Davis Bennett
description: Core developer
avatar: https://github.com/d-v-b.png
url: https://github.com/d-v-b
3 changes: 3 additions & 0 deletions docs/blog/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Blog

News, release highlights, and design notes from the Zarr-Python developers.
Loading
Loading