Développement
Organisation du dépôt
| Chemin | Contenu |
|---|---|
geoduc_dt/main.py |
Intégration à QGIS : menu, barre d'outils, messages |
geoduc_dt/dialog.py |
Fenêtre de chargement |
geoduc_dt/loader.py |
Chargement du GML et application des styles |
geoduc_dt/styles/<THÈME>/ |
Symbologies (QML) par thème DT-DICT, un fichier par couche |
docs/ |
Sources de cette documentation |
properdocs.yml |
Configuration de la documentation |
scripts/package.sh |
Construction du ZIP de l'extension |
scripts/import_styles.py |
Import des styles QML StaR-DT dans geoduc_dt/styles/ |
scripts/release.py |
Outils de release (vérification du tag, notes, plugins.xml) |
tests/test_smoke.py |
Test de fumée QGIS 3 / QGIS 4 |
CHANGELOG.md |
Historique des versions |
Tester l'extension en local
Créer un lien symbolique vers le dossier des extensions du profil QGIS, puis activer l'extension dans le gestionnaire d'extensions (l'extension Plugin Reloader facilite les rechargements) :
ln -s "$PWD/geoduc_dt" ~/.local/share/QGIS/QGIS3/profiles/default/python/plugins/geoduc_dt
Styles
Au chargement, l'extension lit le code du thème dans la couche ReseauUtilite (ELEC, GAZ, AEP…)
et applique à chaque couche le fichier geoduc_dt/styles/<THÈME>/<NomDeLaCouche>.qml s'il existe.
Les styles proviennent de la symbologie DT d'OpenStarApd. Ils sont convertis par
scripts/import_styles.py pour correspondre aux couches d'un GML StaR-DT :
- un dossier par code de thème (
ELEC-ElectricitedevientELEC) ; - un fichier par couche GML (
DT_CableElectrique.qmldevientCableElectrique.qml,DT_Accessoire_Electricity.qmldevientAccessoire.qml) ; - les listes de codes sont lues dans les champs
*_hrefdu GML, qui contiennent une URI ("statut"devientregexp_substr("statut_href", '[^/]+$')) ; - les fonctions d'OpenStarApd (
ose_get_associated_theme,ose_join_strings) sont remplacées par des expressions QGIS standard.
Pour régénérer les styles après une mise à jour des QML sources :
./scripts/import_styles.py /chemin/vers/StarDT-QML
Les variantes *_RPD.qml (style « RPD » d'Enedis, thèmes ELEC*) sont conservées mais ne sont pas
appliquées automatiquement.
Tests et compatibilité QGIS 3 / QGIS 4
Le code doit rester compatible PyQt5 (QGIS 3) et PyQt6 (QGIS 4) :
- importer Qt uniquement via
qgis.PyQt; - écrire les énumérations sous leur forme complète (
Qt.AlignmentFlag.AlignLeftet nonQt.AlignLeft).
Le test de fumée se lance avec le Python de QGIS, éventuellement avec un GML StaR-DT :
QT_QPA_PLATFORM=offscreen python3 tests/test_smoke.py [fichier.gml]
Pour QGIS 4 installé en Flatpak :
flatpak run --command=sh --filesystem="$PWD" org.qgis.qgis -c \
'PYTHONPATH=/app/share/qgis/python QT_QPA_PLATFORM=offscreen python3 tests/test_smoke.py'
La CI GitLab lance ce test sur QGIS 3.34, 3.44 LTR et QGIS 4.
Construire le ZIP
./scripts/package.sh
Publier une version
Une release est déclenchée en poussant un tag vX.Y.Z :
- Mettre à jour
version=dansgeoduc_dt/metadata.txtet ajouter en tête dechangelog=une ligneX.Y.Z - [FR] …et une ligneX.Y.Z - [EN] …(QGIS ne traduit pas ce champ). - Ajouter la section
## [X.Y.Z] - AAAA-MM-JJdansCHANGELOG.md. -
Commiter, puis créer et pousser le tag :
git tag -a vX.Y.Z -m "géoduc dt X.Y.Z" git push origin vX.Y.Z
La CI GitLab :
- vérifie que le tag correspond à
metadata.txtet à une section du CHANGELOG (scripts/release.py check) ; - lance les tests sur QGIS 3 et QGIS 4, puis construit le ZIP ;
- dépose le ZIP dans le registre de paquets GitLab ;
- crée la release GitLab avec les notes du CHANGELOG et le lien vers le ZIP ;
- republie GitLab Pages avec le
plugins.xmldu dépôt d'extensions QGIS, qui pointe vers ce ZIP.
Le plugins.xml décrit toujours la dernière version taguée : les utilisateurs qui ont ajouté le
dépôt géoduc dans QGIS sont alors avertis de la mise à jour.
Documentation
python3 -m venv .venv
.venv/bin/pip install -r requirements/docs.txt
.venv/bin/properdocs serve # aperçu sur http://127.0.0.1:8000