Testkatalog-Klassifizierung in Docstrings festgehalten

43 als "vernachlässigbar" eingestufte Funktionen (dialog_wrapper.py,
message_wrapper.py, os_wrapper.py, qgisui_wrapper.py, qt_wrapper.py,
DataGrabber.py, LayerLoader.py, Pruefmanager.py, navigation.py,
print_tab.py) tragen jetzt den Vermerk "von Test abgesehen, weil
vernachlässigbar; HD 18.09.2026". Fehlalarme der Testkatalog-Heuristik
(Dateipruefer._ist_leer/_handle_leere_eingabe, linkpruefer.py komplett,
Pruefmanager._handle_datei_existiert) und der als Bug erfasste tote Code
(Pruefmanager._ask_use_or_replace_pufferlayer, #60) bleiben unangetastet.

41 Funktionen im zur Grundüberarbeitung anstehenden Print-Bereich
(print_logic.py, print_layout.py, print_layout_baufreigabe.py) tragen den
Vermerk "Test ausgesetzt, zunächst Refactor".

Reine Dokumentationsänderung, kein Verhalten geändert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-18 11:51:57 +02:00
co-authored by Claude Sonnet 5
parent 0dd64cbe2e
commit 36e4780b9f
14 changed files with 127 additions and 11 deletions
+20 -1
View File
@@ -43,6 +43,8 @@ def show_info_dialog(title: str, message: str, parent: Any = None) -> None:
"""
Zeigt einen modalen Info-Dialog mit OK-Button.
Blockiert bis der Nutzer bestätigt.
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
"""
try:
if QT_VERSION == 0: # Mock-Modus
@@ -59,7 +61,10 @@ def ask_text(
default_text: str = "",
parent: Any = None,
) -> tuple[str, bool]:
"""Zeigt einen modalen Texteingabe-Dialog und gibt Text + OK-Status zurück."""
"""Zeigt einen modalen Texteingabe-Dialog und gibt Text + OK-Status zurück.
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
"""
try:
if QT_VERSION == 0: # Mock-Modus
print(f"Mock-Modus: ask_text('{title}') -> '{default_text}'")
@@ -154,6 +159,8 @@ def ask_ergaenzen_entfernen_ersetzen_abbrechen(
-------
Literal["ergaenzen", "entfernen", "ersetzen", "abbrechen"]
Genaue Entscheidung des Nutzers.
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
"""
if QT_VERSION == 0: # Mock-Modus
print(f"Mock-Modus: ask_ergaenzen_entfernen_ersetzen_abbrechen('{title}') → abbrechen")
@@ -207,6 +214,8 @@ def ask_detailpruefung_oder_vg_laden(
-------
Literal["detailpruefung", "als_vg_laden", "abbrechen"]
Genaue Entscheidung des Nutzers.
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
"""
if QT_VERSION == 0: # Mock-Modus
print(f"Mock-Modus: ask_detailpruefung_oder_vg_laden('{title}') → abbrechen")
@@ -256,6 +265,8 @@ def ask_detailpruefung_oder_abbrechen(
-------
Literal["detailpruefung", "abbrechen"]
Genaue Entscheidung des Nutzers.
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
"""
if QT_VERSION == 0: # Mock-Modus
print(f"Mock-Modus: ask_detailpruefung_oder_abbrechen('{title}') → abbrechen")
@@ -326,6 +337,7 @@ class ProgressDialog:
pass
def set_total(self, total: int) -> None:
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
self.total = max(total, 1)
if QT_VERSION == 0:
return
@@ -334,6 +346,7 @@ class ProgressDialog:
self._dlg.setMaximum(self.total)
def set_value(self, value: int) -> None:
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
if QT_VERSION == 0:
self.value = value
return
@@ -346,6 +359,7 @@ class ProgressDialog:
QCoreApplication.processEvents()
def set_label(self, text: str) -> None:
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
if QT_VERSION == 0:
self.label = text
return
@@ -355,6 +369,7 @@ class ProgressDialog:
QCoreApplication.processEvents()
def is_canceled(self) -> bool:
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
if QT_VERSION == 0:
return self._canceled
@@ -364,6 +379,7 @@ class ProgressDialog:
return self._canceled
def close(self) -> None:
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
if QT_VERSION == 0:
return
@@ -375,6 +391,8 @@ class ProgressDialog:
Wird aufgerufen, nachdem ein modaler Subdialog (z. B. Auswahlbox)
geschlossen wurde und der Fortschrittsdialog wieder sichtbar sein soll.
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
"""
if QT_VERSION == 0:
return
@@ -388,5 +406,6 @@ class ProgressDialog:
def create_progress_dialog(total: int, title: str = "Fortschritt", label: str = "Verarbeite...") -> ProgressDialog:
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
return ProgressDialog(total, title, label)
+3
View File
@@ -65,6 +65,7 @@ def push_message(
def info(title: str, text: str, duration: int = 5):
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
level = Qgis.MessageLevel.Info
return push_message(level, title, text, duration)
@@ -75,10 +76,12 @@ def warning(title: str, text: str, duration: int = 5):
def error(title: str, text: str, duration: int = 5):
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
level = Qgis.MessageLevel.Critical
return push_message(level, title, text, duration)
def success(title: str, text: str, duration: int = 5):
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
level = Qgis.MessageLevel.Success
return push_message(level, title, text, duration)
+16 -3
View File
@@ -43,6 +43,8 @@ _PathLike = Union[str, Path]
def normalize_path(path: _PathLike) -> Path:
"""
Normalisiert einen Pfad OS-unabhängig.
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
"""
try:
return Path(path).expanduser().resolve()
@@ -53,12 +55,17 @@ def normalize_path(path: _PathLike) -> Path:
def get_home_dir() -> Path:
"""
Liefert das Home-Verzeichnis des aktuellen Users.
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
"""
return Path.home()
def is_absolute_path(path: _PathLike) -> bool:
"""Prüft, ob ein Pfad absolut ist."""
"""Prüft, ob ein Pfad absolut ist.
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
"""
try:
return Path(path).is_absolute()
except Exception:
@@ -66,7 +73,10 @@ def is_absolute_path(path: _PathLike) -> bool:
def basename(path: _PathLike) -> str:
"""Gibt den finalen Namen des Pfades zurück (Dateiname oder Ordner)."""
"""Gibt den finalen Namen des Pfades zurück (Dateiname oder Ordner).
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
"""
try:
return Path(path).name
except Exception:
@@ -94,7 +104,10 @@ def is_case_sensitive_fs() -> bool:
def path_suffix(path: _PathLike) -> str:
"""Gibt die Dateiendung eines Pfades zurück (inklusive Punkt)."""
"""Gibt die Dateiendung eines Pfades zurück (inklusive Punkt).
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
"""
try:
return Path(path).suffix
except Exception:
+5
View File
@@ -129,6 +129,7 @@ except Exception:
# ---------------------------------------------------------
def get_main_window():
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
try:
return iface.mainWindow()
except Exception:
@@ -147,6 +148,7 @@ def open_layout_designer(layout: Any) -> Any:
# ---------------------------------------------------------
def add_dock_widget(area, dock: Any) -> None:
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
try:
iface.addDockWidget(area, dock)
except Exception:
@@ -154,6 +156,7 @@ def add_dock_widget(area, dock: Any) -> None:
def remove_dock_widget(dock: Any) -> None:
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
try:
iface.removeDockWidget(dock)
except Exception:
@@ -199,6 +202,7 @@ def remove_menu(menu):
# ---------------------------------------------------------
def add_toolbar(toolbar: Any) -> None:
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
try:
iface.addToolBar(toolbar)
except Exception:
@@ -206,6 +210,7 @@ def add_toolbar(toolbar: Any) -> None:
def remove_toolbar(toolbar: Any) -> None:
"""von Test abgesehen, weil vernachlässigbar; HD 18.09.2026"""
try:
iface.removeToolBar(toolbar)
except Exception:
+8 -2
View File
@@ -58,11 +58,17 @@ QIcon: Type[Any] = object
def exec_dialog(dialog: Any) -> Any:
"""Führt Dialog modal aus (Qt6: exec(), Qt5: exec_(), Mock: YES)"""
"""Führt Dialog modal aus (Qt6: exec(), Qt5: exec_(), Mock: YES)
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
"""
raise NotImplementedError("Qt nicht initialisiert")
def debug_qt_status() -> None:
"""Debug: Zeigt Qt-Status für Troubleshooting."""
"""Debug: Zeigt Qt-Status für Troubleshooting.
von Test abgesehen, weil vernachlässigbar; HD 18.09.2026
"""
print(f"🔍 QT_VERSION: {QT_VERSION}")
print(f"🔍 QMessageBox Typ: {getattr(QMessageBox, '__name__', type(QMessageBox).__name__)}")
print(f"🔍 YES Wert: {YES} (Typ: {type(YES) if YES is not None else 'None'})")