name: Tests on: schedule: - cron: "0 11 * * 5" push: branches: - main pull_request: branches: - main jobs: tests: name: ${{ matrix.name }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: # See the following link for all available Python versions: # https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json - {name: '3.10', python: '3.10', os: ubuntu-latest, tox: py310} - {name: '3.9', python: '3.9', os: ubuntu-latest, tox: py39} - {name: '3.8', python: '3.8', os: ubuntu-latest, tox: py38} - {name: '3.7', python: '3.7', os: ubuntu-latest, tox: py37} - {name: '3.6', python: '3.6', os: ubuntu-latest, tox: py36} - {name: PyPy3, python: pypy3, os: ubuntu-latest, tox: pypy3} # - {name: Windows, python: '3.9', os: windows-latest, tox: py39} # - {name: Mac, python: '3.9', os: macos-latest, tox: py39} - {name: lint, python: '3.9', os: ubuntu-latest, tox: lint} # Handled by https://docs.readthedocs.io/en/stable/guides/autobuild-docs-for-pull-requests.html # - {name: Docs, python: '3.9', os: ubuntu-latest, tox: docs} steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 with: python-version: ${{ matrix.python }} - name: update pip run: | pip install -U wheel pip install -U setuptools python -m pip install -U pip - name: get pip cache dir id: pip-cache run: echo "::set-output name=dir::$(pip cache dir)" - name: cache pip uses: actions/cache@v2 with: path: ${{ steps.pip-cache.outputs.dir }} key: pip|${{ runner.os }}|${{ matrix.python }}|${{ hashFiles('setup.py') }}|${{ hashFiles('requirements/*.txt') }} - name: cache hypothesis uses: actions/cache@v2 with: path: .hypothesis key: hypothesis|${{ runner.os }}|${{ matrix.python }} - name: set full Python version in PY env var # See https://pre-commit.com/#github-actions-example run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV - name: cache pre-commit uses: actions/cache@v2 with: path: ~/.cache/pre-commit key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }} if: matrix.tox == 'lint' - run: pip install tox - run: tox -e ${{ matrix.tox }} # https://github.com/codecov/codecov-action - name: Upload coverage to Codecov uses: codecov/codecov-action@v1 # coverage only enabled for "py39" env in tox.ini if: matrix.tox == 'py39'