Giter Club home page Giter Club logo

parcoursup.py's Introduction

🇫🇷 Un clone en Python 3 de Parcoursup, écrit à but didactique

Lien vers la documentation Sphinx du projet

Écrit par deux doctorants de l'équipe SCEE de CentraleSupélec, campus de Rennes, Lilian Besson (@Naereen) et Bastien Trotobas (@BastienTr), et d'autres collaborateur-trice-s.

Open Source ? Oui ! Implementation Version de Python Maintenance Ask Me Anything ! Analytics Documentation Status Build Status Stars of https://github.com/Naereen/ParcourSup.py/ Releases of https://github.com/Naereen/ParcourSup.py/

Présentation

Ce dépôt contient un clone (presque complet) des algorithmes régissant la plateforme Parcoursup, qui gère depuis 2018 les affectations des élèves de classe de Terminale (🇫🇷 dans les lycées en France) dans leurs formations dans l'enseignement supérieur.

Les algorithmes et l'implémentation officielle (en Java) ont été distribués en accès libre, et sous licence libre (GPL), en mai 2018. En 2018, ils étaient hébergés sur ce site (framagit.org/parcoursup/algorithmes-de-parcoursup).

  • Nous proposons ici une implémentation complète des différents algorithmes de Parcoursup, écrite en Python 3, dans un style très clair, avec des commentaires, et une documentation. Documentation Status
  • Nous avons pour objectif de comprendre et d'expliquer ces algorithmes, en utilisant au maximum des notions et des modules Python qui soient abordables et compréhensibles par des élèves de classes préparatoires scientifiques (typiquement des MPSI).
  • Note : Vous pouvez contribuer si vous le souhaiter ! Une erreur à signaler ?, ou une contribution possible ? 👏 Merci d'avance !

Pour le développement en cours, cf. ce fichier TODO.md !

Commits of https://github.com/Naereen/ParcourSup.py/ / Date of last commit of https://github.com/Naereen/ParcourSup.py/ Issues of https://github.com/Naereen/ParcourSup.py/ : Open issues of https://github.com/Naereen/ParcourSup.py/ / Closed issues of https://github.com/Naereen/ParcourSup.py/

Explications

  • Pour l'instant, nous avons implémenté dans le dossier parcoursup/ un clone complet du code Java initial, écrit en Python 3.

  • Et dans le dossier notebooks/ nous proposons des implémentations simplifiées des principaux algorithmes, écrites sans dépendances et dans un style très didactique, avec des visualisations interactives afin de permettre à tout le monde d'expérimenter un peu et de visualiser le comportement des algorithmes. L'accent est mis sur la compréhension rapide de l'influence des différents paramètres numériques.

  • TODO expliquer l'algorithme dans les grandes lignes, avec notre propre vocabulaire, ici.

Organisation de ce dépôt

Démonstration dans un notebook Jupyter

Binder

Google Colab


Documentation officielle et ressources

  • La page officielle de présentation de Parcoursup est ici (en 2018).

Communications journalistiques, entre le 23 mai 2018 et le 15 juillet 2018 :

  • Les indicateurs quotidiennement publiés par le ministère sont sur cette page là (en juin 2018).

  • Cette carte qui montre jour après jour les résultats donnés par Parcoursup : statistiques.parcoursup.fr.

    Nous voulons proposer notre propre carte de visualisation, c'est en cours

Des détails sur les algorithmes :

  • Ce document texte et cet autre document PDF donnent plein d'explications.

  • Ce texte du Journal Officiel montre l'autorisation donnée par la CNIL pour la création de la base de données pour Parcoursup, et détaille un peu toutes les informations stockées pour le service. Il est important de garder en tête que ces données ne sont pas utilisées par les algorithmes de Parcoursup, qui n'utilisent qu'un identifiant unique et anonyme pour identifier chaque candidat-e.

Autres ressources, moins techniques mais plus pédagogiques :


Exemples

Installation

Ces lignes de Bash (à exécuter sur une machine type GNU/Linux ou un Mac avec les outils standards) clone ce dépôt, et installent un virtualenv Python et installent les dépendances dans cet environnement virtuel :

cd /tmp/
git clone https://GitHub.com/Naereen/ParcourSup.py
cd Parcoursup.py/
make install

Note : Il n'est pas nécessaire d'utiliser un virtualenv, mais c'est recommandé. Vous pouvez simplement installer les modules requis avec sudo pip install -r requirements.txt.

Note : notre code n'est pas spécifiquement écrit pour une machine utilisant GNU/Linux, et il devrait fonctionner sur n'importe quelle plateforme qui supporte Python 3.6 (Microsoft Windows et Mac OS X notamment). Il est testé sous GNU/Linux (XUbuntu) et sous Microsoft Windows 7. N'hésitez pas à signaler un problème, si besoin. 👏 Merci d'avance !

Tests Build Status

Les tests qui reproduisent (presque) parfaitement les données d'exemples peuvent être exécutés avec les deux commandes suivantes :

  • Ordres d'appel :
$ . env/bin/activate ; python3 ./parcoursup/ordreappel/__init__.py
...
  • Proposition de vœux :
