Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
d4b2c1d
fix: allow 0.6 as version in 0.6rc1
jo-mueller Aug 14, 2026
91652df
Merge pull request #186 from jo-mueller/allow-06
joshmoore Aug 19, 2026
5e521cf
fix: allow 0.6 as version in 0.6rc1
jo-mueller Aug 14, 2026
8eafab8
Consolidate codespell config in pyproject.toml
clbarnes Aug 11, 2026
9ca5e53
Add dev commands to justfile
clbarnes Aug 11, 2026
f852414
Remove tox
clbarnes Aug 11, 2026
38b3b49
Fix: use extras correctly in uv run
clbarnes Aug 11, 2026
5c76733
Fix version strings (#193)
DragaDoncila Aug 24, 2026
4dde15b
feat: remove warning about experimental nature (#189)
jo-mueller Aug 25, 2026
fbe0f13
Merge branch '0.9dev' into justfile
joshmoore Aug 25, 2026
8c8d074
Add just to dependencies
clbarnes Aug 25, 2026
d9e9eab
Update contributing to use uv, just
clbarnes Aug 25, 2026
2213106
More just docs
clbarnes Aug 25, 2026
f9c70b6
Merge branch 'main' into justfile
clbarnes Aug 25, 2026
eb227a4
fix: describe byDimension axes as indices, and a typo in image.schema…
vboussot Aug 28, 2026
c9c1851
Change input name from 'intrinsic' to 'physical' (#199)
clbarnes Aug 28, 2026
c69c54c
Fix table formatting for multiscale image metadata (#185)
lubianat Aug 28, 2026
ab15835
Merge branch 'main' into 0.9.dev2
clbarnes Sep 2, 2026
a1189a1
Remove strict schemas and tests
clbarnes Sep 2, 2026
f76fe7f
0.9.dev1 -> 0.9.dev2
clbarnes Sep 2, 2026
ff76dd9
Update editorconfig
clbarnes Sep 2, 2026
5726f70
Fix broken cross-reference
clbarnes Sep 2, 2026
ea44b60
Fix anchors and references
clbarnes Sep 2, 2026
5c56d86
Merge branch 'justfile' into 0.9.dev2
clbarnes Sep 2, 2026
d561e11
Update dependencies
clbarnes Sep 2, 2026
fb94f8b
pre-commit and other justfile fixes
clbarnes Sep 2, 2026
c23a44c
Add pre-commit configuration
clbarnes Sep 2, 2026
9620785
pre-commit configuration
clbarnes Sep 2, 2026
272aa7a
Add pre-commit configuration to CI
clbarnes Sep 2, 2026
f2f4ef8
Fix trailing whitespace
clbarnes Sep 2, 2026
fa33930
Fix end-of-file newline
clbarnes Sep 2, 2026
1c0e625
Format JSON
clbarnes Sep 2, 2026
ec9e639
Fix editorconfig-checker rules
clbarnes Sep 2, 2026
026137d
fix: schema version enum ordering
clbarnes Sep 2, 2026
d010dca
Add htmlproofer on CI
clbarnes Sep 2, 2026
68afb1f
Run build-lint and codespell on every PR
clbarnes Sep 2, 2026
8d16cf5
Remove html-proofer
clbarnes Sep 2, 2026
b06b276
minor format in pre_build
clbarnes Sep 2, 2026
ae4c2ac
just clean recipe
clbarnes Sep 2, 2026
726f234
Split just clean into prebuild and build
clbarnes Sep 2, 2026
21e7d5f
Minor formatting in version_history.md
clbarnes Sep 2, 2026
61ae3c3
Remove changelog items unrelated to spec
clbarnes Sep 3, 2026
bd9e605
Just recipe for viewing built site
clbarnes Sep 3, 2026
4f50e13
Bump jupyterbook dependency to 2.0.2
clbarnes Sep 15, 2026
028a281
Pull in 0.6 release changelog entry
clbarnes Sep 15, 2026
f662a8f
Fix broken link
clbarnes Sep 15, 2026
584f56f
Prepend version to anchors
clbarnes Sep 15, 2026
6fbbd23
Use absolute URL to refer to schemas
clbarnes Sep 15, 2026
06c0d17
Minor fixes from v0.6 release PR
clbarnes Sep 15, 2026
5a06b2b
Fix dependencies for tests
clbarnes Sep 15, 2026
111474e
Refer to current release as 0.9.dev2 in changelog
clbarnes Sep 15, 2026
c2d16ce
Fix test config file discovery
clbarnes Sep 15, 2026
8343e87
Finish porting codespell config
clbarnes Sep 15, 2026
c9d27e8
Remove validation tests for examples
clbarnes Sep 18, 2026
1de9dd7
Use absolute IRIs in all cross-doc JSONSchema refs
clbarnes Sep 23, 2026
a5af658
replace commented-out htmlproofer config with TODO
clbarnes Sep 23, 2026
133217c
Update supported versions in schema
clbarnes Sep 23, 2026
569466f
CoordinateSystem table
clbarnes Sep 2, 2026
c2c3e27
Axes tables
clbarnes Sep 2, 2026
10f77ca
Coordinate transformation tables
clbarnes Sep 2, 2026
0f4acab
multiscales tables
clbarnes Sep 2, 2026
485d7ee
label tables
clbarnes Sep 2, 2026
f5db8e5
plate tables
clbarnes Sep 2, 2026
5998a61
well table
clbarnes Sep 2, 2026
8f994e5
scene table
clbarnes Sep 2, 2026
a92c76a
Rework table referencing
clbarnes Sep 3, 2026
953d9c2
rework referencing
clbarnes Sep 4, 2026
a454224
Use only 1 type of anchor definition
clbarnes Sep 23, 2026
ab0ab96
Merge pull request #3 from clbarnes/0.9.dev2-tables
clbarnes Sep 23, 2026
13fea68
version bump script
clbarnes Sep 16, 2026
0e0c9ef
WIP version-bumping script
clbarnes Sep 18, 2026
43507e9
Remove text-replacing functions
clbarnes Sep 23, 2026
5591563
Use myst-substitutions
clbarnes Sep 23, 2026
75c59d9
Use myst-substitutions in bumpversion
clbarnes Sep 23, 2026
ccecfff
Update citing.md
clbarnes Sep 23, 2026
a6da3e7
fix typo
clbarnes Sep 23, 2026
6524bbd
Roll back myst-substitutions
clbarnes Sep 23, 2026
0d17576
Remove vestigial templating
clbarnes Sep 23, 2026
5651629
Check git history before applying changes
clbarnes Sep 23, 2026
aed51f1
sort imports
clbarnes Sep 23, 2026
b01d76b
Fix broken zarr test cases
clbarnes Sep 23, 2026
d27e164
get current version in test_validation
clbarnes Sep 23, 2026
7ee729e
fix bump script
clbarnes Sep 23, 2026
d7ce754
List files to check manually
clbarnes Sep 23, 2026
5267b0b
Give a grep command for finding lines
clbarnes Sep 23, 2026
8e97977
Merge pull request #4 from clbarnes/0.9.dev2-bump
clbarnes Sep 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 0 additions & 6 deletions .codespellrc

This file was deleted.

7 changes: 5 additions & 2 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,13 @@ insert_final_newline = true
charset = utf-8
trim_trailing_whitespace = true

[*.{py,md,ini}]
[*.md]
indent_style = space

[*.{py,ini}]
indent_style = space
indent_size = 4

[*.{json,yaml,yml,cff}]
[*.{json,yaml,yml,cff,toml,schema}]
indent_style = space
indent_size = 2
23 changes: 23 additions & 0 deletions .github/workflows/build-lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: "Build and Lint Site"

on:
workflow_dispatch:
push:
pull_request:

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

jobs:
build-site:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v9.0.0
- uses: extractions/setup-just@v4
- run: just build
- name: Ensure no unexpected encoded HTML in output
run: |
! fgrep -R 'lt;blockquote' _build/html
# TODO: htmlproofer would be nice to have, but currently generates a lot of noise
6 changes: 2 additions & 4 deletions .github/workflows/codespell.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
# Codespell configuration is within .codespellrc
# Codespell configuration is within pyproject.toml
---
name: Codespell

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

permissions:
contents: read
Expand All @@ -18,6 +16,6 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
- name: Codespell
uses: codespell-project/actions-codespell@v2
19 changes: 13 additions & 6 deletions .github/workflows/validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,16 @@ jobs:
name: Validation
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: python -mpip install --upgrade wheel tox
- run: tox
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v9.0.0
- uses: extractions/setup-just@v4
- run: just test

pre-commit:
name: Pre-commit
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v9.0.0
- uses: extractions/setup-just@v4
- run: just pre-commit
4 changes: 2 additions & 2 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ build:
post_install:
- pip install uv
- UV_PROJECT_ENVIRONMENT=$READTHEDOCS_VIRTUALENV_PATH uv sync --link-mode=copy

pre_build:
# Run the script that autogenerates content before building the docs
- "uv run python pre_build.py"

build:
html:
html:
- jupyter book build --html --ci
- mkdir -p $READTHEDOCS_OUTPUT
- mv ./_build/html $READTHEDOCS_OUTPUT
3 changes: 3 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,9 @@ authors:
- family-names: Best
given-names: Benedikt T.
orcid: 0000-0001-6965-1117
- family-names: Boussot
given-names: Valentin
orcid: 0009-0003-2465-5458
- family-names: Comparin
given-names: Tommaso
orcid: 0000-0001-6853-5931
Expand Down
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ as well as [json schemas](./schemas) to validate written ome-zarr image data.

The built documentation including contribution hints can be found **[here](https://ngff-spec.readthedocs.io/en/latest/)**.

## Development

Use [`just`](https://github.com/casey/just) for common development tasks like building, linting, testing.
Run `just` to see a list of commands.

## Conformance tests

Conformance can be tested at several levels.
Expand Down
2 changes: 1 addition & 1 deletion _version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '0.9.dev1'
__version__ = "0.9.dev2"
7 changes: 5 additions & 2 deletions authors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,9 @@ project:
- name: Benedikt T. Best
github: btbest
orcid: 0000-0001-6965-1117
- name: Valentin Boussot
github: vboussot
orcid: 0009-0003-2465-5458

# C
- name: Tommaso Comparin
Expand Down Expand Up @@ -169,7 +172,7 @@ project:
github: ziw-liu
orcid: 0000-0001-7482-1299
- name: Tiago Lubiana
orrcid: 0000-0003-2473-2313
orcid: 0000-0003-2473-2313
github: lubianat

# N
Expand All @@ -189,7 +192,7 @@ project:
- name: Constantin Pape
github: constantinpape
orcid: 0000-0001-6562-7187

# R
- name: Sebastian Rhode
github: sebi06
Expand Down
4 changes: 2 additions & 2 deletions citing.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ author: ""
[Next-generation file format (NGFF) specifications for storing bioimaging data in the cloud.](https://ngff.openmicroscopy.org/0.4)
J. Moore, *et al*. Open Microscopy Environment Consortium, 8 February 2022.

This edition of the specification is [https://ngff.openmicroscopy.org/{{version}}](https://ngff.openmicroscopy.org/{{version}}]).
This edition of the specification is [https://ngff.openmicroscopy.org/{{version}}](https://ngff.openmicroscopy.org/{{version}}).
The latest edition is publicly available {cite}`ngff_spec_latest`.

```{bibliography}
:style: unsrt
```
```
30 changes: 11 additions & 19 deletions conformance/ome_zarr_conformance.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,19 @@
"""

from __future__ import annotations
from concurrent.futures import Future, ThreadPoolExecutor

import json
import logging
import os
import re
import subprocess as sp
from argparse import ArgumentParser
from pathlib import Path
import sys
import re
import json
from argparse import ArgumentParser
from collections.abc import Iterable
from concurrent.futures import Future, ThreadPoolExecutor
from dataclasses import dataclass
from typing import Any, Iterable, Literal, Self
import logging
from pathlib import Path
from typing import Any, Literal, Self

logger = logging.getLogger("ome_zarr_conformance")

Expand Down Expand Up @@ -80,14 +82,11 @@ def __init__(
self,
exclude_patterns: list[re.Pattern] | None = None,
include_patterns: list[re.Pattern] | None = None,
exclude_strict=False,
exclude_invalid=False,
) -> None:
self.exclude_patterns = exclude_patterns or []
self.include_patterns = include_patterns or []

if exclude_strict:
self.exclude_patterns.append(re.compile(r"^strict/"))
if exclude_invalid:
self.exclude_patterns.append(re.compile(r"^\w+/invalid/"))

Expand Down Expand Up @@ -172,7 +171,7 @@ def main(raw_args=None):
description=(
"Feed sample Zarr data into a dingus CLI for validation. "
"After the arguments shown, add a -- followed by the dingus CLI call; "
"e.g., `ome_zarr_conformance attributes --exclude-strict -- path/to/my/dingus -cli +args`. "
"e.g., `ome_zarr_conformance attributes -- path/to/my/dingus -cli +args`. "
"The path to the attributes file or root of the zarr container will be appended to the dingus call."
)
)
Expand Down Expand Up @@ -201,12 +200,6 @@ def main(raw_args=None):
action="append",
help="regular expression pattern for test names to exclude; can be given multiple times",
)
parser.add_argument(
"--exclude-strict",
"-S",
action="store_true",
help="exclude strict tests",
)
parser.add_argument(
"--exclude-invalid",
"-I",
Comment thread
clbarnes marked this conversation as resolved.
Resolved
Expand Down Expand Up @@ -241,7 +234,7 @@ def main(raw_args=None):
3: logging.DEBUG,
}.get(args.verbose, logging.DEBUG)
logging.basicConfig(level=lvl)
logging.debug("Got args: %s", args)
logger.debug("Got args: %s", args)

if dingus_args is None:
print(
Expand All @@ -267,7 +260,6 @@ def main(raw_args=None):
req = Requested(
exclude_patterns=args.exclude_pattern,
include_patterns=args.include_pattern,
exclude_strict=bool(args.exclude_strict),
exclude_invalid=bool(args.exclude_invalid),
)

Expand Down
64 changes: 53 additions & 11 deletions contribute.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,15 @@ Major changes should follow the RFC process as it was laid out in [RFC1](https:/
## Building the documentation

Build and inspect changes to the documentation before submitting a PR.
To do so, you first need to install the necessary dependencies:

This project uses [`uv`](https://docs.astral.sh/uv) to manage its required (python) tooling,
and [`just`](https://github.com/casey/just) to run common development tasks.

[Install `uv`](https://docs.astral.sh/uv/#installation),
then set up an environment with the correct python version and development dependencies with

```bash
pip install .
uv sync
```

This document uses [jupyter-book](https://jupyterbook.org) to generate the pages
Expand All @@ -25,12 +30,33 @@ After installing these via the dependencies,
navigate into the repository on your machine and build the book using the following command:

```bash
python pre_build.py
jupyter book start
just serve
```

This will build the book and start a local server to inspect the changes in your browser.

To generate the "production" output in the `./_build/` directory, use

```bash
just build
```

To see all available recipes, use

```bash
just
```

## Code quality

To maximise consistency and minimise non-meaningful git churn,
pre-commit hooks are used to lint and format some types of contribution.
This is enforced on CI.

When you clone the repository, install the hooks with `just pre-commit-install`.
These will run whenever you make a commit;
you can run them manually with `just pre-commit`.

## First contribution

If you haven't contributed to the spec before,
Expand All @@ -51,7 +77,7 @@ make sure to rebuild the `CITATION.cff` file in the root of this repository.
To do so, run the following command:

```bash
jupyter book build --cff
just cff
```

Make sure the updated `CITATION.cff` file is included in your PR.
Expand All @@ -70,19 +96,35 @@ MyST allows a number of ways to reference and cross-reference inside this text
and across several of the pages in this repo.
For an overview of supported referencing syntax,
see the [MyST doc pages](https://mystmd.org/guide/cross-references).
It is recommended to use the following syntax in this document for consistency:
It is recommended to use the following syntax for references:

```markdown
[This is the visible text](#your-reference-name)
```

Use `(your-reference)=` on the line before an element like a section header to set the target for that element.

```markdown
anchor: (your-reference-name)=
reference: [This is a reference](#your-reference-name)
(version0.9:some-section)=
## Some section

(version0.9:some-note)=
:::{note}

The content of a note.
:::

## Another section

See the [note](#some-note) in the [previous section](#some-section).
```

For cross-referencing in the spec document,
make sure to prepend the reference anchor with `versionX` like so:

```markdown
## Some header
(version0.9:some-header)=
## Some header
```

Otherwise, the same anchors may not be possible to resolve
Expand Down Expand Up @@ -112,7 +154,7 @@ This is a citation {cite:t}`citation_key`.

where `citation_key` is the key of the bibtex entry in the `references.bib` file.

#### Json examples
#### JSON examples

We suggest using [dropdowns](https://mystmd.org/guide/dropdowns-cards-and-tabs) for example code and other highlighting.
For examples, please use the following syntax to wrap your examples:
Expand Down Expand Up @@ -162,4 +204,4 @@ Before creating a release, please make sure to go through the following items to
- [ ] Update versions in examples. Go through the examples in the `examples/` and make sure that all version numbers in the `.json` files are up-to-date.
- [ ] Update the specification number in the spec text. The [spec text](./index.md) mentions its own version number in several places. Please make sure to update those to the new version.
- [ ] Make sure all tests are passing. Run the test suite to make sure that all tests are passing before creating a release.
- [ ] Update the version history. Add a new entry to the [version history](#ngff-spec:history) file with the new version number and date, and a summary of the changes made in this release.
- [ ] Update the version history. Add a new entry to the [version history](#ngff-spec:history) file with the new version number and date, and a summary of the changes made in this release.
2 changes: 1 addition & 1 deletion examples/bf2raw/image.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"node_type": "group",
"attributes": {
"ome": {
"version": "0.9.dev1",
"version": "0.9.dev2",
"bioformats2raw.layout": 3
}
}
Expand Down
2 changes: 1 addition & 1 deletion examples/bf2raw/plate.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"node_type": "group",
"attributes": {
"ome": {
"version": "0.9.dev1",
"version": "0.9.dev2",
"bioformats2raw.layout": 3,
"plate": {
"columns": [
Expand Down
3 changes: 3 additions & 0 deletions examples/label/.config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"schema": "schemas/label.schema"
}
Loading
Loading