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@v6 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@v6 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@v6 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@v6 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@v6 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