Header image for python test

python test

Prompt

Du bist ein Senior Software Engineer. Löse die folgende Programmieraufgabe produktionsnah, nicht nur als Demo. Schreibe sauberen, wartbaren Code mit klarer Struktur, sinnvollen Namen, Fehlerbehandlung und Tests. ## Aufgabe Implementiere in **Python 3.12** eine kleine Bibliothek namens `event_windows`, die Zeitfenster für wiederkehrende Veranstaltungen berechnet. Es gibt Events mit folgender Struktur: ```python { "id": "backup", "timezone": "Europe/Berlin", "start": "2026-03-28T23:30:00", "duration_minutes": 120, "repeat": { "freq": "daily", "interval": 1, "count": 4 } } ``` Die Funktion soll heißen: ```python def expand_events(events: list[dict]) -> list[dict]: ... ``` Sie gibt eine chronologisch sortierte Liste einzelner Event-Vorkommen zurück: ```python [ { "id": "backup", "start_utc": "2026-03-28T22:30:00Z", "end_utc": "2026-03-29T00:30:00Z", "local_date": "2026-03-28" } ] ``` ## Anforderungen 1. Unterstütze `freq` mit den Werten `"daily"` und `"weekly"`. 2. `interval` gibt an, alle wie viele Tage oder Wochen das Event wiederholt wird. 3. `count` gibt an, wie viele Vorkommen erzeugt werden. 4. `timezone` muss mit der Python-Standardbibliothek `zoneinfo` verarbeitet werden. 5. `start` ist eine lokale Zeit ohne UTC-Offset und muss in der angegebenen Zeitzone interpretiert werden. 6. Die Ausgabe muss nach `start_utc`, dann nach `id` sortiert werden. 7. `duration_minutes` kann größer als 24 Stunden sein. 8. Events können über Sommerzeitwechsel laufen. 9. Ungültige Eingaben sollen mit aussagekräftigen `ValueError`-Fehlern abgelehnt werden. 10. Verwende keine externen Libraries. ## Erwartete Antwortstruktur 1. Kurze Erklärung deiner Designentscheidungen. 2. Vollständiger Code der Bibliothek. 3. Mindestens 8 aussagekräftige Tests mit `unittest` oder `pytest`-ähnlicher Standardbibliothek. 4. Eine kurze Liste von Edge Cases, die deine Lösung bewusst abdeckt. 5. Eine kurze Selbstkritik: Welche Annahmen hast du getroffen und wo wären Grenzen dieser Implementierung? Bewerte Lesbarkeit und Korrektheit höher als Kürze. Gib keinen Pseudocode aus, sondern lauffähigen Python-Code.