Je propose d'ajouter quelques options de personnalisation à before et evaluator
Possibilité de définir l'encoder/decoder Python <-> JSON (et donc d'ajouter l'encodage/décodage de nouveaux types d'objet).
Exemple. Pour les exercices qui utilisent SymPy, on aimerait ajouter un encodage/décodage SymPy <-> JSON.
Possibilité de définir un namespace dans lequel les scripts Python before et evaluator sont exécutés.
Exemple. Pour les exercices de maths, on aimerait importer par défaut toutes les commandes SymPy (sans préfixe) dans le namespace.
Possibilité de définir l'environnement utilisé pour la mise en forme Jinja (et donc d'ajouter des filtres).
Exemple. Pour les exercices qui utilisent SymPy, on aimerait disposer d'un filtre {{ ...|latex }} qui convertit un objet SymPy en châine Latex au moment de la mise en forme.
En pratique, l'utilisateur devrait définir tout ça (le namespace, l'encoder python, l'environnement Jinja) dans des fichiers .py à part, en utilisant des noms spécifiques et les inclure dans son exercice avec un alias spécifique.
De cette façon, on pourrait avoir un template avec un before/evaluator customisé pour les maths, un template avec un before/evaluator customisé pour la physique, etc.
Voilà des nouvelles versions de before et evaluator qui implémentent ça.
/builder/before_v1.py
/grader/evaluator_v1.py
Voilà des exemples de customisation :
Un namespace pour les maths qui importe toutes les commandes SymPy sans préfixe.
/model/namespace/namespace_math.py
Un encoder/decoder JSON qui gère les objets SymPy
/model/json_coder/json_coder_sympy.py
Un environnement Jinja qui inclut un filtre SymPy -> LaTeX
/model/jinja_env/jinja_env_sympy2latex.py
Je propose d'ajouter quelques options de personnalisation à before et evaluator
Exemple. Pour les exercices qui utilisent SymPy, on aimerait ajouter un encodage/décodage SymPy <-> JSON.
Exemple. Pour les exercices de maths, on aimerait importer par défaut toutes les commandes SymPy (sans préfixe) dans le namespace.
Exemple. Pour les exercices qui utilisent SymPy, on aimerait disposer d'un filtre {{ ...|latex }} qui convertit un objet SymPy en châine Latex au moment de la mise en forme.
En pratique, l'utilisateur devrait définir tout ça (le namespace, l'encoder python, l'environnement Jinja) dans des fichiers
.py
à part, en utilisant des noms spécifiques et les inclure dans son exercice avec un alias spécifique.De cette façon, on pourrait avoir un template avec un before/evaluator customisé pour les maths, un template avec un before/evaluator customisé pour la physique, etc.
Voilà des nouvelles versions de before et evaluator qui implémentent ça. /builder/before_v1.py /grader/evaluator_v1.py
Voilà des exemples de customisation :
Un namespace pour les maths qui importe toutes les commandes SymPy sans préfixe. /model/namespace/namespace_math.py
Un encoder/decoder JSON qui gère les objets SymPy /model/json_coder/json_coder_sympy.py
Un environnement Jinja qui inclut un filtre SymPy -> LaTeX /model/jinja_env/jinja_env_sympy2latex.py