Skip to content

Commit 7291469

Browse files
d-v-bmaxrjonesclaude
authored
chore: centralize development and CI verbs in just (#4372)
* chore: extract just recipes from hatch replacement proposal Extracts the Justfile from 98dcde7 (#4096). Environment and CI migration changes are adapted separately. Assisted-by: Codex:GPT-6 * chore: use just for python helpers Extracts the Justfile changes from 693f694 (#4096). Assisted-by: Codex:GPT-6 * chore: centralize development and CI verbs in just Keep Hatch environment definitions while moving task commands into Justfile. Route root CI, Read the Docs, and contributor workflows through the same recipes, preserve quoted arguments, and ship recipes and helpers in the sdist. Assisted-by: Codex:GPT-6 * chore: delegate package commands to their justfiles Expose package recipes from the root while retaining each package’s command definitions and working directory. Assisted-by: Codex:GPT-6 * fix(ci): harden the just migration's environment, pinning and release path Review follow-ups to the Justfile centralization: - `just gpu` read HATCH_ENV, so an exported CPU test environment silently redirected `pytest -m gpu` into an env built without the gpu feature. It now reads GPU_HATCH_ENV, which nothing else sets. - Pin `uvx prek` to 0.5.3 and restore hook-environment caching in the lint workflow, so lint no longer floats on whatever prek PyPI serves that day. - Restore the mypy hook's `uv run --frozen mypy` entry: routing it through `just typecheck` made just a prerequisite for committing in every existing clone, and expanded to the identical command. - Run the changelog filename check with `uv run --no-project python` instead of building the `dev` hatch env (test + remote-tests + docs + mypy) for a script that imports only sys and pathlib. - Extend `just just-check` over packages/*/justfile, which the root delegation recipes depend on and the formatting gate did not cover. - Set up Python in the codspeed job before pip-installing into it, matching the other workflows; that runner image was never given one. - Revert the release and nightly-wheel jobs to `hatch build`, so the publishing path does not fetch rust-just to run a pure alias. - Renumber the changelog fragment to this pull request and credit #4096 in the body, so the rendered note does not link to an unrelated upstream PR. Assisted-by: ClaudeCode:claude-opus-5 * fix(ci): install prek persistently for git hooks; run setup steps in one just process `just hooks-install` ran `uvx prek install`, and prek writes a hook shim that hard-codes the binary it was installed from, falling back to `prek` on PATH. Under uvx that path is an entry in uv's archive cache, so the first `uv cache prune` (or a bump of the pinned version) broke every commit with `prek: not found`, and nothing put `prek` on PATH for the fallback. Install it as a pinned `uv tool` instead: a changed pin upgrades in place, a repeated run is a no-op, and the shim points at a path that stays. `setup` re-invoked `just list-env`, which dropped a `just hatch_env=... setup` override on the floor because the child process re-read HATCH_ENV. Run it as a subsequent dependency so both steps see the same value. Also retire the last two comments naming the removed hatch scripts. Assisted-by: ClaudeCode:claude-fable-5-1 * chore: renumber the changelog fragment to the upstream pull request towncrier renders the fragment name as a link into zarr-developers/zarr-python, so the fork's PR number would have pointed the released note at an unrelated upstream pull request. #4372 is the PR that merges this work. Assisted-by: ClaudeCode:claude-opus-5 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * ci: install just as a binary in the benchmark job Adding `actions/setup-python` to this job so that `pip install rust-just` had an interpreter also changed which interpreter hatch built `test.py3.12-minimal` on: the runner's own Python was replaced by /opt/hostedtoolcache/Python/3.12.5/arm64. CodSpeed measured the result as a 12.97% degradation across 26 benchmarks, spread -12.76% to -13.99% -- a range of 1.2 points over slice indexing, sharded Morton indexing, three array shapes and two store types. Nothing in this branch touches src/, tests/benchmarks/ or packages/; that uniformity is an interpreter swap, not a regression, and CodSpeed flagged it as "different runtime environments detected". Install just with extractions/setup-just instead, matching the three package workflows. No interpreter is set up, so hatch resolves the same Python the baseline used, and `just-version` is pinned to satisfy zizmor's unpinned-tools audit. The benchmarks need a re-run to produce a comparison against a matching environment; the numbers on the previous run should not be acknowledged as a regression. Assisted-by: ClaudeCode:claude-opus-5 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * ci: install just from official release binaries; lock the docs toolchain Follow-ups from an adversarial audit of this branch. Supply chain. `rust-just` is a third-party repackaging of just on PyPI (Repository: github.com/gnpaone/rust-just) with no attestation on any of its 17 wheels, and this branch had introduced it in ten places including the self-hosted GPU runner and Read the Docs. All 23 just installs across the repo now come from casey/just's own release binaries via extractions/setup-crate@7577c1bd (v2.0.1), a node action whose SHA pins every line of executed code -- rather than extractions/setup-just, a composite wrapper that astral-sh/python-build-standalone#771 moved off for that reason. This also retires the 12 pre-existing setup-just call sites, so the repo has one mechanism instead of four. setup-crate does not verify checksums (extractions/setup-just#20 is open); Read the Docs, where no action is available, fetches the release tarball and verifies it against the SHA256SUMS casey/just publishes. Lockfile. docs.yml had stopped resolving from uv.lock: `uv sync --group docs` became `hatch run docs:`, and hatch never reads the lockfile, so the entire docs toolchain floated -- including numcodecs[msgpack], which carries no version constraint. Dependabot's uv ecosystem exists to keep that lock fresh and no job exercised it any more. The eight docs and changelog recipes now run `uv run --frozen --group docs`, so single-version tooling comes from the lock (as mypy already did) while hatch keeps the test environments, which exist per interpreter and per dependency set and cannot live in one lockfile. The hatch docs environment is removed as unused, and neither docs.yml nor Read the Docs installs hatch at all now. Argument forwarding. The three package justfiles splatted `{{ args }}` unquoted, so `just zarr-metadata test -k 'a and b'` reached pytest as `-k a` plus two stray paths, and command substitution in an argument executed. They now use `set positional-arguments` and `"$@"` like the root, which is what the contributing guide already claimed. Also, regressions from my own earlier commits on this branch: `just lint` had dropped `--show-diff-on-failure --color=always`, which j178/prek-action passed by default, so a hook that rewrote a file failed with no diff; a four-line comment above `hooks-install` displaced its `just --list` description, since just reads only the last comment line; the prek cache key did not cover prek_version and had a restore-keys fallback that could reuse a store built by a different prek; `just just-check` ran before `just lint`, so a cosmetic formatting nit hid every real lint result; and the `packages/*/justfile` glob lacked nullglob, which breaks in the sdist, where /Justfile ships but /packages deliberately does not. Docs: the install instructions used `pip install`, which fails on an externally-managed interpreter; `just just-check` was an undocumented required check; two sentences still told contributors to activate an environment that no longer exists; and the changelog fragment did not mention that the Hatch script tables were removed. Adds a .gitattributes rule so a Windows checkout does not get a CRLF Justfile that `just --fmt --check` rejects on every line. Assisted-by: ClaudeCode:claude-opus-5 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Max Jones <14077947+maxrjones@users.noreply.github.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
1 parent ae41d6e commit 7291469

21 files changed

Lines changed: 402 additions & 159 deletions

‎.gitattributes‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
*.py linguist-language=python
22
*.ipynb linguist-documentation
33
.git_archival.txt export-subst
4+
5+
# just refuses to format a CRLF file, so `just just-check` would fail on a Windows
6+
# checkout with core.autocrlf=true before the contributor has changed anything.
7+
Justfile text eol=lf
8+
*/justfile text eol=lf
9+
packages/*/justfile text eol=lf

‎.github/workflows/check_changelogs.yml‎

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,20 @@ jobs:
2424
- name: Install uv
2525
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
2626

27+
- name: Install just
28+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
29+
with:
30+
repo: casey/just
31+
version: 1.58.0
32+
2733
- name: Check zarr-python changelog entries
28-
run: uv run --no-sync python ci/check_changelog_entries.py
34+
run: just check-changelogs
2935

3036
- name: Check zarr-metadata changelog entries
31-
run: uv run --no-sync python ci/check_changelog_entries.py packages/zarr-metadata/changes
37+
run: just check-changelogs packages/zarr-metadata/changes
3238

3339
- name: Check zarr-indexing changelog entries
34-
run: uv run --no-sync python ci/check_changelog_entries.py packages/zarr-indexing/changes
40+
run: just check-changelogs packages/zarr-indexing/changes
3541

3642
- name: Check zarr-http-server changelog entries
37-
run: uv run --no-sync python ci/check_changelog_entries.py packages/zarr-http-server/changes
43+
run: just check-changelogs packages/zarr-http-server/changes

‎.github/workflows/codspeed.yml‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,19 @@ jobs:
3131
uses: pypa/hatch@f647ed70d49adb885f53a27d1c7f5bdaeacf2c60
3232
with:
3333
version: '1.16.5'
34+
# No interpreter is set up in this job on purpose. Benchmarks are only comparable
35+
# across runs if the interpreter underneath them does not move: adding a pinned
36+
# Python here measured a uniform ~13% slowdown on every benchmark, because hatch
37+
# then built the environment on that interpreter instead of the runner's own.
38+
- name: Install just
39+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
40+
with:
41+
repo: casey/just
42+
version: 1.58.0
3443
- name: Run the benchmarks
3544
uses: CodSpeedHQ/action@373d6868929f444bc08d901fd0eb0ad52a8875ea # v5.2.1
3645
env:
3746
ZARR_BENCHMARK_CLEAR_CACHE: '1'
3847
with:
3948
mode: walltime
40-
run: hatch run test.py3.12-minimal:pytest tests/benchmarks --codspeed
49+
run: HATCH_ENV=test.py3.12-minimal just benchmark-codspeed

‎.github/workflows/docs.yml‎

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,22 @@ jobs:
2323
with:
2424
persist-credentials: false
2525
- uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
26-
- run: uv sync --group docs
26+
- name: Install just
27+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
28+
with:
29+
repo: casey/just
30+
version: 1.58.0
2731
# Fast source-level guards that need no built site, so they run before the (slower)
2832
# build for a quick failure: every public export is in the API reference, and no
2933
# docstring/Markdown carries reStructuredText markup that MkDocs won't render.
30-
- run: uv run python ci/check_documented_exports.py docs/api
31-
- run: uv run python ci/lint_docs.py
34+
- run: just check-doc-exports
35+
- run: just lint-docs
3236
# --strict turns warnings into errors, so a docs code block that fails to execute
3337
# at build time (e.g. a non-exec python fence disrupting a later exec="true" block)
3438
# fails CI instead of merging as a silent warning.
35-
- run: uv run mkdocs build --strict
39+
- run: just docs-build
3640
env:
3741
DISABLE_MKDOCS_2_WARNING: "true"
3842
NO_MKDOCS_2_WARNING: "true"
39-
- run: uv run python ci/check_unlinked_types.py
43+
- run: just check-doc-links
4044
continue-on-error: true

‎.github/workflows/gpu_test.yml‎

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,17 +67,24 @@ jobs:
6767
uses: pypa/hatch@f647ed70d49adb885f53a27d1c7f5bdaeacf2c60
6868
with:
6969
version: '1.16.5'
70+
- name: Install just
71+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
72+
with:
73+
repo: casey/just
74+
version: 1.58.0
75+
# Two names for the same environment on purpose: `just setup` builds whatever
76+
# HATCH_ENV points at, while `just gpu` reads GPU_HATCH_ENV so that an
77+
# ambient HATCH_ENV can never redirect `pytest -m gpu` into a CPU environment.
7078
- name: Set Up Hatch Env
7179
env:
7280
HATCH_ENV: gputest.py${{ matrix.python-version }}
7381
run: |
74-
hatch env create "$HATCH_ENV"
75-
hatch env run -e "$HATCH_ENV" list-env
82+
just setup
7683
- name: Run Tests
7784
env:
78-
HATCH_ENV: gputest.py${{ matrix.python-version }}
85+
GPU_HATCH_ENV: gputest.py${{ matrix.python-version }}
7986
run: |
80-
hatch env run --env "$HATCH_ENV" run-coverage
87+
just gpu
8188
8289
- name: Upload coverage
8390
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0

‎.github/workflows/hypothesis.yaml‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,16 @@ jobs:
6565
uses: pypa/hatch@f647ed70d49adb885f53a27d1c7f5bdaeacf2c60
6666
with:
6767
version: '1.16.5'
68+
- name: Install just
69+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
70+
with:
71+
repo: casey/just
72+
version: 1.58.0
6873
- name: Set Up Hatch Env
6974
env:
7075
HATCH_ENV: test.py${{ matrix.python-version }}-${{ matrix.dependency-set }}
7176
run: |
72-
hatch env create "$HATCH_ENV"
73-
hatch env run -e "$HATCH_ENV" list-env
77+
just setup
7478
# https://github.com/actions/cache/blob/main/tips-and-workarounds.md#update-a-cache
7579
- name: Restore cached hypothesis directory
7680
id: restore-hypothesis-cache
@@ -89,7 +93,7 @@ jobs:
8993
PYTEST_ADDOPTS: "--report-log=output-${{ matrix.python-version }}-log.jsonl"
9094
run: |
9195
echo "Using Hypothesis profile: $HYPOTHESIS_PROFILE"
92-
hatch env run --env "$HATCH_ENV" run-hypothesis
96+
just hypothesis
9397
9498
# explicitly save the cache so it gets updated, also do this even if it fails.
9599
- name: Save cached hypothesis directory

‎.github/workflows/lint.yml‎

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,26 @@ jobs:
3030
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
3131
with:
3232
enable-cache: true
33-
- uses: j178/prek-action@4e14d07f9231acabce116ccfca13b13dd9755ece # v3.0.0
33+
- name: Install just
34+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
35+
with:
36+
repo: casey/just
37+
version: 1.58.0
38+
# `uvx prek` builds each hook's environment from scratch, so cache them the
39+
# way the prek action used to. Keyed on the hook config: a new pinned rev or
40+
# a new hook is exactly when the cached environments stop being valid.
41+
- name: Cache prek hook environments
42+
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
43+
with:
44+
path: ~/.cache/prek
45+
# Justfile is hashed too: prek_version lives there, and a bumped prek
46+
# must not restore a store built by the previous one. No restore-keys
47+
# fallback for the same reason.
48+
key: prek-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml', 'Justfile') }}
49+
- name: Lint
50+
run: just lint
51+
- name: Check justfile formatting
52+
# After the linters, and never masking them: this is cosmetic, and a
53+
# mis-formatted recipe should not cost someone their ruff/mypy results.
54+
if: always()
55+
run: just just-check

‎.github/workflows/test.yml‎

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,18 +69,22 @@ jobs:
6969
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
7070
- name: Install Hatch
7171
run: python -m pip install hatch==1.16.5
72+
- name: Install just
73+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
74+
with:
75+
repo: casey/just
76+
version: 1.58.0
7277
- name: Set Up Hatch Env
7378
env:
7479
HATCH_ENV: test.py${{ matrix.python-version }}-${{ matrix.dependency-set }}
7580
run: |
76-
hatch env create "$HATCH_ENV"
77-
hatch env run -e "$HATCH_ENV" list-env
81+
just setup
7882
- name: Run Tests
7983
env:
8084
HYPOTHESIS_PROFILE: ci
8185
HATCH_ENV: test.py${{ matrix.python-version }}-${{ matrix.dependency-set }}
8286
run: |
83-
hatch env run --env "$HATCH_ENV" run-coverage
87+
just coverage
8488
- name: Upload coverage
8589
if: ${{ matrix.dependency-set == 'optional' && matrix.os == 'ubuntu-latest' }}
8690
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
@@ -118,17 +122,21 @@ jobs:
118122
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
119123
- name: Install Hatch
120124
run: python -m pip install hatch==1.16.5
125+
- name: Install just
126+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
127+
with:
128+
repo: casey/just
129+
version: 1.58.0
121130
- name: Set Up Hatch Env
122131
env:
123132
HATCH_ENV: ${{ matrix.dependency-set }}
124133
run: |
125-
hatch env create "$HATCH_ENV"
126-
hatch env run -e "$HATCH_ENV" list-env
134+
just setup
127135
- name: Run Tests
128136
env:
129137
HATCH_ENV: ${{ matrix.dependency-set }}
130138
run: |
131-
hatch env run --env "$HATCH_ENV" run-coverage
139+
just coverage
132140
- name: Upload coverage
133141
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
134142
with:
@@ -153,12 +161,17 @@ jobs:
153161
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
154162
- name: Install Hatch
155163
run: python -m pip install hatch==1.16.5
164+
- name: Install just
165+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
166+
with:
167+
repo: casey/just
168+
version: 1.58.0
156169
- name: Set Up Hatch Env
157170
run: |
158-
hatch run doctest:pip list
171+
HATCH_ENV=doctest just setup
159172
- name: Run Tests
160173
run: |
161-
hatch run doctest:test
174+
just doctest
162175
163176
benchmarks:
164177
name: Benchmark smoke test
@@ -177,11 +190,16 @@ jobs:
177190
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
178191
- name: Install Hatch
179192
run: python -m pip install hatch==1.16.5
193+
- name: Install just
194+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
195+
with:
196+
repo: casey/just
197+
version: 1.58.0
180198
- name: Run Benchmarks
181199
env:
182200
ZARR_BENCHMARK_CLEAR_CACHE: '1'
183201
run: |
184-
hatch env run --env "test.py3.13-minimal" run-benchmark
202+
HATCH_ENV=test.py3.13-minimal just benchmark
185203
186204
test-complete:
187205
name: Test complete

‎.github/workflows/zarr-http-server.yml‎

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,10 @@ jobs:
5353
- name: Set up Python ${{ matrix.python-version }}
5454
run: uv python install ${{ matrix.python-version }}
5555
- name: Install just
56-
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4
56+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
5757
with:
58-
# Pin the tool, not just the action: without this the action
59-
# installs whatever just is newest at run time.
60-
just-version: 1.58.0
58+
repo: casey/just
59+
version: 1.58.0
6160
- name: Sync test dependency groups
6261
# The examples group carries the deps the README examples need, so the
6362
# test that reads a served array back with a zarr client runs here
@@ -80,11 +79,10 @@ jobs:
8079
- name: Install uv
8180
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
8281
- name: Install just
83-
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4
82+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
8483
with:
85-
# Pin the tool, not just the action: without this the action
86-
# installs whatever just is newest at run time.
87-
just-version: 1.58.0
84+
repo: casey/just
85+
version: 1.58.0
8886
- name: Run ruff
8987
run: just lint
9088

@@ -106,11 +104,10 @@ jobs:
106104
- name: Set up Python
107105
run: uv python install 3.12
108106
- name: Install just
109-
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4
107+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
110108
with:
111-
# Pin the tool, not just the action: without this the action
112-
# installs whatever just is newest at run time.
113-
just-version: 1.58.0
109+
repo: casey/just
110+
version: 1.58.0
114111
- name: Sync test dependency group
115112
run: uv sync --group test --python 3.12
116113
- name: Run mypy
@@ -132,11 +129,10 @@ jobs:
132129
with:
133130
enable-cache: true
134131
- name: Install just
135-
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4
132+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
136133
with:
137-
# Pin the tool, not just the action: without this the action
138-
# installs whatever just is newest at run time.
139-
just-version: 1.58.0
134+
repo: casey/just
135+
version: 1.58.0
140136
- name: Build docs
141137
run: just docs-check
142138

‎.github/workflows/zarr-indexing.yml‎

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,10 @@ jobs:
4040
with:
4141
enable-cache: true
4242
- name: Install just
43-
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4
43+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
4444
with:
45-
# Pin the tool, not just the action: without this the action
46-
# installs whatever just is newest at run time.
47-
just-version: 1.58.0
45+
repo: casey/just
46+
version: 1.58.0
4847
- name: Set up Python ${{ matrix.python-version }}
4948
run: uv python install ${{ matrix.python-version }}
5049
# The suite imports nothing from `zarr`; it runs against the repo-root
@@ -73,11 +72,10 @@ jobs:
7372
- name: Install uv
7473
uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
7574
- name: Install just
76-
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4
75+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
7776
with:
78-
# Pin the tool, not just the action: without this the action
79-
# installs whatever just is newest at run time.
80-
just-version: 1.58.0
77+
repo: casey/just
78+
version: 1.58.0
8179
- name: Run ruff
8280
# The ruff version pin lives in packages/zarr-indexing/justfile.
8381
run: just lint
@@ -102,11 +100,10 @@ jobs:
102100
- name: Sync test dependency group
103101
run: uv sync --group test --python 3.12
104102
- name: Install just
105-
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4
103+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
106104
with:
107-
# Pin the tool, not just the action: without this the action
108-
# installs whatever just is newest at run time.
109-
just-version: 1.58.0
105+
repo: casey/just
106+
version: 1.58.0
110107
- name: Run pyright
111108
# The pyright invocation lives in packages/zarr-indexing/justfile.
112109
run: just typecheck
@@ -127,11 +124,10 @@ jobs:
127124
with:
128125
enable-cache: true
129126
- name: Install just
130-
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3 # v4
127+
uses: extractions/setup-crate@7577c1bdf2d95e6d65d532788f35ed79d4b1dda2 # v2.0.1
131128
with:
132-
# Pin the tool, not just the action: without this the action
133-
# installs whatever just is newest at run time.
134-
just-version: 1.58.0
129+
repo: casey/just
130+
version: 1.58.0
135131
- name: Build docs
136132
# The strict mkdocs build lives in packages/zarr-indexing/justfile.
137133
run: just docs-check

0 commit comments

Comments
 (0)