Refactor pure vs cython builds #510
This file contains 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: Tests | |
on: [push, pull_request] | |
jobs: | |
tests: | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] | |
os: [ubuntu-20.04, macos-12, windows-2019] | |
cython: [false, true] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install Poetry | |
uses: abatilo/actions-poetry@v2.0.0 | |
with: | |
poetry-version: 1.8.4 | |
- name: Install Dependencies (Pure Python) | |
if: ${{ !matrix.cython }} | |
run: poetry install --without dev,docs | |
- name: Install Dependencies (with Cython) | |
if: ${{ matrix.cython }} | |
run: poetry install --without dev,docs --extras cython | |
- name: Run Tests | |
run: | | |
poetry run python -c "import iscc_core; print(f'Using Cython: {iscc_core.USING_CYTHON}')" | |
poetry run pytest -v tests | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
if: matrix.os == 'ubuntu-20.04' && matrix.python-version == '3.9' && !matrix.cython | |
- name: Build Wheel | |
if: ${{ matrix.cython }} | |
run: poetry build -f wheel | |
- name: Test Wheel Installation | |
if: ${{ matrix.cython && runner.os != 'Windows' }} | |
run: | | |
python -m venv venv | |
source venv/bin/activate | |
pip install dist/*.whl | |
python -c "import iscc_core; iscc_core.conformance_selftest()" | |
python -c "import iscc_core; print(iscc_core.turbo())" | |
- name: Test Wheel Installation on Windows | |
if: ${{ matrix.cython && runner.os == 'Windows' }} | |
run: | | |
python -m venv venv | |
venv\Scripts\Activate.ps1 | |
$wheelFile = (Get-ChildItem dist/*.whl -Name) | |
pip install "dist/$wheelFile" | |
python -c "import iscc_core; iscc_core.conformance_selftest()" | |
python -c "import iscc_core; print(iscc_core.turbo())" | |
- name: Collect Wheel | |
if: ${{ matrix.cython }} | |
uses: actions/upload-artifact@v3 | |
with: | |
path: dist/*.whl |