# Grade generator *Language : python* *Authors : ASM 2022* Ce générateur a pour objectif de générer des notes à partir d'un fichier de configuration et de tests sous format JSON. Son utilisation se doit d'être simple et lisible pour le correcteur. ## YAML file config Le YAML file servira de configuration pour lancer la génération de note. ### Format Dedans nous préciserons : - Les "catégories" de tests, - Le nom des fonctionnalitées testées, - Le barème donné sur le fichier excel par M. Bouchet, - Nos coefs par niveau de difficulté. **Exemple** ```yaml - test_basics - test_hello_c : 2 - basic : "mandatory" intermediate : 0.6 hard : 0.4 - test_hello_id_c : 3 - basic : 0.4 - intermediate : 0.4 - hard : 0.2 ``` ### Tags et options Afin de pouvoir moduler les coefficiens de certains tests, et leurs donner plus d'importance, il est possible de donner des valeurs aux parties **Basic**, **Intermediate** et **Hard**. - Un coef doit se trouver strictement entre 0 et 1. - La somme des trois parties doit faire 1. Cependant, il existe le tag **"mandatory"** qui oblige une partie de devoir être validé entièrement pour ne pas avoir 0. *Dans l'exemple précédent, si un élève ne valide pas 100% des tests basic pour "test_hello_c", alors il aura 0 pour l'ensemble des tests de cette sous partie.* :::warning :warning: Ce tag n'est à utiliser **que pour des fonctions de base et triviales** (etc hash_new, is_primary...) Il peut s'avérer trop puissant, puisqu'il s'applique sur une catégorie **ENTIÈRE**. Dans le cas d'un où des tests présents dans une catégorie ne sont pas éliminatoires, merci de privilégier l'usage des **coefficients**. [Si vous avez des avis concernant ce tag, n'hésitez pas.] ::: ## Usage :::danger Cette partie risque **d'être modifiée**. ::: L'utilisation de ce générateur de note se doit d'être simple d'utilisation. Il prend deux arguments : - **dir_json_students** : Dossier contenant les traces des étudiants sous format json. - **config_file.yaml** : Fichier de configuration décrit plus haut. - **tp_id** : Identifiant du TP (ex : TP5 etc.). Utilisé dans le nommage des dossiers/fichiers. ```shell 42sh$ ./note_generator.py tp_id dir_json_students/ config_file.yaml ``` Un dossier *[tp_id]_student_grades* sera généré et contiendra un fichier par étudiant, nommé *login_grades*, décrivant les notes résultants des tests qu'il a passé. Format *login_grades* : ```yaml login - tp_id test_hello_c : 1/2 [...] test_hello_id_c : 3/3 result : 19/20 ``` ------ Création d'un fichier CSV afin de faciliter la création du format excel ?