name: Lint

# If a pull-request is pushed then cancel all previously running jobs related
# to that pull-request
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
  cancel-in-progress: true 

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

env:
  PY_COLORS: 1

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - uses: actions/setup-python@v3
      - run: pip install --upgrade tox
      - name: Run black code formatter (https://black.readthedocs.io/en/stable/)
        run: tox -e black -- --check
      - name: Run isort import order checker (https://pycqa.github.io/isort/)
        run: tox -e isort -- --check
      - name: Run flake8 (https://flake8.pycqa.org/en/latest/)
        run: tox -e flake8
      - name: Run pylint Python code static checker (https://github.com/PyCQA/pylint)
        run: tox -e pylint
      - name: Run mypy static typing checker (https://www.mypy-lang.org/)
        run: tox -e mypy
