Merge pull request #177 from CalebBell/master #436
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build | |
| on: | |
| push: | |
| branches: [master, release] | |
| pull_request: | |
| branches: [master, release] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.ref != 'refs/heads/master' && github.ref != 'refs/heads/release' }} | |
| jobs: | |
| build: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.13t', 'pypy3.11'] | |
| os: [windows-latest, ubuntu-latest, macos-15-intel, macos-latest] | |
| architecture: ['x86', 'x64'] | |
| exclude: | |
| # Only test pypy on Linux | |
| - os: windows-latest | |
| python-version: pypy3.11 | |
| - os: macos-latest | |
| python-version: pypy3.11 | |
| - os: macos-15-intel | |
| python-version: pypy3.11 | |
| # no python builds available on macos 32 bit, arm or x64 | |
| - os: macos-latest | |
| architecture: x86 | |
| - os: macos-15-intel | |
| architecture: x86 | |
| # no python builds available on linux 32 bit | |
| - os: ubuntu-latest | |
| architecture: x86 | |
| # scipy dropped 32 bit windows builds | |
| - os: windows-latest | |
| architecture: x86 | |
| python-version: 3.9 | |
| - os: windows-latest | |
| architecture: x86 | |
| python-version: 3.10 | |
| - os: windows-latest | |
| architecture: x86 | |
| python-version: 3.11 | |
| - os: windows-latest | |
| architecture: x86 | |
| python-version: 3.12 | |
| - os: windows-latest | |
| architecture: x86 | |
| python-version: 3.13 | |
| - os: windows-latest | |
| architecture: x86 | |
| python-version: 3.13t | |
| # These are arm - old versions of Python are not supported | |
| - os: macos-latest | |
| python-version: 3.9 | |
| - os: macos-latest | |
| python-version: 3.10 | |
| # pandas doesn't have wheels for 3.13t on Windows x64 | |
| - os: windows-latest | |
| architecture: x64 | |
| python-version: 3.13t | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} ${{ matrix.architecture }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| architecture: ${{ matrix.architecture }} | |
| - name: Install uv | |
| if: matrix.python-version != '3.13t' | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: "pyproject.toml" | |
| - name: Install Ubuntu dependencies | |
| if: startsWith(runner.os, 'Linux') | |
| run: | | |
| # Taken from scipy | |
| sudo apt-get update | |
| sudo apt-get install -y libopenblas-dev libatlas-base-dev liblapack-dev gfortran libgmp-dev libmpfr-dev libsuitesparse-dev ccache libmpc-dev libjpeg-dev zlib1g-dev libtiff-dev libfreetype6-dev liblcms2-dev libwebp-dev | |
| - name: Install dependencies | |
| run: | | |
| python -c "import platform; print(platform.platform()); print(platform.architecture())" | |
| if [[ "${{ matrix.python-version }}" == "3.13t" ]]; then | |
| # Use pip for 3.13t (free-threading) as uv may not fully support it yet | |
| python -m pip install --upgrade pip | |
| pip install -e .[test] | |
| else | |
| uv pip install --system -e .[test] | |
| fi | |
| shell: bash | |
| - name: Add numba | |
| if: ${{ !contains(fromJSON('["pypy3.11", "3.13t"]'), matrix.python-version) }} | |
| run: | | |
| uv pip install --system -e .[numba] | |
| - name: Generate Files | |
| if: ${{ matrix.python-version == '3.9' || matrix.python-version == '3.10' || matrix.python-version == '3.11' || matrix.python-version == '3.12' || matrix.python-version == '3.13' || matrix.python-version == '3.13t' || matrix.python-version == 'pypy3.11' }} | |
| run: | | |
| python dev/dump_UNIFAC_assignments_to_sqlite.py | |
| - name: Test with pytest | |
| run: | | |
| pytest . -v --cov-report html --cov=thermo --cov-report term-missing -m "not online and not sympy and not numba and not CoolProp and not fuzz and not deprecated and not slow" | |
| coveralls || true | |
| env: | |
| COVERALLS_REPO_TOKEN: ${{ secrets.coveralls }} | |
| COVERALLS_PARALLEL: true | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| PYTHON_GIL: ${{ matrix.python-version == '3.13t' && '0' || '' }} | |
| - name: Upload coverage HTML report | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-html-${{ matrix.os }}-${{ matrix.python-version }}-${{ matrix.architecture }} | |
| path: htmlcov/ | |
| finish: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Coveralls Finished | |
| env: | |
| COVERALLS_REPO_TOKEN: ${{ secrets.coveralls }} | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| curl https://coveralls.io/webhook?repo_token=${{ secrets.coveralls }} -d "payload[build_num]=${{ github.sha }}&payload[status]=done" |