Add Cython build infra + initial extension module #43
Workflow file for this run
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: Test Suite | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
defaults: | |
run: | |
shell: bash -el {0} | |
concurrency: | |
group: test-${{github.ref}} | |
cancel-in-progress: true | |
jobs: | |
conda: | |
name: Conda Python ${{matrix.python}} on ${{matrix.platform}} | |
runs-on: ${{matrix.platform}}-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
python: | |
- "3.10" | |
- "3.11" | |
platform: | |
- macos | |
- windows | |
- ubuntu | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: 👢 Set up Conda environment | |
uses: mamba-org/setup-micromamba@v1 | |
id: setup | |
with: | |
environment-file: envs/lenskit-py${{matrix.python}}-ci.yaml | |
environment-name: lkpy | |
cache-environment: true | |
init-shell: bash | |
- name: Inspect environment | |
run: | | |
python -V | |
numba -s | |
- name: Compile extension modules | |
run: | | |
just build-inplace | |
- name: Test LKPY | |
run: | | |
python -m pytest --cov=lenskit --verbose --log-file=test.log | |
env: | |
NUMBA_NUM_THREADS: 4 | |
MKL_THREADING_LAYER: sequential | |
OMP_NUM_THREADS: 1 | |
OPENBLAS_NUM_THREADS: 1 | |
- name: Non-JIT test coverage | |
if: runner.os == 'Linux' | |
env: | |
NUMBA_DISABLE_JIT: 1 | |
run: | | |
python -m pytest --cov=lenskit --cov-append -m 'not slow' --log-file=test-nojit.log | |
- name: Process test results | |
uses: lenskit/lkbuild/actions/save-test-results@main | |
with: | |
artifact-name: test-conda-${{matrix.platform}}-py${{matrix.python}} | |
check-docs: | |
name: Docs, Examples, and Eval | |
timeout-minutes: 30 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: 👢 Set up Conda environment | |
uses: mamba-org/setup-micromamba@v1 | |
id: setup | |
with: | |
environment-file: envs/lenskit-py3.11-dev.yaml | |
environment-name: lkpy | |
cache-environment: true | |
init-shell: bash | |
- name: Inspect Conda environment | |
run: | | |
echo "Conda environment info" | |
conda info | |
echo "Conda environment package list" | |
conda list | |
- name: Cache ML data | |
uses: actions/cache@v2 | |
with: | |
path: | | |
data | |
!data/*.zip | |
key: test-mldata-000 | |
- name: Compile extension modules | |
run: | | |
just build-inplace | |
- name: Download ML data | |
run: | | |
python -m lenskit.datasets.fetch ml-100k | |
python -m lenskit.datasets.fetch ml-1m | |
python -m lenskit.datasets.fetch ml-10m | |
python -m lenskit.datasets.fetch ml-20m | |
- name: Install for testing | |
run: | | |
pip install --no-deps -e . | |
- name: Run Eval Tests | |
run: | | |
python -m pytest --cov=lenskit -m eval --log-file test-eval.log | |
python -m pytest --cov=lenskit --cov-append -m realdata --log-file test-realdata.log | |
- name: Validate doc notebooks | |
run: | | |
cp docs/*.ipynb data | |
python -m pytest --nbval-lax --cov=lenskit --cov-append data --log-file test-docs.log | |
# - name: Validate Examples | |
# run: | | |
# python -m pytest --nbval-lax --cov=lenskit --cov-append examples --log-file test-examples.log | |
- name: Process test results | |
uses: lenskit/lkbuild/actions/save-test-results@main | |
with: | |
artifact-name: test-check-docs | |
vanilla: | |
name: Vanilla Python ${{matrix.python}} on ${{matrix.platform}} | |
runs-on: ${{matrix.platform}}-latest | |
timeout-minutes: 30 | |
strategy: | |
fail-fast: false | |
matrix: | |
python: | |
- "3.10" | |
- "3.11" | |
platform: | |
- windows | |
- ubuntu | |
steps: | |
- name: Check out source | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{matrix.python}} | |
cache: 'pip' | |
- name: Set up dependencies | |
run: | | |
pip install -e '.[test]' | |
- name: Inspect environment | |
run: | | |
pip list | |
- name: Run tests | |
run: | | |
python -m pytest --cov=lenskit --cov-report=xml --log-file=test.log | |
- name: Process test results | |
uses: lenskit/lkbuild/actions/save-test-results@main | |
with: | |
artifact-name: test-vanilla-${{matrix.platform}}-py${{matrix.python}} | |
mindep: | |
name: Minimal Supported Dependencies | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out source | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Set up Python deps | |
run: | | |
set -e | |
python -m pip install -U 'uv>=0.1.13' | |
uv pip install --system --resolution=lowest-direct -e '.[test]' | |
- name: Inspect environment | |
run: | | |
pip list | |
- name: Run tests | |
run: | | |
python -m pytest --cov=lenskit --cov-report=xml --log-file test.log | |
- name: Process Test Results | |
uses: lenskit/lkbuild/actions/save-test-results@main | |
with: | |
artifact-name: test-mindeps | |
results: | |
name: Test Suite Results | |
runs-on: ubuntu-latest | |
needs: | |
- conda | |
- vanilla | |
- check-docs | |
- mindep | |
steps: | |
- name: Check out source | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: lenskit/lkbuild/actions/report-test-results@main |