Skip to content

[bugfix/descriptor] Änderung im Verhalten von leeren Strings#157

Open
KoenigMjr wants to merge 1 commit into
BOSWatch:developfrom
KoenigMjr:bugfix/descriptor
Open

[bugfix/descriptor] Änderung im Verhalten von leeren Strings#157
KoenigMjr wants to merge 1 commit into
BOSWatch:developfrom
KoenigMjr:bugfix/descriptor

Conversation

@KoenigMjr

Copy link
Copy Markdown
Contributor

Beschreibung

Dieser PR behebt einen Fehler im descriptor-Modul, bei dem explizit definierte, leere Ersetzungstexte (add: "") ignoriert wurden.

Das Problem

Wenn man in einer CSV- oder YAML-Konfiguration ein Wildcard- oder Catch-All-Regex-Muster verwendet (zum Beispiel .*,,true, um ein Feld zu leeren oder zurückzusetzen, falls keine andere Regel greift), fiel das Modul fälschlicherweise auf den ursprünglichen scan_value zurück. Dies geschah, weil die "Truthy"-Prüfung if description: einen leeren String ("") genauso behandelte wie None (kein Treffer gefunden).

Die Lösung

Die bedingte Prüfung in doWork() wurde von if description: auf if description is not None: umgestellt. Dadurch wird die Logik für „kein Treffer gefunden“ sauber von „Treffer gefunden, aber der Zielwert ist leer“ getrennt. Das ermöglicht es nun, Felder absichtlich zu leeren oder mit einem leeren Text zu überschreiben.

Technische Änderungen

  • module/descriptor.py: if description: in der Hauptschleife von doWork zu if description is not None: geändert.

Verifizierung / Testergebnisse

  • Es wurde überprüft, dass CSV-Einträge mit leeren Feldern (.*,,true) das Zielfeld nun erfolgreich mit einem leeren String überschreiben.
  • Es wurde überprüft, dass bestehende, gültige Textbeschreibungen (add-value) weiterhin korrekt zugewiesen werden, ohne die Abwärtskompatibilität zu beeinträchtigen.
  • Es wurde sichergestellt, dass keine Exceptions geworfen werden, wenn _find_description den Wert None zurückgibt.

The descriptor module previously used a truthy check (`if description:`) to determine whether a matching description was found. In Python, an empty string (`""`) evaluates to False, causing the module to incorrectly fall back to the default `scan_value` when an empty replacement string was explicitly defined (e.g., in a fallback regex catch-all `.*,,true`).

Switched the conditional check to `if description is not None:` to properly differentiate between a missing match (`None`) and an intentional empty replacement string (`""`). This ensures catch-all fallback entries in CSVs can clear fields as intended.
@KoenigMjr

Copy link
Copy Markdown
Contributor Author

checks not successful aufgrund #156

@Schrolli91 Schrolli91 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants