Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .github/workflows/exercises-advisory.yml
Original file line number Diff line number Diff line change
Expand Up @@ -252,3 +252,32 @@ jobs:
echo "RESULT: all in-corpus modified notebooks meet their threshold (verified)."
fi
exit 0

- name: Credited-examples sweep over the day's merged PRs (nocturne)
# #19101 -- l'etape precedente porte la branche « exemples credites »
# de #18761, mais elle est DORMANTE sous `schedule` : le diff exige
# `--base` ET `--pr-body-file`, et le mode nocturne n'a pas de contexte
# PR, donc pas de body. Le test de l'etape (l.136) echouait, la branche
# `else` sans `--base` etait prise, et le diff n'etait **jamais**
# mesure : le label `credited-examples-lost` ne pouvait pas etre pose.
#
# Ce balayage le reveille SANS reintroduire `pull_request` sur ce
# workflow (interdit : le clone par PR est la motivation de #12817
# tranche 1). Il rejoue le diff apres coup, PR par PR, avec SA base et
# SON body -- option 1 de #19101, assumee post-mortem.
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_REPO: ${{ github.repository }}
run: |
set -euo pipefail
# Le masque `|| echo "::warning::..."` est RETIRE (review #19215,
# point 3) : un plantage permanent laissait le run vert chaque nuit
# -- exactement la classe de defaut de #19214 (35 jours verts sans
# rapport). Le contrat de l'organe reste : ses pannes ATTENDUES
# (refs absentes, body illisible, plafond atteint) sont nommees en
# [WARN] et le script sort 0 ; ce qui ROUGIT ici est l'imprevu
# (traceback, crash) -- jamais masque. Sans effet merge : la mesure
# du body de #19214 vaut aussi pour ce workflow (schedule/dispatch
# seulement, hors du perimetre `merge_dwell`).
python scripts/notebook_tools/credited_examples_sweep.py \
--hours 24 --apply
23 changes: 22 additions & 1 deletion scripts/notebook_tools/check_pr_exercises.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@

import argparse
import json
import subprocess
import sys
from dataclasses import asdict, dataclass, field
from pathlib import Path
Expand Down Expand Up @@ -238,7 +239,27 @@ def check_notebooks(
)
continue

cnt = count_exercises_in_notebook(path)
# #19215 (review 5411248369) : le comptage doit porter sur la MEME
# revision que le diff credite, pas sur l'arbre du jour. Un carnet
# MODIFIE par une PR puis RENOMME (ou supprime) par une PR suivante
# est absent de l'arbre : `count_exercises_in_notebook` levait un
# FileNotFoundError qui emportait tout le balayage -- les autres PR
# de la fenetre n'etaient pas mesurees. Le blob de tete, lui, existe
# par construction pour un chemin MODIFIED.
#
# La classification, elle, reste sur `path` : `classify_notebook` lit
# les regles de REPERTOIRE (`IIT/`, `groupe-`, `_`) et le fichier
# temporaire du blob ne les porte pas -- classify sur le blob
# reclasserait le carnet en `archive`/`tooling` sur son seul prefixe.
count_path = path
if head_ref and _HAS_CREDITED:
try:
count_path = _read_git_blob(head_ref, str(path).replace("\\", "/"))
except (subprocess.CalledProcessError, OSError):
# Blob absent de la tete : on garde l'arbre du jour. Si lui
# aussi manque, l'echec est nomme par l'appelant (sweep).
count_path = path
cnt = count_exercises_in_notebook(count_path)
if cnt.parse_error is not None:
result.parse_errors.append(
NotebookVerdict(
Expand Down
Loading
Loading