# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: build

on:
  push:
    branches: [ main, development]
  pull_request:

jobs:

  lint:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [macos-latest, ubuntu-latest]
        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]
    
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install development dependencies
        run: |
          python -m pip install --upgrade pip
          make dev
      
      - name: Lint - isort, black
        run: |
          make lint

  build:
    needs: lint
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [macos-latest, ubuntu-latest]
        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"]

    steps:
      - uses: actions/checkout@v2
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          make dev
          make requirements
      - name: Install Cython code
        run: |
          make build-cython
      - name: Test with pytest
        run: |
          make test
      
      # # Upload to TestPyPI
      # - name: Build and Upload to TestPyPI
      #   env:
      #     TWINE_USERNAME: __token__
      #     TWINE_PASSWORD: ${{ secrets.TWINE_TEST_TOKEN }}
      #     TWINE_REPOSITORY_URL: https://test.pypi.org/legacy/
      #     # To install using test.pypi if there are extra dependencies
      #     # you need to tell test.pypi where to find them (otherwise it will look
      #     # in its own repositories and not find them). This can be done by providing
      #     # the flag: --extra-index-url https://pypi.org/simple
      #   run: |
      #     echo $TWINE_USERNAME
      #     echo $TWINE_PASSWORD
      #     echo $TWINE_REPOSITORY
      #     python setup.py sdist bdist_wheel
      #     twine upload --skip-existing dist/*
        
