Thanks to visit codestin.com
Credit goes to github.com

Skip to content

imanuch/decp-processing

 
 

Repository files navigation

DECP processing

version 2.0.5 (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 .[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 .'[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.

Avec Docker sous Windows, peu testé

Construire et lancer le container

script\docker_build_and_run.bat

Démarrer le serveur prefect une fois dans le container

script\start_server_in_docker.sh

Le serveur est accessible sur le navigateur à l'adresse http://127.0.0.1:4200/

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 src/flows.py

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

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 98.7%
  • Other 1.3%