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 ziglang 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