Skip to content

Commit

Permalink
Merge branch 'main' into what-you-put-is-what-you-get
Browse files Browse the repository at this point in the history
# Conflicts:
#	skore/src/skore/project/create.py
#	skore/tests/unit/project/test_project.py
  • Loading branch information
thomass-dev committed Jan 10, 2025
2 parents 9a3698c + 1a4151a commit a02785f
Show file tree
Hide file tree
Showing 104 changed files with 7,201 additions and 802 deletions.
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/.github/ @thomass-dev @rouk1 @augustebaum
3 changes: 1 addition & 2 deletions .github/actions/sphinx/deploy/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@ inputs:
required: false
default: scaleway
BUCKET:
required: false
default: prod-probabl-skore
required: true
SOURCE:
required: true
DESTINATION:
Expand Down
38 changes: 38 additions & 0 deletions .github/actions/workflow-run/context/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: acquire-pr-context
description: |
Acquire the PR number and the PR commit HEAD sha, after a "workflow_run" event.
The "workflow_run" context differs from the "pull_request" context and doesn't contain
PR basic information. This action intends to provide some missing information in the
"workflow_run" context, without having to explicitly record them in the workflow that
triggered the "workflow_run" event.
outputs:
pr-number:
description: "The PR number"
value: ${{ steps.acquire-pr-context.outputs.number }}
pr-head-sha:
description: "The PR commit HEAD sha"
value: ${{ steps.acquire-pr-context.outputs.head-sha }}

runs:
using: composite
steps:
- id: acquire-pr-context
shell: bash
run: |-
gh pr view \
--repo "${REPOSITORY}" "${BRANCH}" \
--json 'number,headRefOid' \
--jq '"number=\(.number)\nhead-sha=\(.headRefOid)"' \
\
>> "${GITHUB_OUTPUT}"
env:
GH_TOKEN: ${{ github.token }}
REPOSITORY: ${{ github.repository }}
BRANCH: |-
${{
(github.event.workflow_run.head_repository.fork == true)
&& format('{0}:{1}', github.event.workflow_run.head_repository.owner.login, github.event.workflow_run.head_branch)
|| github.event.workflow_run.head_branch
}}
149 changes: 149 additions & 0 deletions .github/workflows/backend.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
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/
69 changes: 0 additions & 69 deletions .github/workflows/ci.yml

This file was deleted.

89 changes: 89 additions & 0 deletions .github/workflows/frontend.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
name: frontend

on:
pull_request:
paths:
- 'skore-ui/**'
- '.github/workflows/frontend.yml'
push:
branches:
- main

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

defaults:
run:
shell: "bash"

jobs:
frontend-lint:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: skore-ui/package-lock.json

- name: Lint
working-directory: skore-ui/
run: |
npm install
npm run type-check
npm run lint
npm run format
npm run style-lint
frontend-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: skore-ui/package-lock.json

- name: Test with coverage
working-directory: skore-ui/
run: |
npm install
npm run test:unit:coverage
- name: Upload coverage reports
if: ${{ github.event_name == 'pull_request' }}
uses: actions/upload-artifact@v4
with:
name: frontend-coverage
path: skore-ui/coverage/

frontend-build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: skore-ui/package-lock.json

- name: Build
working-directory: skore-ui/
run: |
npm install
npm run build
Loading

0 comments on commit a02785f

Please sign in to comment.