Skip to content

chore: Serialization of items is now only in UI module #711

chore: Serialization of items is now only in UI module

chore: Serialization of items is now only in UI module #711

Workflow file for this run

name: backend
on:
pull_request:
paths:
- '.github/workflows/backend.yml'
- 'skore/**'
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
defaults:
run:
shell: "bash"
jobs:
backend-lint:
runs-on: "ubuntu-latest"
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
- name: Install dependencies
run: python -m pip install --upgrade pip pre-commit
- name: Lint
working-directory: skore/
run: pre-commit run --all-files ruff
backend-lockfiles:
runs-on: "ubuntu-latest"
if: ${{ github.event_name == 'pull_request' }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Check lockfiles are not obsolete
run: |
changes=$(git diff --name-only HEAD^1 HEAD)
if
(echo "${changes}" | grep -qE 'skore/(test-)?requirements.in') &&
(echo "${changes}" | (! grep -qE "skore/ci/requirements/.*/test-requirements.txt"))
then
echo '::error title=backend-lockfiles:: Lockfiles obsolete, please execute `$ cd skore/ci; bash pip-compile.sh`'
exit 1
fi
backend-test:
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "windows-latest"]
python: ["3.9", "3.10", "3.11", "3.12"]
scikit-learn: ["1.6"]
include:
- os: "ubuntu-latest"
python: "3.12"
scikit-learn: "1.4"
- os: "ubuntu-latest"
python: "3.12"
scikit-learn: "1.5"
- os: "ubuntu-latest"
python: "3.12"
scikit-learn: "1.6"
coverage: true
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
cache: pip
- name: Restore python-venv
uses: actions/cache/restore@v4
id: cache-python-venv
with:
path: 'skore/venv'
key: >-
python-venv
-${{ matrix.os }}
-${{ matrix.python }}
-${{ hashFiles(format('skore/ci/requirements/python-{0}/scikit-learn-{1}/test-requirements.txt', matrix.python, matrix.scikit-learn)) }}
- name: Setup python-venv
working-directory: "skore/"
run: |
set -eu
# Ensure venv is created
python -m venv venv
# Activate venv for each step depending on the OS
if [[ "${{ matrix.os }}" == "ubuntu-latest" ]]; then
echo "${GITHUB_WORKSPACE}/skore/venv/bin" >> ${GITHUB_PATH}
echo "VIRTUAL_ENV=${GITHUB_WORKSPACE}/skore/venv" >> ${GITHUB_ENV}
else
echo "${GITHUB_WORKSPACE}\\skore\\venv\\Scripts" >> ${GITHUB_PATH}
echo "VIRTUAL_ENV=${GITHUB_WORKSPACE}\\skore\\venv" >> ${GITHUB_ENV}
fi
- name: Install dependencies in python-venv
working-directory: ${{ format('skore/ci/requirements/python-{0}/scikit-learn-{1}', matrix.python, matrix.scikit-learn) }}
if: steps.cache-python-venv.outputs.cache-hit != 'true'
run: |
python -m pip install --upgrade pip build
python -m pip install --requirement test-requirements.txt
- name: Save python-venv
uses: actions/cache/save@v4
if: steps.cache-python-venv.outputs.cache-hit != 'true'
with:
path: 'skore/venv'
key: ${{ steps.cache-python-venv.outputs.cache-primary-key }}
- name: Build
working-directory: skore/
run: python -m build
- name: Install
working-directory: skore/dist/
run: wheel=(*.whl); python -m pip install --force-reinstall --no-deps "${wheel}"
- name: Show dependencies versions
working-directory: skore/
run: |
python -c "import skore; skore.show_versions()"
- name: Test without coverage
if: ${{ ! matrix.coverage }}
timeout-minutes: 10
working-directory: skore/
run: python -m pytest -n auto src/ tests/ --no-cov
- name: Test with coverage
if: ${{ matrix.coverage }}
timeout-minutes: 10
working-directory: skore/
run: |
mkdir coverage
python -m pytest -n auto src/ tests/ --junitxml=coverage/coverage.xml --cov-config=pyproject.toml --cov | tee coverage/coverage.txt
- name: Upload coverage reports
if: ${{ matrix.coverage && (github.event_name == 'pull_request') }}
uses: actions/upload-artifact@v4
with:
name: backend-coverage
path: skore/coverage/