Contribuer à Django-DSFR

Installation en local

L’installation a été testée sur Ubuntu 22.04 avec Python 3.10 et poetry installé.

make init

Tests

Pour faire tourner les tests :

make test

Gestion des dépendances avec Poetry

Le projet utilise Poetry pour gérer les dépendances de paquets Python et produire des builds déterministes, ainsi que pour créer les nouvelles versions du paquet et les publier sur Pypi.

Pour installer les dépendances du projet :

poetry install

Pour installer un nouveau paquet et l’ajouter aux dépendances :

poetry add <paquet>

Pour un paquet ne servant que pour le développement, par exemple black :

poetry add --group dev <paquet>

Pour activer l’environnement virtuel :

poetry shell

Conventions de style et vérifications automatique

Ce projet suit globalement les conventions de style de Django.

Il utilise ruff et black pour la mise en forme et bandit pour repérer les failles de sécurité les plus communes.

Concernant les langues :

Pour vérifier son code, on peut intégrer le linter adapté à son IDE et aussi faire ceci :

make checkstyle

Une vérification automatique est faite via des pre-commit hooks, qui ont normalement été installés via le make init.

Il est possible de les mettre à jour avec la commande :

pre-commit update

Mise à jour du système de design

Quand une nouvelle version du système de design de l’État est publiée, il est possible de le mettre à jour automatiquement via la commande :

make update_dsfr

La commande télécharge la dernière version depuis le dépôt Github, la met dans le répertoire dsfr/static/dsfr/dist/, retire des fichiers pour réduire la taille du paquet Python et met à jour les sommes de contrôle d’intégrité dans le fichier dsfr/checksums.

Une fois la mise à jour faite, il reste à :

Publication d’une nouvelle version

Lorsque qu’une release est publiée sur Github, une tâche Github Actions (publish-package.yml) est lancée pour automatiquement générer une nouvelle version du paquet et la publier sur Pypi.

Attention ! Il faut mettre à jour le numéro de version dans le fichier pyproject.toml avant de faire la release, sinon la tâche échouera.

La numérotation suit le principe de versionnage sémantique.

Mise à jour de la documentation

De la même manière, lorsqu’une PR est mergée dans la branche main, une tâche Github Actions (deploy-doc.yml) met à jour la documentation statique en faisant un export statique du site d’exemple.