tiffwrite 2026.5.0

Write BioFormats/ImageJ compatible tiffs with zstd compression in parallel.
Documentation
name: PyTest

on: [push, pull_request, workflow_call]

jobs:
  pytest:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.10", "3.12", "3.14"]

    steps:
      - uses: actions/checkout@v6
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}

      - name: Restore cache
        uses: actions/cache/restore@v4
        with:
          path: |
            ~/.cache/pip
            ~/.cache/pip-wheel
            ~/.cache/sccache
            ~/.cache/cargo-xwin
            ~/.cargo
            ~/.osxcross
          key: cache-ubuntu-maturin-cross-compile

      - name: Install Rust
        run: |
          export PATH="$HOME/.cargo/bin:$PATH"
          if ! command -v rustc >/dev/null 2>&1; then
            curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
          else
            rustup update
          fi
        shell: bash

      - name: Install sccache and maturin
        run: |
          export PATH="$HOME/.cargo/bin:$PATH"
          python -m pip install --upgrade pip
          pip install maturin
          if ! command -v sccache >/dev/null 2>&1; then
            cargo install sccache || pip install sccache
          fi
        shell: bash

      - name: Install
        run: pip install .[test]
      - name: Test with pytest
        run: pytest

      - name: Store cache
        uses: actions/cache/save@v4
        with:
          path: |
            ~/.cache/pip
            ~/.cache/pip-wheel
            ~/.cache/sccache
            ~/.cache/cargo-xwin
            ~/.cargo
            ~/.osxcross
          key: cache-ubuntu-maturin-cross-compile