name: Python package

on: [push,pull_request]

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      max-parallel: 4
      matrix:
        python-version: [ "3.10", "3.11" , "3.12", "3.13"]

    steps:
    - uses: actions/checkout@v2
      with:
        submodules: true
    - 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
        pip install -r requirements.txt
    - name: Test with pytest
      run: |
        pytest -m "not requires_network"

  deploy_pypi:
    if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags')

    runs-on: ubuntu-latest

    needs: [build]

    steps:
    - uses: actions/checkout@v2
      with:
        fetch-depth: 0
    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: "3.10"
    - name: Install Build
      run: pip install build
    - name: Build package
      run: python -m build
    - name: Publish package to PyPI
      uses: pypa/gh-action-pypi-publish@master
      with:
        user: __token__
        password: ${{ secrets.pypi_token }}
