Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Voraussetzung: Packaging und die Wirtschaftssimulation; für Aufgabe 3 zusätzlich Input und Output.

Diese Aufgaben sind gedacht zur Bearbeitung während der Präsenzübung am Dienstag. Eine Abgabe der Lösungen ist nicht vorgesehen, aber viermal im Semester muss die eigene Bearbeitung erklärt werden (und zufriedenstellend Verständnis demonstriert werden), damit das Modul abgeschlossen werden kann. Ist diese Voraussetzung erfüllt, so kann ein konkretes Thema für das Abschlussprojekt (Hausarbeit) festgelegt werden.

Aufgabe 1

Aufgabe 2

Laden Sie das Python-Projekt ’Wesen’ von GitHub herunter — der Code stammt von 2003, wurde 2013 auf Python 3 portiert und lag danach zwölf Jahre still:

git clone https://github.com/konradvoelkel/wesen.git
cd wesen
git checkout 88fa06f

Der git checkout ist wichtig: Der aktuelle Stand des Projekts ist inzwischen modernisiert, und dann gibt es nichts mehr zu tun. 88fa06f ist der letzte Commit vor der Wiederbelebung (2014-03-03) und damit der Zustand, um den es hier geht.

Bringen Sie das Programm ans Laufen (die grafische Benutzeroberfläche). Die Schwierigkeit: es gibt nicht einmal eine requirements.txt. Wie man so ein Projekt systematisch erschließt, steht im Kapitel Brownfield — insbesondere in den Abschnitten Archäologie und Zum Laufen bringen.

Aufgabe 3 (Optional)

Schreiben Sie eine pyproject.toml für ’Wesen’, sodass sich mit uv das Paket leicht installieren lässt (und probieren Sie aus, dass das wirklich klappt).

Vergleichen Sie Ihr Ergebnis anschließend mit der Fassung, die im Projekt inzwischen tatsächlich steht:

git show master:pyproject.toml

Wo weichen Sie ab, und wer hat die bessere Begründung? Interessant ist besonders der Abschnitt [tool.wesen.system-dependencies] — was löst er, und warum steht so etwas nicht im Standard?

Aufgabe 4

Sie haben auf den letzten Übungsblättern ein CYOA Text-Adventure entwickelt mit geeigneten Datenstrukturen, modularem Code und probabilistischen Elementen (sowie ein Inventar z.B.). Wenn Sie es noch nicht getan haben, ergänzen Sie zu Ihrem Code Type Hints, die Sie mit mypy prüfen sowie Assertions, um Ihre Annahmen über Variablen auszudrücken.

Ihre CYOA Anwendung soll Spielstände laden/speichern können und einen Editiermodus haben, der die gleiche Szenen-Darstellungskomponente verwendet wie der Spielmodus.

Verwenden Sie nun außerdem Dataclasses für die internen Datenstrukturen und setzen Sie gezielt Logging ein anstelle von print-Statements..

Beschreiben Sie Ihre Metadaten in einer pyproject.toml.

Sie können diese Aufgabe auch gemeinsam bearbeiten (etwa über ein geteiltes Git Repository; wir könnten auch ein Klassen-Repo aufmachen, um daran einmal best practices zu demonstrieren).
Wir werden damit noch weiterarbeiten.