Pipeline-Stufe 1 automatisiert: requirements, pre-commit-Hook, ruff
Nach Web-Recherche zum 2026er-Python-Standard umgesetzt, aber gefiltert: von
uv/Ruff/pyproject/CI passt hier nur, was zu einer Einzelmaschine mit
GUI-gebundenem MT5 und Live-Geld passt.
(1) requirements.txt (Laufzeit) + requirements-dev.txt (Werkzeuge/Messung),
Versionen gepinnt. Bis dahin gab es GAR KEINE Liste — nach einem
Maschinenausfall waere die Rekonstruktion Raten gewesen. Per AST ueber
core/, server.py, tools/ ermittelt statt geraten.
(2) tools/pre_commit.py faehrt vor jedem Commit check_nfalle + pytest (~5 s).
Einrichten: python tools/pre_commit.py --install. Notausgang
'git commit --no-verify' ist Absicht.
Bewusst OHNE das pre-commit-Framework: dessen Nutzen ist
Werkzeug-Versionierung ueber mehrere Maschinen. Hier gibt es eine, und es
wuerde eine ZWEITE ruff-Version in einer isolierten Umgebung installieren —
genau die Divergenz 'Pruefumgebung != Laufumgebung', die heute schon einmal
zugeschlagen hat.
(3) Ruff statt pyflakes (--select F821), ganzer Scan in 2,1 s. KEIN
ruff format — das wuerde 161 Dateien umformatieren, darunter alle
Backtests, und die Migrations-Regel verletzen.
⚠ VIERTER Fall der Klasse 'Erfolg melden, wo nichts geprueft wurde', und nur
durch den Test aufgefallen: --select F821,E999 laesst ruff 0.16 komplett
abbrechen (E999 wurde entfernt, Exit 2); die Meldung geht nach stderr, und weil
ich den Rueckgabecode nicht pruefte, meldete die Stufe 'keine undefinierten
Namen' — ohne irgendetwas geprueft zu haben. Ein absichtlich eingebauter
F821-Fehler kam glatt durch den Hook. Behoben: nur F821, und Exit 2 loest jetzt
den pyflakes-Rueckfall aus.
Beide Richtungen verifiziert: mit Fehler stoppt der Hook den Commit, ohne ist
er gruen. Der Test-Commit wurde zurueckgenommen (war nur lokal, ahead 1).
Nicht umgesetzt: Gitea Actions (Runner auf derselben Maschine wie der Live-Bot,
kein Mehrwert bei 5 s Pruefzeit), Container/Blue-Green (MT5 braucht eine
Desktop-Sitzung, EINE Broker-Verbindung), mypy/ty (kaum Annotationen).
Struktureller Fund: core/engine.py importiert backtest_breakout_squeeze — ein
Backtest ist Teil des LIVE-Abhaengigkeitsgraphen.
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
# WERKZEUGE fuer Entwicklung, Messung und Pruefung — NICHT fuer den Live-Betrieb.
|
||||
#
|
||||
# ⚠ Bewusst getrennt von `requirements.txt`: der Bot soll sich auf einer frischen
|
||||
# Maschine mit einer moeglichst kleinen Oberflaeche wiederherstellen lassen. scipy
|
||||
# und scikit-learn haben nichts im Handelspfad zu suchen, auch wenn Backtests sie
|
||||
# nutzen.
|
||||
#
|
||||
# Installation: python -m pip install -r requirements-dev.txt
|
||||
|
||||
-r requirements.txt
|
||||
|
||||
# ── Pruefung (laeuft im pre-commit-Hook) ─────────────────────────────────
|
||||
pytest==9.1.1
|
||||
ruff==0.16.1 # ersetzt pyflakes: gleiche Befunde, deutlich schneller
|
||||
pyflakes==3.4.0 # Rueckfall in `tools/check_nfalle.py`, falls ruff fehlt
|
||||
|
||||
# ── Messung / Backtests ──────────────────────────────────────────────────
|
||||
numpy==2.2.6
|
||||
scipy==1.18.0 # `backtest_cost_gate.ci95` (Bootstrap-Konfidenzintervalle)
|
||||
scikit-learn==1.9.0 # bislang ungenutzt; Kandidat fuer P(break)-Nachbau
|
||||
pandas==3.0.2 # bislang ungenutzt
|
||||
Reference in New Issue
Block a user