feat: Revamp CrossValidationReport to use EstimatorReport #218
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: backend | |
on: | |
pull_request: | |
paths: | |
- 'skore/src/**' | |
- 'skore/tests/**' | |
- 'skore/pyproject.toml' | |
- 'skore/requirements*.txt' | |
- '.github/workflows/backend.yml' | |
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-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 }}-${{ matrix.scikit-learn }}-${{ hashFiles('skore/pyproject.toml') }} | |
- 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: "skore/" | |
if: steps.cache-python-venv.outputs.cache-hit != 'true' | |
run: | | |
python -m pip install --upgrade "pip" | |
python -m pip install --upgrade "build" | |
python -m pip install --upgrade "scikit-learn ==${{ matrix.scikit-learn }}" | |
# Install `skore` and its dependencies | |
python -m pip install --upgrade ".[test]" | |
# Uninstall the `skore` package itself | |
python -m pip uninstall -y "skore" | |
- 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/ | |
run: | | |
# Install `skore` without its dependencies, which are present in the venv | |
wheel=(dist/*.whl); python -m pip install --force-reinstall --no-deps "${wheel}" | |
- 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/ |