name: build
on: [push, pull_request]
jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        python: ["3.8", "3.9", "3.10", "3.11"]
        os: [ubuntu-latest, windows-latest, macos-latest]
        include:
          - python: "3.8"
            tox_env: "py38"
          - python: "3.9"
            tox_env: "py39"
          - python: "3.10"
            tox_env: "py310"
          - python: "3.11"
            tox_env: "py311"
    steps:
    - uses: actions/checkout@v2
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python }}
    - name: Install tox
      run: |
        python -m pip install --upgrade pip setuptools
        pip install tox
    - name: Test
      run: |
        tox -e ${{ matrix.tox_env }}
  linting:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: "3.8"
    - name: Install tox
      run: |
        python -m pip install --upgrade pip setuptools
        pip install tox
    - name: Lint
      run: |
        tox -e linting
  deploy:
      if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')
      runs-on: ubuntu-latest
      needs: [build, linting]
      steps:
      - uses: actions/checkout@v2
      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: "3.8"
      - name: Install wheel
        run: |
          python -m pip install --upgrade pip setuptools
          pip install wheel
      - name: Build package
        run: |
          python setup.py sdist bdist_wheel
      - name: Publish package to PyPI
        uses: pypa/gh-action-pypi-publish@master
        with:
          user: __token__
          password: ${{ secrets.pypi_token }}
