PYTHON-5057 Avoid updating the uv lock unintentionally #6241
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Python Tests | |
on: | |
push: | |
branches: ["master", "v**"] | |
pull_request: | |
workflow_dispatch: | |
concurrency: | |
group: tests-${{ github.ref }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash -eux {0} | |
jobs: | |
static: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
cache: 'pip' | |
cache-dependency-path: 'pyproject.toml' | |
- name: Install just | |
uses: extractions/setup-just@v2 | |
- name: Install Python dependencies | |
run: | | |
just install | |
- name: Run linters | |
run: | | |
just lint-manual | |
- name: Run compilation | |
run: | | |
export PYMONGO_C_EXT_MUST_BUILD=1 | |
pip install -v -e . | |
python tools/fail_if_no_c.py | |
- name: Run typecheck | |
run: | | |
just typing | |
- run: | | |
sudo apt-get install -y cppcheck | |
- run: | | |
cppcheck --force bson | |
cppcheck pymongo | |
build: | |
# supercharge/mongodb-github-action requires containers so we don't test other platforms | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-20.04] | |
python-version: ["3.9", "pypy-3.10", "3.13", "3.13t"] | |
name: CPython ${{ matrix.python-version }}-${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- if: ${{ matrix.python-version == '3.13t' }} | |
name: Setup free-threaded Python | |
uses: deadsnakes/[email protected] | |
with: | |
python-version: 3.13 | |
nogil: true | |
- if: ${{ matrix.python-version != '3.13t' }} | |
name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: 'pip' | |
cache-dependency-path: 'pyproject.toml' | |
allow-prereleases: true | |
- name: Install just | |
uses: extractions/setup-just@v2 | |
- name: Install dependencies | |
run: | | |
if [[ "${{ matrix.python-version }}" == "3.13t" ]]; then | |
# Just can't be installed on 3.13t, use pytest directly. | |
pip install . | |
pip install -r requirements/test.txt | |
else | |
just install | |
fi | |
- name: Start MongoDB | |
uses: supercharge/[email protected] | |
with: | |
mongodb-version: 6.0 | |
- name: Run tests | |
run: | | |
if [[ "${{ matrix.python-version }}" == "3.13t" ]]; then | |
pytest -v --durations=5 --maxfail=10 | |
else | |
just test | |
fi | |
doctest: | |
runs-on: ubuntu-latest | |
name: DocTest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
cache: 'pip' | |
cache-dependency-path: 'pyproject.toml' | |
- name: Install just | |
uses: extractions/setup-just@v2 | |
- name: Start MongoDB | |
uses: supercharge/[email protected] | |
with: | |
mongodb-version: '8.0.0-rc4' | |
- name: Install dependencies | |
run: | | |
just install | |
- name: Run tests | |
run: | | |
just docs-test | |
docs: | |
name: Docs Checks | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-python@v5 | |
with: | |
cache: 'pip' | |
cache-dependency-path: 'pyproject.toml' | |
# Build docs on lowest supported Python for furo | |
python-version: '3.9' | |
- name: Install just | |
uses: extractions/setup-just@v2 | |
- name: Install dependencies | |
run: | | |
just install | |
- name: Build docs | |
run: | | |
just docs | |
linkcheck: | |
name: Link Check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-python@v5 | |
with: | |
cache: 'pip' | |
cache-dependency-path: 'pyproject.toml' | |
# Build docs on lowest supported Python for furo | |
python-version: '3.9' | |
- name: Install just | |
uses: extractions/setup-just@v2 | |
- name: Install dependencies | |
run: | | |
just install | |
- name: Build docs | |
run: | | |
just docs-linkcheck | |
typing: | |
name: Typing Tests | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python: ["3.9", "3.11"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "${{matrix.python}}" | |
cache: 'pip' | |
cache-dependency-path: 'pyproject.toml' | |
- name: Install just | |
uses: extractions/setup-just@v2 | |
- name: Install dependencies | |
run: | | |
just install | |
- name: Run typecheck | |
run: | | |
just typing | |
make_sdist: | |
runs-on: ubuntu-latest | |
name: "Make an sdist" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-python@v5 | |
with: | |
cache: 'pip' | |
cache-dependency-path: 'pyproject.toml' | |
# Build sdist on lowest supported Python | |
python-version: '3.9' | |
- name: Build SDist | |
shell: bash | |
run: | | |
pip install build | |
python -m build --sdist | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: "sdist" | |
path: dist/*.tar.gz | |
test_sdist: | |
runs-on: ubuntu-latest | |
needs: [make_sdist] | |
name: Install from SDist and Test | |
timeout-minutes: 20 | |
steps: | |
- name: Download sdist | |
uses: actions/download-artifact@v4 | |
- name: Unpack SDist | |
shell: bash | |
run: | | |
cd sdist | |
ls | |
mkdir test | |
tar --strip-components=1 -zxf *.tar.gz -C ./test | |
ls test | |
- uses: actions/setup-python@v5 | |
with: | |
cache: 'pip' | |
cache-dependency-path: 'sdist/test/pyproject.toml' | |
# Test sdist on lowest supported Python | |
python-version: '3.9' | |
- name: Start MongoDB | |
uses: supercharge/[email protected] | |
- name: Run connect test from sdist | |
shell: bash | |
run: | | |
cd sdist/test | |
ls | |
which python | |
pip install -e ".[test]" | |
PYMONGO_MUST_CONNECT=1 pytest -v -k client_context |