Skip to content
Latchkey

check workflow (tox-dev/tox)

The check workflow from tox-dev/tox, explained and optimized by Latchkey.

A

CI health: A - excellent

Run this on Latchkey for self-healing, caching, and up to 58% lower cost.

Grade your own workflow free or run it on Latchkey →
Source: tox-dev/tox.github/workflows/check.yamlLicense MITView source

What it does

This is the check workflow from the tox-dev/tox repository, a real project running GitHub Actions. It is shown here with attribution under its MIT license.

Below, Latchkey shows a faster, safer version produced by its optimization engine.

The workflow

workflow (.yml)
name: check
on:
  workflow_dispatch:
  push:
    branches: ["main"]
    tags-ignore: ["**"]
  pull_request:
  schedule:
    - cron: "0 8 * * *"

permissions:
  contents: read

env:
  FORCE_COLOR: 1

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

jobs:
  test:
    name: test ${{ matrix.py }} on ${{ matrix.os.name }}
    runs-on: ${{ matrix.os.image }}
    strategy:
      fail-fast: false
      matrix:
        py:
          - "3.14"
          - "3.13"
          - "3.12"
          - "3.11"
          - "3.10"
        os:
          - { image: ubuntu-24.04, name: ubuntu }
          - { image: windows-2025-vs2026, name: windows }
          - { image: macos-15, name: macos }
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
        with:
          fetch-depth: 0
          persist-credentials: false
      - name: Install the latest version of uv
        uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
        with:
          enable-cache: false
          cache-dependency-glob: "pyproject.toml"
          github-token: ${{ secrets.GITHUB_TOKEN }}
      - name: Cache wheel downloads
        uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v5
        with:
          path: .wheel_cache
          key: wheel-cache-${{ runner.os }}-${{ matrix.py }}-${{ hashFiles('pyproject.toml') }}
          restore-keys: |
            wheel-cache-${{ runner.os }}-${{ matrix.py }}-
            wheel-cache-${{ runner.os }}-
          lookup-only: true
      - name: Add .local/bin to Windows PATH
        if: runner.os == 'Windows'
        shell: bash
        run: echo "$USERPROFILE/.local/bin" >> $GITHUB_PATH
      - name: Install tox@self
        run: uv tool install --python-preference only-managed --python ${{ matrix.py }} tox@.
      - name: Setup test suite
        run: tox run -vv --notest --skip-missing-interpreters false -e ${{ matrix.py }}
      - name: Run test suite
        run: tox run --skip-pkg-install -e ${{ matrix.py }}
        env:
          PYTEST_ADDOPTS: "-vv --durations=20"
          DIFF_AGAINST: HEAD
          PYTEST_XDIST_AUTO_NUM_WORKERS: 0

  check:
    name: tox env ${{ matrix.tox_env }} on ${{ matrix.os.name }}
    runs-on: ${{ matrix.os.image }}
    strategy:
      fail-fast: false
      matrix:
        tox_env:
          - type
          - type-min
          - dev
          - docs
          - pkg_meta
        os:
          - { image: ubuntu-24.04, name: ubuntu }
          - { image: windows-2025-vs2026, name: windows }
        exclude:
          - { os: { image: windows-2025-vs2026, name: windows }, tox_env: docs }
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
        with:
          fetch-depth: 0
          persist-credentials: false
      - name: Install the latest version of uv
        uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
        with:
          enable-cache: false
          cache-dependency-glob: "pyproject.toml"
          github-token: ${{ secrets.GITHUB_TOKEN }}
      - name: Cache wheel downloads
        uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v5
        with:
          path: .wheel_cache
          key: wheel-cache-${{ runner.os }}-3.14-${{ hashFiles('pyproject.toml') }}
          restore-keys: |
            wheel-cache-${{ runner.os }}-3.14-
            wheel-cache-${{ runner.os }}-
          lookup-only: true
      - name: Add .local/bin to Windows PATH
        if: runner.os == 'Windows'
        shell: bash
        run: echo "$USERPROFILE/.local/bin" >> $GITHUB_PATH
      - name: Install tox@self
        run: uv tool install --python-preference only-managed --python 3.14 tox@.
      - name: Install Python 3.10 for type-min
        if: matrix.tox_env == 'type-min'
        run: uv python install 3.10
      - name: Setup check suite
        run: tox r -vv --notest --skip-missing-interpreters false -e ${{ matrix.tox_env }}
      - name: Run check for ${{ matrix.tox_env }}
        run: tox r --skip-pkg-install -e ${{ matrix.tox_env }}

