--- name: dep-update-check description: Prüft manuell, ob Python-Version und Projekt-Dependencies aktualisiert werden können, und testet die Kompatibilität. Verwende diesen Skill AUSSCHLIESSLICH wenn der Benutzer explizit danach fragt – z.B. '/dep-update-check', 'Prüfe Dependencies', 'Sind Updates verfügbar?', 'Kann ich Python updaten?'. Niemals automatisch auslösen. --- # Dependency & Python Update Check Dieser Skill prüft systematisch, welche Updates für das DocuMentor-Projekt verfügbar sind und ob sie kompatibel miteinander sind. Verwendete Werkzeuge: `uv`, `pyproject.toml`. ## Ablauf Führe alle Schritte der Reihe nach aus und erstelle am Ende einen übersichtlichen Report. --- ## Schritt 1: Python-Versionscheck Lies die Python-Constraint aus `pyproject.toml` (Feld `requires-python`). ```bash grep "requires-python" pyproject.toml ``` Prüfe dann, welche stabilen Python-Versionen im erlaubten Bereich verfügbar sind: ```bash uv python list ``` **Stabile Versionen** sind jene ohne Suffix wie `b1`, `rc1`, `a1` oder `+freethreaded`. Filtere Beta- und Release-Candidate-Versionen heraus. Vergleiche: - Aktuell verwendete Version: `uv run python --version` - Neueste stabile verfügbare Version innerhalb der Constraints Falls eine neuere stabile Version verfügbar ist, notiere dies für den Report. --- ## Schritt 2: Veraltete Dependencies ermitteln ```bash uv tree --outdated ``` Extrahiere daraus die **direkten** Projektabhängigkeiten (aus `pyproject.toml`, Abschnitte `[project] dependencies` und `[dependency-groups]`) und trenne sie von transitiven Abhängigkeiten. Erstelle eine strukturierte Liste: - Direkte Dependencies: Name, aktuelle Version, neueste Version - Transitive Dependencies mit Updates (nur zur Information) --- ## Schritt 3: Kompatibilitätstest Sichere zunächst die aktuelle Lock-Datei: ```bash cp uv.lock uv.lock.backup ``` Versuche dann, alle Dependencies auf die neuesten kompatiblen Versionen aufzulösen: ```bash uv lock --upgrade 2>&1 ``` **Interpretation:** - `Resolved X packages` ohne Fehler → alle Updates sind kompatibel - Fehlermeldungen über Versionskonflikte → notiere welche Pakete sich gegenseitig blockieren - Prüfe ob `uv.lock` verändert wurde: `diff uv.lock.backup uv.lock | head -50` Stelle die Lock-Datei wieder her (wir wollen die Umgebung nicht tatsächlich ändern): ```bash mv uv.lock.backup uv.lock ``` --- ## Schritt 4: Report erstellen Gib den Report im folgenden Format aus: --- ### 🐍 Python-Version | | Version | |---|---| | Aktuell in Verwendung | z.B. 3.13.11 | | Neueste stabile im erlaubten Bereich | z.B. 3.13.13 | | Update empfohlen? | Ja / Nein | Falls ein Python-Update verfügbar ist, zeige den Befehl: ```bash uv python install 3.X.Y # Dann in pyproject.toml requires-python anpassen falls nötig # Danach: uv sync ``` --- ### 📦 Direkte Dependencies Tabelle mit Spalten: Paket | Aktuell | Verfügbar | Status Status-Symbole: - ✅ Aktuell - ⬆️ Update verfügbar - ⚠️ Update verfügbar, aber Kompatibilitätsproblem --- ### 🔗 Transitive Dependencies (Auswahl) Nur falls es relevante Updates gibt, kurze Liste. --- ### 🔄 Kompatibilitäts-Ergebnis Klares Fazit: - Können alle direkten Dependencies gleichzeitig aktualisiert werden? Ja/Nein - Falls Nein: Welche Konflikte bestehen und warum? --- ### 📋 Empfohlene Aktion Falls Updates verfügbar und kompatibel: ```bash uv sync --upgrade ``` Falls nur einzelne Pakete aktualisiert werden sollen: ```bash uv add paketname>=neue.version ``` Falls Python aktualisiert werden soll (nur wenn innerhalb der Constraints): ```bash uv python install 3.X.Y uv sync ``` --- ## Hinweise - **Nie `uv sync --upgrade` automatisch ausführen** – nur im Report vorschlagen, der Benutzer entscheidet. - Beta/RC-Python-Versionen werden nicht empfohlen (erkennbar an Suffixen wie `b1`, `rc1`). - `pyarrow` und andere native Pakete können bei Python-Upgrades besondere Anforderungen haben – darauf hinweisen falls relevant. - Wenn der `uv lock --upgrade`-Test fehlschlägt, die Lock-Datei **immer** aus dem Backup wiederherstellen.