Skip to content

Améliorer les données des marchés publics proposées par le Ministère des finances au format DECP sur data.gouv.fr.

License

Notifications You must be signed in to change notification settings

ColinMaudry/decp-processing

Repository files navigation

DECP processing

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 :

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].

Données

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.

Pré-requis

  • 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 module psycopg2)
    • créer la base de données cible

Bases techniques

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

Installation

En utilisant un environnement virtuel (recommandé)

Je vous recommande d'utiliser un environnement virtuel Python pour isoler l'installation des dépendances :

python -m venv .venv
source .venv/bin/activate

Installez 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 .env

Installation sur le serveur pour les déploiements (Linux)

Ces instructions supposent que le serveur prefect est installé, configuré et démarré.

Il suppose également que le work pool "local" a été créé.

  1. Suivre les instructions d'installation ci-dessus
  2. Démarrer le serveur prefect
  3. Adapter les chemins dans systemd/prefect-worker.service
  4. Copier systemd/prefect-worker.service dans le répertoire /etc/systemd/system
  5. Activer et démarrer le service
systemctl enable prefect-worker.service
systemctl start prefect-worker.service

Un 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) :

  1. Configurer .env pour que PREFECT_API_URL pointe vers le serveur où on souhaite déployer
  2. Éxécuter python src/deploy.py

Lancer le traitement des données (pour le développement en local)

Le pré-traitement des données SIRENE doit être fait une fois pour que le traitement principal soit fonctionnel.

pytest tests/test_sirene_preprocess.py

Lancement du traitement principal (data_tables + decp.info) via un serveur prefect à usage unique

python -m src.run_flow decp_processing

Lancer le traitement des données (sur le serveur Prefect configuré dans .env)

Le 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.

  1. Suivre les instructions de la section "Installation sur le serveur pour les déploiements"
  2. Vérifier que le .env est bien configuré, ce sont ces variables qui seront utilisées par les run du serveur.
  3. Déployer sur le serveur :
python src/deploy.py
  1. Le run se lancera tous les jours selon la configuration cron. Si tu souhaites exécuter le run maintenant :
prefect deployment run decp-processing

Test

Pour lancer les tests unitaires :

Du pre-process des données SIRENE

Ce traitement doit être fait une fois pour que le test du traitement principal soit fonctionnel.

pytest tests/test_sirene_preprocess.py

Du traitement principal (data tables + decp.info) (les autres tests de /tests sont moins maintenus)

pytest tests/test_main.py

Contributeurs ❤️

About

Améliorer les données des marchés publics proposées par le Ministère des finances au format DECP sur data.gouv.fr.

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 6

Languages