Ursache von Verfahrensgebiet #50 ("QML-Dateien greifen nicht") behoben: get_plugin_root()
löste über .resolve() Symlinks/Junctions zum echten Zielverzeichnis auf. Im per link_qgis_profile.py verknüpften Dev-Setup landete die Funktion dadurch beim Workspace-Root
statt beim QGIS-Plugin-Ordner – alle Aufrufer (Stilpruefer, apply_style in sn_basis/sn_plan41,
Datenschreiber, vln_api_logic, tab_a_logic) fanden ihre Assets nicht. Issue: Verfahrensgebiet #50
Wie geprüft
python scripts/run_tests.py sn_basis --baseline: 90/91 bestanden, kein NEU ROT (der eine
Fehlschlag ist der bekannte, unabhängige openpyxl-Umgebungsfehler, Basis #21).
Neuer Test test_get_plugin_root_folgt_keiner_verzeichnisverknuepfung legt eine echte
Verzeichnisverknüpfung an (Symlink, unter Windows per Junction wie link_qgis_profile.py)
und zeigt den Fehler vor dem Fix rot, danach grün.
QGIS-Test: empfohlen, aber noch nicht durchgeführt – einmal mit link_qgis_profile.py
verknüpft gegenprüfen, dass QML-Stile jetzt wirklich angewendet werden (die Debug-print()s
in apply_style()/LayerLoader.apply_style() zeigen den aufgelösten Pfad).
Änderungen an Verträgen
keine – get_plugin_root()s Signatur und Rückgabetyp bleiben gleich, nur die interne
Pfadauflösung ändert sich. Für ZIP-/Repository-Installationen (kein Symlink im Plugin-Ordner)
ist das Verhalten identisch zu vorher.
Übergabenotiz
Aufgabe: Verfahrensgebiet #50 – Ursache für nicht angewendete QML-Stile beheben. Stand: fertig, QGIS-Gegenprobe mit link_qgis_profile.py-Setup steht noch aus. Geändert:
tests/test_sys_wrapper.py: neue Testdatei, ein Test mit echter Verzeichnisverknüpfung.
changelog.txt: Bugfix-Eintrag ergänzt. Nachweis: siehe „Wie geprüft“. Entscheidungen/Annahmen: Die Debug-print()-Aufrufe in ly_style_wrapper.apply_style()
und LayerLoader.apply_style() (seit März 2026 unbereinigt) habe ich bewusst nicht
angefasst – das ist ein eigenes Aufräumthema, nicht Teil dieses Fixes. Offen / nächste Schritte:
Nach Merge: einmal in einer echten link_qgis_profile.py-Verknüpfung in QGIS gegenprüfen,
dass Stile jetzt greifen (Verfahrensgebiet #50 kann dann geschlossen werden).
Debug-print()s in beiden apply_style()-Implementierungen aufräumen (separates Ticket). Wissensbasis: nichts Neues – der Fund ist bereits als Kommentar in Verfahrensgebiet #50
dokumentiert. Kontext für die nächste Sitzung:functions/sys_wrapper.py, functions/ly_style_wrapper.py, modules/LayerLoader.py.
Checkliste
Nur Änderungen zum Issue
Keine direkten Qt/QGIS-Importe, keine Debug-print
changelog.txt ergänzt
Wissensbasis nachgezogen (Kommentar in Verfahrensgebiet #50 vorhanden)
## Was
Ursache von Verfahrensgebiet #50 ("QML-Dateien greifen nicht") behoben: `get_plugin_root()`
löste über `.resolve()` Symlinks/Junctions zum echten Zielverzeichnis auf. Im per
`link_qgis_profile.py` verknüpften Dev-Setup landete die Funktion dadurch beim Workspace-Root
statt beim QGIS-Plugin-Ordner – alle Aufrufer (Stilpruefer, apply_style in sn_basis/sn_plan41,
Datenschreiber, vln_api_logic, tab_a_logic) fanden ihre Assets nicht. Issue: Verfahrensgebiet #50
## Wie geprüft
- `python scripts/run_tests.py sn_basis --baseline`: 90/91 bestanden, kein NEU ROT (der eine
Fehlschlag ist der bekannte, unabhängige `openpyxl`-Umgebungsfehler, Basis #21).
- Neuer Test `test_get_plugin_root_folgt_keiner_verzeichnisverknuepfung` legt eine echte
Verzeichnisverknüpfung an (Symlink, unter Windows per Junction wie `link_qgis_profile.py`)
und zeigt den Fehler vor dem Fix rot, danach grün.
- QGIS-Test: empfohlen, aber noch nicht durchgeführt – einmal mit `link_qgis_profile.py`
verknüpft gegenprüfen, dass QML-Stile jetzt wirklich angewendet werden (die Debug-`print()`s
in `apply_style()`/`LayerLoader.apply_style()` zeigen den aufgelösten Pfad).
## Änderungen an Verträgen
keine – `get_plugin_root()`s Signatur und Rückgabetyp bleiben gleich, nur die interne
Pfadauflösung ändert sich. Für ZIP-/Repository-Installationen (kein Symlink im Plugin-Ordner)
ist das Verhalten identisch zu vorher.
## Übergabenotiz
**Aufgabe:** Verfahrensgebiet #50 – Ursache für nicht angewendete QML-Stile beheben.
**Stand:** fertig, QGIS-Gegenprobe mit `link_qgis_profile.py`-Setup steht noch aus.
**Geändert:**
- `functions/sys_wrapper.py`: `get_plugin_root()` nutzt `.absolute()` statt `.resolve()`.
- `tests/test_sys_wrapper.py`: neue Testdatei, ein Test mit echter Verzeichnisverknüpfung.
- `changelog.txt`: Bugfix-Eintrag ergänzt.
**Nachweis:** siehe „Wie geprüft“.
**Entscheidungen/Annahmen:** Die Debug-`print()`-Aufrufe in `ly_style_wrapper.apply_style()`
und `LayerLoader.apply_style()` (seit März 2026 unbereinigt) habe ich bewusst **nicht**
angefasst – das ist ein eigenes Aufräumthema, nicht Teil dieses Fixes.
**Offen / nächste Schritte:**
1. Nach Merge: einmal in einer echten `link_qgis_profile.py`-Verknüpfung in QGIS gegenprüfen,
dass Stile jetzt greifen (Verfahrensgebiet #50 kann dann geschlossen werden).
2. Debug-`print()`s in beiden `apply_style()`-Implementierungen aufräumen (separates Ticket).
**Wissensbasis:** nichts Neues – der Fund ist bereits als Kommentar in Verfahrensgebiet #50
dokumentiert.
**Kontext für die nächste Sitzung:** `functions/sys_wrapper.py`, `functions/ly_style_wrapper.py`,
`modules/LayerLoader.py`.
## Checkliste
- [x] Nur Änderungen zum Issue
- [x] Keine direkten Qt/QGIS-Importe, keine Debug-`print`
- [x] `changelog.txt` ergänzt
- [x] Wissensbasis nachgezogen (Kommentar in Verfahrensgebiet #50 vorhanden)
Ursache für "QML-Dateien greifen nicht" (Verfahrensgebiet #50): get_plugin_root()
nutzte Path(__file__).resolve(), was Junctions zum echten Zielverzeichnis
auflöst. link_qgis_profile.py verknüpft die Klone im QGIS-Profil per Junction
unter ihrem Paketnamen (sn_verfahrensgebiet, sn_plan41, ...) - .resolve()
sprang dabei zurück zum Workspace-Root, wo die Klone unter ihrem Repo-Namen
(Plugin_SN_*) liegen. Alle Aufrufer von get_plugin_root() (Stilpruefer,
ly_style_wrapper.apply_style, LayerLoader.apply_style, Datenschreiber,
sn_plan41 vln_api_logic/tab_a_logic) suchten dadurch am falschen Ort.
.absolute() statt .resolve(): __file__ liefert beim Import über die Junction
bereits den korrekten, unaufgelösten Pfad - nichts, was aufgelöst werden
müsste. Für echte ZIP-/Repository-Installationen (kein Symlink im Plugin-
Ordner) ändert sich nichts, da dort nichts aufzulösen ist.
Test test_get_plugin_root_folgt_keiner_verzeichnisverknuepfung legt eine
echte Verzeichnisverknüpfung an (Symlink, unter Windows via Junction wie
link_qgis_profile.py) und zeigt den Fehler vor dem Fix rot, danach grün.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Daniel
merged commit 1705d5f988 into unstable2026-09-17 14:16:21 +00:00
Daniel
deleted branch bugfix/50-get-plugin-root-junction2026-09-17 14:16:21 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Was
Ursache von Verfahrensgebiet #50 ("QML-Dateien greifen nicht") behoben:
get_plugin_root()löste über
.resolve()Symlinks/Junctions zum echten Zielverzeichnis auf. Im perlink_qgis_profile.pyverknüpften Dev-Setup landete die Funktion dadurch beim Workspace-Rootstatt beim QGIS-Plugin-Ordner – alle Aufrufer (Stilpruefer, apply_style in sn_basis/sn_plan41,
Datenschreiber, vln_api_logic, tab_a_logic) fanden ihre Assets nicht. Issue: Verfahrensgebiet #50
Wie geprüft
python scripts/run_tests.py sn_basis --baseline: 90/91 bestanden, kein NEU ROT (der eineFehlschlag ist der bekannte, unabhängige
openpyxl-Umgebungsfehler, Basis #21).test_get_plugin_root_folgt_keiner_verzeichnisverknuepfunglegt eine echteVerzeichnisverknüpfung an (Symlink, unter Windows per Junction wie
link_qgis_profile.py)und zeigt den Fehler vor dem Fix rot, danach grün.
link_qgis_profile.pyverknüpft gegenprüfen, dass QML-Stile jetzt wirklich angewendet werden (die Debug-
print()sin
apply_style()/LayerLoader.apply_style()zeigen den aufgelösten Pfad).Änderungen an Verträgen
keine –
get_plugin_root()s Signatur und Rückgabetyp bleiben gleich, nur die internePfadauflösung ändert sich. Für ZIP-/Repository-Installationen (kein Symlink im Plugin-Ordner)
ist das Verhalten identisch zu vorher.
Übergabenotiz
Aufgabe: Verfahrensgebiet #50 – Ursache für nicht angewendete QML-Stile beheben.
Stand: fertig, QGIS-Gegenprobe mit
link_qgis_profile.py-Setup steht noch aus.Geändert:
functions/sys_wrapper.py:get_plugin_root()nutzt.absolute()statt.resolve().tests/test_sys_wrapper.py: neue Testdatei, ein Test mit echter Verzeichnisverknüpfung.changelog.txt: Bugfix-Eintrag ergänzt.Nachweis: siehe „Wie geprüft“.
Entscheidungen/Annahmen: Die Debug-
print()-Aufrufe inly_style_wrapper.apply_style()und
LayerLoader.apply_style()(seit März 2026 unbereinigt) habe ich bewusst nichtangefasst – das ist ein eigenes Aufräumthema, nicht Teil dieses Fixes.
Offen / nächste Schritte:
link_qgis_profile.py-Verknüpfung in QGIS gegenprüfen,dass Stile jetzt greifen (Verfahrensgebiet #50 kann dann geschlossen werden).
print()s in beidenapply_style()-Implementierungen aufräumen (separates Ticket).Wissensbasis: nichts Neues – der Fund ist bereits als Kommentar in Verfahrensgebiet #50
dokumentiert.
Kontext für die nächste Sitzung:
functions/sys_wrapper.py,functions/ly_style_wrapper.py,modules/LayerLoader.py.Checkliste
printchangelog.txtergänzt