name: CI
on:
  pull_request:

jobs:
  CI:
    continue-on-error: true
    runs-on: ${{ matrix.os }}
    # Supported Versions:
    # https://github.com/actions/python-versions/blob/main/versions-manifest.json
    strategy:
      matrix:
        os: [macos-latest, ubuntu-20.04]
        python-version: [3.8, 3.11, pypy-3.8, pypy-3.10]
    steps:
      - uses: actions/checkout@v2
      - name: Setup Python environment
        uses: actions/setup-python@v2.2.1
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install Requirements
        run: |
          python -m pip install --upgrade pip
          pip install flake8==5.0.4 pylint pytest
          pip install -r requirements.txt
          pip install -r test/requirements.txt
          python setup.py install
      - name: Run Linter
        run: |
          flake8 setup.py example stone test
          pylint --rcfile=.pylintrc setup.py example stone test
      - name: Run Unit Tests
        run: |
          pytest
      - name: Run MyPy
        if: matrix.python-version != 'pypy-3.7' 
        run: |
          pip install enum34 mypy types-six
          ./mypy-run.sh
