EvaluationWorkspace
This commit is contained in:
+28
@@ -119,6 +119,34 @@ Les chemins des étapes personnelles peuvent être adaptés avec
|
||||
=CURRENT_SCORE_ODS_PATH=, =FINAL_SCORE_ODS_PATH=,
|
||||
=FINAL_SCORE_OUTPUT_DIR= et =FINAL_SCORE_FONT_PATH= dans =config.py=.
|
||||
|
||||
*** API commune pour les scripts
|
||||
|
||||
Le paquet =copienator= centralise les chemins d'une évaluation et les
|
||||
écritures JSON sûres. Un script ne devrait donc plus reconstruire les
|
||||
chemins partagés à la main :
|
||||
|
||||
#+BEGIN_SRC python
|
||||
from copienator import EvaluationWorkspace, atomic_write_json
|
||||
|
||||
workspace = EvaluationWorkspace("Interro")
|
||||
atomic_write_json(workspace.correction_file, corrections)
|
||||
#+END_SRC
|
||||
|
||||
=EvaluationWorkspace.discover(path)= retrouve également la racine d'une
|
||||
évaluation à partir d'un fichier ou d'un sous-dossier. Sa construction
|
||||
ne crée aucun fichier. La création explicite de
|
||||
=.copienator/logs/= et =.copienator/runs/= se fait avec
|
||||
=workspace.ensure_control_directories()=. Le chemin
|
||||
=.copienator/state.sqlite3= est réservé à une future couche d'état
|
||||
transactionnelle.
|
||||
|
||||
=atomic_write_json= écrit d'abord dans un fichier temporaire situé dans
|
||||
le même dossier, synchronise son contenu, puis remplace la destination.
|
||||
Une interruption ne laisse donc pas un JSON partiellement écrit. Pour
|
||||
une modification concurrente de type lire-modifier-écrire, utiliser
|
||||
=atomic_update_json= : cet utilitaire protège l'opération complète avec
|
||||
un verrou inter-processus Linux/Windows.
|
||||
|
||||
** Correction d'un paquet de copies
|
||||
|
||||
1. Créer un fichier =names= dans le dossier courant, avec les
|
||||
|
||||
Reference in New Issue
Block a user