Ruff-Cleanup: ganzes MC2-Repo lint-grün + projekt-passende ruff.toml

Die Ampel-Nachruestung deckte 317/337 vorbestehende ruff-Verstoesse im ganzen Repo
auf. Aufgeraeumt:
- ruff.toml: intentionale Muster als Projekt-Politik ausgenommen (BLE001 blind-except,
  S110/S112 try-except-pass/continue, PLW1510 subprocess-best-effort, B008 FastAPI-
  Depends/File-Idiom, EXE001 Shebang, + wenige Stil-Regeln). __init__.py-Re-Exports
  geschuetzt (F401).
- ruff --fix: 128 mechanische (Import-Sortierung, PEP585/604-Annotationen, tote Imports,
  ueberfluessige noqa) auto-behoben.
- 12 echte Reste von Hand: PERF402/102, PLC3002 (Lambda->walrus), ISC004 (String-Concat
  geklammert), F841/RUF059 (ungenutzte Vars), PIE810 (startswith-Tuple), UP031 (f-string),
  UP035 (veraltete typing-Imports).
Ergebnis: 'ruff check .' = 0, 'compileall' grün. Kein Verhaltenswechsel (nur Stil/Modernisierung).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-24 20:53:36 +02:00
parent e6502f676a
commit 47f7a85510
58 changed files with 174 additions and 171 deletions
+10 -11
View File
@@ -27,10 +27,9 @@ import queue
import re
import threading
import time
from typing import Any, Dict, List, Optional
from typing import Any, Optional
import httpx
from agent.memory_provider import MemoryProvider
log = logging.getLogger(__name__)
@@ -79,12 +78,12 @@ class MC2MemoryProvider(MemoryProvider):
def __init__(self) -> None:
self._session_id = ""
self._agent_context = "primary"
self._q: "queue.Queue[list]" = queue.Queue(maxsize=200)
self._worker: Optional[threading.Thread] = None
self._q: queue.Queue[list] = queue.Queue(maxsize=200)
self._worker: threading.Thread | None = None
self._stop = threading.Event()
self._recall_cache: Dict[str, str] = {}
self._recall_cache: dict[str, str] = {}
# Turn-Puffer der Lern-Buendelung (siehe BATCH_TURNS/BATCH_IDLE_S).
self._buf: List[List[Dict[str, str]]] = []
self._buf: list[list[dict[str, str]]] = []
self._buf_lock = threading.Lock()
self._buf_last_add = 0.0
@@ -146,7 +145,7 @@ class MC2MemoryProvider(MemoryProvider):
# -- Lernen (nach dem Turn) ----------------------------------------------
def sync_turn(self, user_content: str, assistant_content: str, *,
session_id: str = "", messages: Optional[List[Dict[str, Any]]] = None) -> None:
session_id: str = "", messages: list[dict[str, Any]] | None = None) -> None:
if self._agent_context != "primary":
return
u = (user_content or "").strip()
@@ -158,7 +157,7 @@ class MC2MemoryProvider(MemoryProvider):
if SKIP_UNTRUSTED and any(m in u for m in UNTRUSTED_MARKERS):
log.debug("mc2-memory: Turn mit untrusted Bildschirm-/Web-Inhalt — Auto-Lernen übersprungen")
return
msgs: List[Dict[str, str]] = [{"role": "user", "content": u}]
msgs: list[dict[str, str]] = [{"role": "user", "content": u}]
a = (assistant_content or "").strip()
# Hermes ≥0.18 liefert optional den vollen Turn-Kontext (`messages`, inkl. Tool-Calls).
# Bewusst NUR die Tool-NAMEN mitlernen ("hat X per Tool Y geprüft") — Tool-ERGEBNISSE
@@ -188,7 +187,7 @@ class MC2MemoryProvider(MemoryProvider):
with self._buf_lock:
if not self._buf:
return
merged: List[Dict[str, str]] = []
merged: list[dict[str, str]] = []
for turn in self._buf:
merged.extend(turn)
self._buf.clear()
@@ -237,10 +236,10 @@ class MC2MemoryProvider(MemoryProvider):
self._post_learn(msgs)
# -- Context-only: keine Agent-Tools → kein Tool-Loop --------------------
def get_tool_schemas(self) -> List[Dict[str, Any]]:
def get_tool_schemas(self) -> list[dict[str, Any]]:
return []
def on_session_end(self, messages: List[Dict[str, Any]]) -> None:
def on_session_end(self, messages: list[dict[str, Any]]) -> None:
self._flush()
def shutdown(self) -> None: