
python test 4
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.