name: Build and test on: # Only on pushes to main or one of the release branches we build on push push: branches: - main - "[0-9].[0-9]+-branch" tags: # Build pull requests pull_request: jobs: test: strategy: matrix: py: - "3.8" - "3.9" - "3.10" - "3.11" - "3.12" - "pypy-3.8" os: - "ubuntu-20.04" - "windows-2022" - "macos-11" architecture: - x64 - x86 include: # Only run coverage on ubuntu-20.04, except on pypy3 - os: "ubuntu-20.04" pytest-args: "--cov" - os: "ubuntu-20.04" py: "pypy-3.8" pytest-args: "" exclude: # Linux and macOS don't have x86 python - os: "ubuntu-20.04" architecture: x86 - os: "macos-11" architecture: x86 name: "Python: ${{ matrix.py }}-${{ matrix.architecture }} on ${{ matrix.os }}" runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - name: Setup python uses: actions/setup-python@v5 with: python-version: ${{ matrix.py }} architecture: ${{ matrix.architecture }} - run: pip install tox - name: Running tox run: tox -e py -- ${{ matrix.pytest-args }} coverage: runs-on: ubuntu-20.04 name: Validate coverage steps: - uses: actions/checkout@v4 - name: Setup python uses: actions/setup-python@v5 with: python-version: 3.12 architecture: x64 - run: pip install tox - run: tox -e py312-cover,coverage docs: runs-on: ubuntu-20.04 name: Build the documentation steps: - uses: actions/checkout@v4 - name: Setup python uses: actions/setup-python@v5 with: python-version: 3.8 architecture: x64 - run: pip install tox - run: tox -e docs lint: runs-on: ubuntu-20.04 name: Lint the package steps: - uses: actions/checkout@v4 - name: Setup python uses: actions/setup-python@v5 with: python-version: 3.8 architecture: x64 - run: pip install tox - run: tox -e lint