$ . env/bin/activate ; python3 ./parcoursup/propositions/__init__.py
...
  • Ces deux tests prennent environ 30 secondes chacun.

Note : Il n'est pas nécessaire d'utiliser un virtualenv, mais c'est recommandé. Vous pouvez simplement faire les tests avec python3 ./parcoursup/ordreappel/__init__.py et python3 ./parcoursup/propositions/__init__.py.

  • Des tests supplémentaires ont été récemment ajoutés (voir #3).

Construire la documentation ? Documentation Status

  • Demande d'avoir le module sphinx installé. (sudo pip3 install sphinx si besoin).
  • Puis, dans le dossier principal, il suffit de faire :
$ make docs
  • Sous Windows ou si GNU Make n'est pas disponible, vous pouvez construire la documentation manuellement avec les deux commandes suivantes :
$ sphinx-apidoc -f -o ./docs -e -M ./parcoursup/
$ sphinx-build -M html ./docs ./_build
$ ./docs/.fixes_html_in_doc.sh

À propos

Language et versions ?

Python v3.6+. Avec les modules suivants :

📜 Licence ? GitHub license

Code libre, sous licence MIT (file LICENSE). © Lilian Besson et Bastien Trotobas et collaborateur-trice-s, 2018.

Open Source ? Oui ! Implementation Version de Python Maintenance Ask Me Anything ! Analytics Documentation Status Build Status Stars of https://github.com/Naereen/ParcourSup.py/ Releases of https://github.com/Naereen/ParcourSup.py/

ForTheBadge uses-badges ForTheBadge uses-git forthebadge made-with-python ForTheBadge built-with-science

parcoursup.py's People

Contributors

bastientr avatar naereen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

parcoursup.py's Issues

Écriture inclusive à respecter

  • Corriger les endroits qui ne le font pas.
  • Corriger les endroits où je fais "candidats-es" et utiliser plutôt "candidat-e-s".
  • D'autres suggestions ?

Corriger quelques points de syntaxe

Ce fichier montre que certains points peuvent facilement être améliorés ou corrigés dans l'implémentation de parcoursup/.

Rien à changer

  • Je serai d'avis de conserver les tests if len(sequence) > 0: plutôt que if sequence (plus lisibles pour des gens qui ne connaissent pas bien Python)

À corriger

  • C: 53, 0: Exactly one space required before keyword argument assignment
  • C: 55, 8: Missing function docstring (missing-docstring)
  • W: 82,12: Unused variable 'i' (unused-variable)
  • C: 98, 0: Trailing newlines (trailing-newlines)
  • W: 21,23: Unused argument 'desc' (unused-argument)
  • W: 62, 4: Dangerous default value [] as argument (dangerous-default-value) (utiliser None et faire un cas sur le None)
  • E: 48, 0: function already defined line 35 (function-redefined)
  • W: 32, 4: Unused GroupeAffectationUID imported from GroupeAffectationUID (unused-import) (on peut juste enlever l'importation en question)

Hésite pas à demander si besoin. Et ce n'est absolument pas urgent 😄 !

Ouvrir le dépôt Github dès que possible !

  • Relire la doc,
  • Et simplifier un peu le code de l'implém complète ?,
  • Corriger les points facilement corrigeables (cf autres tickets),
  • Ajouter un notebook "simplifié", cf #6
  • Corriger doc du dossier notebooks et explications et ajouts gif
  • Ouvrir le dépôt Github dès que possible !

Utiliser travis CI pour certifier que les tests passent bien à chaque commit ?

Je n'aime pas trop le concept d'intégration continue (aspect écologique etc), mais c'est vrai que c'est pratique. Travis CI est gratuit pour de petit projet libre et ouvert, et supporte évidemment Python.

  • On pourrait s'en servir pour faire les tests de donnees/ (coller aux fichiers de données de l'implém de référence), ainsi que les tests BDD de tests/,
  • Afin de vérifier que tout marche à chaque commit ? (il faudrait finir #3 du coup)
  • On peut aussi s'en servir pour vérifier que la doc compile bien ? Ou alors on utilise ReadTheDocs pour héberger la doc (pas besoin je pense, elle est bien sur mon site, non ?

Faire une carte comme Statistiques.ParcourSup.fr

  • Décortiquer un peu comment le site marche,
  • En télécharger / assembler une version locale qui marche (toutes les dépendances sont libres, je pense que j'ai vraiment le droit de faire ça),
  • Comprendre comment générer les données json que l'appli demande et que le serveur demande,
  • Simuler quelques établissements à petite échelle (indépendamment des algos de parcoursup), et vérifier que "ma version" de la carte permet d'afficher ça correctement.

Utiliser une (fausse) base de données locales pour simuler la lecture & écriture comme dans parcoursup

  • 👍 Et quitte à faire quelque chose pour apprendre, utiliser GraphQL peut être une bonne idée ? Voir cette liste de ressources Python pour GraphQL.

  • 👎 Oui mais non, si on veut que tout le code soit lisible par des élèves de classes préparatoires, il vaudrait mieux utiliser une base SQL (SQLite ne suffira pas, donc SQLAchemy ?) et des requêtes SQL, vue que ces notions sont au programme comme c'est précisé ici.
    programme info pour tous sql

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.