Skip to content

CI grün: fehlender json-Import, undefinierte Variable, flake8-Fehlalarme - #2

Merged
nullforge86 merged 1 commit into
mainfrom
claude/ci-fixes-json-moddir
Aug 12, 2026
Merged

nullforge86 merged 1 commit into
mainfrom
claude/ci-fixes-json-moddir

Conversation

@nullforge86

Copy link
Copy Markdown
Owner

Der flake8-Schritt der GitHub-Action bricht seit Anfang Juli bei jedem Lauf auf main mit 7 F821-Fehlern ab. Dadurch läuft pytest nie an. Zwei der Meldungen sind echte Laufzeitfehler, eine ist ein Fehlalarm.

Echte Bugs

editor/controller/snippet_controller.py

json.load und json.dump werden benutzt, ohne dass json importiert ist.

Auswirkung: „💾 Markierten Code als Snippet speichern" schlägt mit Speicherfehler fehl, und gespeicherte Snippets werden beim Start nie geladen — der Fehler wird von except Exception verschluckt und landet nur als print im Log.

→ import json ergänzt.

ui/manager.py

_filter_makros prüft if inhalt_modus: — diese Variable existiert nirgends im Projekt.

Auswirkung: NameError, sobald im Makro-Browser ein Suchbegriff eingegeben wird. Die Trefferanzeige soll dort immer erscheinen, deshalb die Bedingung ersatzlos entfernt.

Fehlalarm

InitGui.py

_MODDIR wird über globals()['_MODDIR'] = … gesetzt, weil FreeCAD die Datei per exec(code, globals, locals) ausführt — eine normale Zuweisung landete in exec-locals, wo Klassen-Methoden sie nicht sehen. Statische Prüfer erkennen das nicht.

→ Die vier Verwendungen bekommen # noqa: F821, dazu ein Kommentar am Zuweisungsblock, damit später niemand das „aufräumt".

Damit pytest durchläuft

tests/conftest.py (neu)

test_editor_live.py importiert PySide6 bzw. PySide2 schon beim Laden der Datei. Ohne Qt — wie auf dem Actions-Runner — bricht pytest bereits beim Einsammeln der Tests ab. Fehlt Qt, wird die Datei jetzt übersprungen; die Qt-freien Tests laufen unberührt weiter.

Nebenwirkung: Sollte Qt später auf dem Runner installiert werden, braucht test_editor_live.py zusätzlich eine Anzeige (QT_QPA_PLATFORM=offscreen). Das ist hier bewusst nicht vorweggenommen.

Geprüft

Beide CI-Schritte lokal exakt so ausgeführt wie in .github/workflows/python-app.yml:

flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics   → 0, exit 0
pytest -q                                                            → 53 passed

Ohne Bezug zu #25 — die Änderungen sind unabhängig davon mergebar.


Generated by Claude Code

Der flake8-Schritt der GitHub-Action bricht seit Anfang Juli bei jedem
Lauf mit 7 F821-Fehlern ab, dadurch läuft pytest nie an. Zwei der
Meldungen sind echte Laufzeitfehler:

editor/controller/snippet_controller.py
  json.load/json.dump werden benutzt, ohne dass json importiert ist.
  Folge: „Markierten Code als Snippet speichern" scheitert mit
  Speicherfehler, gespeicherte Snippets werden nie geladen.
  → import json ergänzt.

ui/manager.py
  _filter_makros prüft `if inhalt_modus:` — die Variable existiert
  nirgends im Projekt. Folge: NameError, sobald im Makro-Browser ein
  Suchbegriff eingegeben wird. Die Statuszeile soll dort immer
  erscheinen, deshalb die Bedingung entfernt.

InitGui.py
  Fehlalarm: _MODDIR wird über globals() gesetzt, weil FreeCAD die
  Datei per exec(code, globals, locals) ausführt und eine normale
  Zuweisung in exec-locals landen würde, wo Klassen-Methoden sie nicht
  sehen. Statische Prüfer erkennen das nicht — die vier Verwendungen
  bekommen „# noqa: F821" plus erklärenden Kommentar.

tests/conftest.py (neu)
  test_editor_live.py importiert PySide6/PySide2 beim Laden. Ohne Qt —
  wie auf dem Actions-Runner — bricht pytest schon beim Einsammeln ab.
  Fehlt Qt, wird die Datei jetzt übersprungen.

Beide CI-Schritte lokal geprüft: flake8 endet mit 0, pytest meldet
53 bestandene Tests.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SaJk9iHXDogxEwuRLiJ3ao
@nullforge86
nullforge86 merged commit b19e450 into main Aug 12, 2026
1 check passed
nullforge86 pushed a commit that referenced this pull request Aug 12, 2026
Das Feature war mit PR #1 gemergt und mit PR #3 wieder entfernt worden,
weil CI rot war. Die roten Läufe kamen jedoch von Altlasten auf main
(fehlender json-Import, undefinierte Variable, flake8-Fehlalarme) und
nicht von diesem Feature — auch der Lauf direkt nach dem Revert war noch
rot. Behoben wurden sie mit PR #2; seitdem ist main grün.

Dieser Commit stellt den ursprünglichen Stand unverändert wieder her:
Projektkarte des gewählten Ordners im Prompt, Nachladen einzelner
Dateien auf Anforderung der KI, drei Projekt-Werkzeuge und die Bedienung
im KI-Panel unter „Projekt-Kontext".

Beide CI-Schritte lokal mit Feature und Fixes zusammen geprüft:
flake8 endet mit 0, pytest meldet 84 bestandene Tests.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SaJk9iHXDogxEwuRLiJ3ao
@nullforge86
nullforge86 deleted the claude/ci-fixes-json-moddir branch August 12, 2026 17:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants