name: main

on:
  push:
    branches: [main]
    tags:
  pull_request:

jobs:
  main:
    strategy:
      matrix:
        include:
        # linux
        - os: ubuntu-latest
          python: pypy-3.9
          toxenv: py
        - os: ubuntu-latest
          python: 3.9
          toxenv: py
        - os: ubuntu-latest
          python: '3.10'
          toxenv: py
        - os: ubuntu-latest
          python: '3.11'
          toxenv: py
        - os: ubuntu-latest
          python: '3.12'
          toxenv: py
        - os: ubuntu-latest
          python: '3.13'
          toxenv: py
        # windows
        - os: windows-latest
          python: 3.9
          toxenv: py
        # misc
        - os: ubuntu-latest
          python: '3.10'
          toxenv: docs
        - os: ubuntu-latest
          python: '3.10'
          toxenv: linters
        - os: ubuntu-latest
          python: '3.10'
          toxenv: dogfood
    runs-on: ${{ matrix.os }}
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python }}
    - run: python -mpip install --upgrade setuptools pip tox virtualenv
    - run: tox -e ${{ matrix.toxenv }}
