version 2.4.3 (notes de version)
Projet de traitement et de publication de meilleures données sur les marchés publics attribués en France. Vous pouvez consulter, filtrer et télécharger ces données sur le site decp.info. Enfin la section À propos décrit les objectifs du projet et regroupe toutes les informations clés.
Les données sont rassemblées et traitées tous les matins, du lundi au vendredi, et publiées sur data.gouv.fr aux formats parquet, CSV et SQLite.
Ce projet prend sa source dans la complexité de la publication des données par le Ministère des Finances :
- code source de l'agrégation ouvert mais très peu lisible
- documentation incomplète et éparpillée
- schéma de données DECP 2 complexe à utiliser
Vous trouverez des informations sur le contexte, le cadre réglementaire et les données de la commande publique sur le wiki.
Ce projet se veut collaboratif et à l'écoute des besoins des usagers potentiels : entreprises, acteurs publics, journalistes, chercheurs et chercheuses, citoyens et citoyennes.
Pour me contacter vous pouvez ouvrir un "issue" sur Github ou me contacter par email [email protected].
Les données consolidées proviennent intégralement de sources ouvertes. Les détails des sources de données utilisées peuvent être consultés sur decp.info.
- Python 3.9 ou plus récent
- cargo (installation rapide)
- si sauvegarde dans PostgreSQL :
- sur Debian/Ubuntu :
sudo apt install libpq-dev(pour builder le modulepsycopg2) - créer la base de données cible
- sur Debian/Ubuntu :
Cet outil repose grandement sur trois logiciels libres :
- prefect pour l'orchestration, le monitoring, la gestion du cache
- polars pour la manipulation de données tabulaires en flux
- ijson pour la manipulation de données JSON en flux
Je vous recommande d'utiliser un environnement virtuel Python pour isoler l'installation des dépendances :
python -m venv .venv
source .venv/bin/activateInstallez les dépendances :
pip install .Pour les contributeurices, installez les dépendances de développement et l'auto-formatage au moment des commits :
pip install -e .[dev]
pre-commit install
# à chaque commit black et cie se lancent et reformattent les fichiers si besoin, ça peut demander de "git add"
# de nouveau pour prendre en compte le reformatage dans le commit
# installation des dépendances sous zsh
pip install -e .'[dev]'Faites une copie du fichier template.env, renommez-le en .env et adaptez les valeurs :
cp template.env .env
nano .envCes instructions supposent que le serveur prefect est installé, configuré et démarré.
Il suppose également que le work pool "local" a été créé.
- Suivre les instructions d'installation ci-dessus
- Démarrer le serveur prefect
- Adapter les chemins dans
systemd/prefect-worker.service - Copier
systemd/prefect-worker.servicedans le répertoire/etc/systemd/system - Activer et démarrer le service
systemctl enable prefect-worker.service
systemctl start prefect-worker.serviceUn nouveau worker doit apparaître dans l'interface de gestion de prefect.
Déploiement des flows (exécution programmée de main ou ponctuelle de dev) :
- Configurer .env pour que
PREFECT_API_URLpointe vers le serveur où on souhaite déployer - Éxécuter
python src/deploy.py
Le pré-traitement des données SIRENE doit être fait une fois pour que le traitement principal soit fonctionnel.
pytest tests/test_sirene_preprocess.pyLancement du traitement principal (data_tables + decp.info) via un serveur prefect à usage unique
python -m src.run_flow decp_processingLe déploiement sur le serveur déploie à la fois un run quotidien de traitement des données et un run activable à la demande.
Attention, la version de prefect du client utilisé pour le déploiement et celle utilisée pour le serveur doivent être identiques. Cela est normalement garanti par la version configurée dans pyproject.toml.
- Suivre les instructions de la section "Installation sur le serveur pour les déploiements"
- Vérifier que le
.envest bien configuré, ce sont ces variables qui seront utilisées par les run du serveur. - Déployer sur le serveur :
python src/deploy.py- Le run se lancera tous les jours selon la configuration cron. Si tu souhaites exécuter le run maintenant :
prefect deployment run decp-processingPour lancer les tests unitaires :
Ce traitement doit être fait une fois pour que le test du traitement principal soit fonctionnel.
pytest tests/test_sirene_preprocess.pypytest tests/test_main.py- Colin Maudry (développeur principal)
- FranckMaseo
- Thomas Louf
- vico4445