The same workflow, on Latchkey

Removes redundant runs and caps runaway jobs. Added and changed lines are highlighted.

name: check
on:
  workflow_dispatch:
  push:
    branches: ["main"]
    tags-ignore: ["**"]
  pull_request:
  schedule:
    - cron: "0 8 * * *"
 
permissions:
  contents: read
 
env:
  FORCE_COLOR: 1
 
concurrency:
  group: check-${{ github.ref }}
  cancel-in-progress: true
 
jobs:
  test:
    timeout-minutes: 30
    name: test ${{ matrix.py }} on ${{ matrix.os.name }}
    runs-on: ${{ matrix.os.image }}
    strategy:
      fail-fast: false
      matrix:
        py:
          - "3.14"
          - "3.13"
          - "3.12"
          - "3.11"
          - "3.10"
        os:
          - { image: ubuntu-24.04, name: ubuntu }
          - { image: windows-2025-vs2026, name: windows }
          - { image: macos-15, name: macos }
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
        with:
          fetch-depth: 0
          persist-credentials: false
      - name: Install the latest version of uv
        uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
        with:
          enable-cache: false
          cache-dependency-glob: "pyproject.toml"
          github-token: ${{ secrets.GITHUB_TOKEN }}
      - name: Cache wheel downloads
        uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v5
        with:
          path: .wheel_cache
          key: wheel-cache-${{ runner.os }}-${{ matrix.py }}-${{ hashFiles('pyproject.toml') }}
          restore-keys: |
            wheel-cache-${{ runner.os }}-${{ matrix.py }}-
            wheel-cache-${{ runner.os }}-
          lookup-only: true
      - name: Add .local/bin to Windows PATH
        if: runner.os == 'Windows'
        shell: bash
        run: echo "$USERPROFILE/.local/bin" >> $GITHUB_PATH
      - name: Install tox@self
        run: uv tool install --python-preference only-managed --python ${{ matrix.py }} tox@.
      - name: Setup test suite
        run: tox run -vv --notest --skip-missing-interpreters false -e ${{ matrix.py }}
      - name: Run test suite
        run: tox run --skip-pkg-install -e ${{ matrix.py }}
        env:
          PYTEST_ADDOPTS: "-vv --durations=20"
          DIFF_AGAINST: HEAD
          PYTEST_XDIST_AUTO_NUM_WORKERS: 0
 
  check:
    timeout-minutes: 30
    name: tox env ${{ matrix.tox_env }} on ${{ matrix.os.name }}
    runs-on: ${{ matrix.os.image }}
    strategy:
      fail-fast: false
      matrix:
        tox_env:
          - type
          - type-min
          - dev
          - docs
          - pkg_meta
        os:
          - { image: ubuntu-24.04, name: ubuntu }
          - { image: windows-2025-vs2026, name: windows }
        exclude:
          - { os: { image: windows-2025-vs2026, name: windows }, tox_env: docs }
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
        with:
          fetch-depth: 0
          persist-credentials: false
      - name: Install the latest version of uv
        uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
        with:
          enable-cache: false
          cache-dependency-glob: "pyproject.toml"
          github-token: ${{ secrets.GITHUB_TOKEN }}
      - name: Cache wheel downloads
        uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v5
        with:
          path: .wheel_cache
          key: wheel-cache-${{ runner.os }}-3.14-${{ hashFiles('pyproject.toml') }}
          restore-keys: |
            wheel-cache-${{ runner.os }}-3.14-
            wheel-cache-${{ runner.os }}-
          lookup-only: true
      - name: Add .local/bin to Windows PATH
        if: runner.os == 'Windows'
        shell: bash
        run: echo "$USERPROFILE/.local/bin" >> $GITHUB_PATH
      - name: Install tox@self
        run: uv tool install --python-preference only-managed --python 3.14 tox@.
      - name: Install Python 3.10 for type-min
        if: matrix.tox_env == 'type-min'
        run: uv python install 3.10
      - name: Setup check suite
        run: tox r -vv --notest --skip-missing-interpreters false -e ${{ matrix.tox_env }}
      - name: Run check for ${{ matrix.tox_env }}
        run: tox r --skip-pkg-install -e ${{ matrix.tox_env }}
 

What changed

This workflow runs 2 jobs (25 with the matrix expanded) per trigger. On Latchkey the same minutes cost up to 58% less than GitHub-hosted, with zero queue time.

Actions used in this workflow