Skip to content
Latchkey

Python Tests workflow (mongodb/motor)

The Python Tests workflow from mongodb/motor, explained and optimized by Latchkey.

B

CI health: B - good

Point runs-on at Latchkey and get job timeouts, SHA-pinned actions, self-healing for flaky steps, and up to 58% lower cost, applied automatically.

Grade your own workflow free or run it on Latchkey →
Source: mongodb/motor.github/workflows/test-python.ymlLicense Apache-2.0View source

What it does

This is the Python Tests workflow from the mongodb/motor repository, a real project running GitHub Actions. It is shown here with attribution under its Apache-2.0 license.

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

The workflow

workflow (.yml)
name: Python Tests

on:
  push:
  pull_request:

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

defaults:
  run:
    shell: bash -eux {0}

jobs:

  build:
    runs-on: ${{ matrix.os }}
    timeout-minutes: 10
    strategy:
      matrix:
        os: [ubuntu-latest]
        python-version: ["3.10", "3.12", "3.14"]
      fail-fast: false
    name: CPython ${{ matrix.python-version }}-${{ matrix.os }}
    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false
      - name: Setup Python
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}
          cache: 'pip'
          cache-dependency-path: 'pyproject.toml'
          allow-prereleases: true
      - id: setup-mongodb
        uses: mongodb-labs/drivers-evergreen-tools@master
        with:
          version: "8.0"
          topology: replica_set
      - name: Install Python dependencies
        run: |
          python -m pip install -U pip tox
      - name: Run tests
        run: |
          tox -m test

  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false
      - uses: actions/setup-python@v6
        with:
          python-version: '3.10'
          cache: 'pip'
          cache-dependency-path: 'pyproject.toml'
      - name: Install Python dependencies
        run: |
          python -m pip install -U pip tox
      - name: Run linters
        run: |
          tox -m lint-manual

  docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false
      - uses: actions/setup-python@v6
        with:
          python-version: '3.10'
          cache: 'pip'
          cache-dependency-path: 'pyproject.toml'
      - name: Install Python dependencies
        run: |
          python -m pip install -U pip tox
      - name: Run docs
        run: tox -m docs
      - name: Run linkcheck
        run: tox -m linkcheck
      - name: Start MongoDB
        uses: supercharge/mongodb-github-action@315db7fe45ac2880b7758f1933e6e5d59afd5e94 # 1.12.1
        with:
          mongodb-version: 5.0
      - name: Run doctest
        run: tox -m doctest

  release:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false
      - uses: actions/setup-python@v6
        with:
          python-version: '3.10'
          cache: 'pip'
          cache-dependency-path: 'pyproject.toml'
      - name: Install Python dependencies
        run: |
          python -m pip install -U pip
      - name: Run the release script
        run: |
          bash release.sh

  typing:
    name: Typing Tests
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false
      - name: Set up Python
        uses: actions/setup-python@v6
        with:
          python-version: "3.10"
          cache: 'pip'
          cache-dependency-path: 'pyproject.toml'
          allow-prereleases: true
      - name: Install dependencies
        run: |
          python -m pip install -U pip tox
      - name: Run mypy
        run: |
          tox -m typecheck-mypy

The same workflow, on Latchkey

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

name: Python Tests
 
on:
  push:
  pull_request:
 
concurrency:
  group: tests-${{ github.ref }}
  cancel-in-progress: true
 
defaults:
  run:
    shell: bash -eux {0}
 
jobs:
 
  build:
    runs-on: ${{ matrix.os }}
    timeout-minutes: 10
    strategy:
      matrix:
        os: [ubuntu-latest]
        python-version: ["3.10", "3.12", "3.14"]
      fail-fast: false
    name: CPython ${{ matrix.python-version }}-${{ matrix.os }}
    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false
      - name: Setup Python
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}
          cache: 'pip'
          cache-dependency-path: 'pyproject.toml'
          allow-prereleases: true
      - id: setup-mongodb
        uses: mongodb-labs/drivers-evergreen-tools@master
        with:
          version: "8.0"
          topology: replica_set
      - name: Install Python dependencies
        run: |
          python -m pip install -U pip tox
      - name: Run tests
        run: |
          tox -m test
 
  lint:
    timeout-minutes: 30
    runs-on: latchkey-small
    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false
      - uses: actions/setup-python@v6
        with:
          python-version: '3.10'
          cache: 'pip'
          cache-dependency-path: 'pyproject.toml'
      - name: Install Python dependencies
        run: |
          python -m pip install -U pip tox
      - name: Run linters
        run: |
          tox -m lint-manual
 
  docs:
    timeout-minutes: 30
    runs-on: latchkey-small
    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false
      - uses: actions/setup-python@v6
        with:
          python-version: '3.10'
          cache: 'pip'
          cache-dependency-path: 'pyproject.toml'
      - name: Install Python dependencies
        run: |
          python -m pip install -U pip tox
      - name: Run docs
        run: tox -m docs
      - name: Run linkcheck
        run: tox -m linkcheck
      - name: Start MongoDB
        uses: supercharge/mongodb-github-action@315db7fe45ac2880b7758f1933e6e5d59afd5e94 # 1.12.1
        with:
          mongodb-version: 5.0
      - name: Run doctest
        run: tox -m doctest
 
  release:
    timeout-minutes: 30
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false
      - uses: actions/setup-python@v6
        with:
          python-version: '3.10'
          cache: 'pip'
          cache-dependency-path: 'pyproject.toml'
      - name: Install Python dependencies
        run: |
          python -m pip install -U pip
      - name: Run the release script
        run: |
          bash release.sh
 
  typing:
    timeout-minutes: 30
    name: Typing Tests
    runs-on: latchkey-small
    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false
      - name: Set up Python
        uses: actions/setup-python@v6
        with:
          python-version: "3.10"
          cache: 'pip'
          cache-dependency-path: 'pyproject.toml'
          allow-prereleases: true
      - name: Install dependencies
        run: |
          python -m pip install -U pip tox
      - name: Run mypy
        run: |
          tox -m typecheck-mypy
 

What changed

1 third-party action is referenced by a movable tag. Pin it to the commit SHA (Latchkey resolves and applies this automatically) so a repointed tag cannot change what runs.

What Latchkey heals here

This workflow has steps that commonly fail on transient issues (network, registries, flaky browsers). On Latchkey managed runners they are detected, retried, and self-healed instead of failing your build:

This workflow runs 5 jobs (7 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