Determinismus testen: Zufall, Zeit & I/O kontrollieren
Zufall, Zeit und I/O machen Tests schnell unzuverlässig. Wie Du externe Einflüsse per Dependency Injection, monkeypatch und tmp_path kontrollierst und Deine Logik deterministisch prüfst.
ls -lt posts/
Über Systeme, Tooling und das gelegentliche Yak-Shaving.
Zufall, Zeit und I/O machen Tests schnell unzuverlässig. Wie Du externe Einflüsse per Dependency Injection, monkeypatch und tmp_path kontrollierst und Deine Logik deterministisch prüfst.
Aus dem Akzeptanzkriterium wird ein Prompt: Wir verallgemeinern auf NdM, schreiben mit einer kontrollierten Zufallsquelle den ersten exakten Test und lassen den Agenten die Schleife selbst drehen.
Wenn Wasserwerk und Kanalisation ausfallen, werden sauberes Trinkwasser und Hygiene schnell zum Survival-Problem. Wie man Wasser aufbereitet, Fäkalien vom Trinkwasser fernhält und Durchfallerkrankungen verhindert.
Legacy-Code ist nicht alter Code, sondern Code, den niemand mehr gern anfasst. Teil 1 erklärt, warum die Engine von Atlantis PbeM mit Claude Code nach Python wandert, warum „treu portieren" vor „neu erfinden" kommt – und wie das Projekt aufgesetzt ist, bevor die erste Zeile Spiellogik entsteht.
Ein KI-Agent ist nur so gut wie seine Feedback-Schleife. Teil 1 richtet das Projekt ein, schreibt den ersten roten Test für eine Würfel-Engine – und klärt gleich, wie man überhaupt Zufall testet.
Was hinter dem @ steckt: Funktionen sind Objekte, Closures verpacken Verhalten, functools.wraps erhält Metadaten – und Decorators werden damit alltagstauglich.
Wasser hat Vorrang vor Nahrung – aber klares Wasser ist noch lange nicht sauber. Wie Katniss richtig priorisiert, warum aktive Jagd oft Energieverschwendung ist und weshalb Fallen kein Waldspielzeug sind.
Werte auf Abruf statt alle auf einmal: wie yield funktioniert, warum Generatoren Speicher sparen und wozu Generator Expressions, yield from und Pipelines gut sind.
Click baut CLIs aus Decorators: Optionen, Argumente, Unterbefehle, Prompts, Fehlerbehandlung und Tests mit CliRunner – der Baukasten, auf dem auch Typer aufsetzt.
Typen annotieren, ohne Pythons Dynamik zu verlieren: moderne Type-Hint-Syntax, typische Stolperfallen und der praktische Einstieg mit mypy, Pyright, ty und Pyrefly.