deps-update

Python-Abhängigkeiten mit uv auf die neuesten Versionen aktualisieren, Lock-Datei und requirements.txt neu generieren, dann überprüfen, ob Linting und Tests bestanden werden. Behebung von Fehlern durch API-Änderungen…

npx skills add https://github.com/openshift/lightspeed-service --skill deps-update

deps-update

Step 1: Snapshot Current State

Before changing anything:

  1. Fetch upstream and check out a clean base:
    git fetch upstream
    git checkout upstream/main
    git checkout -b chore/deps-update
    
    If the working tree has uncommitted changes, stop and tell the user to commit or stash first. Dependency updates must land on a clean tree.
  2. Run uv lock --check to confirm the lock file is currently consistent
  3. Run uv run python --version to record the Python version

Step 2: Bump Dependencies

If a specific package was requested, bump only that package:

uv lock --upgrade-package {package}
uv sync --group dev --extra evaluation

Otherwise bump everything:

uv lock --upgrade
uv sync --group dev --extra evaluation

Capture the output of uv lock --upgrade — it lists all version changes and is needed for the commit message and report.

After running uv lock --upgrade, check the output for warnings. If a warning indicates a missing extra or incompatible constraint, investigate whether it affects this project. Note any benign warnings in the final report.

Then regenerate the pinned requirements file:

make requirements.txt

This runs uv export under the hood and produces a requirements.txt with hashes for production packages.

Step 3: Verify — Lint and Type Checks

Run the full verification suite:

make format
make verify

If verification passes cleanly, proceed to Step 4.

If verification fails:

  1. Read the error output carefully
  2. Identify which bumped package caused the breakage (often a renamed/removed API, changed type signatures, or new deprecation-as-error)
  3. Fix the calling code to match the new API — do not pin the package back to the old version unless the new version has a confirmed regression
  4. Re-run make format && make verify
  5. Repeat until clean

Step 4: Verify — Unit Tests

Run the unit test suite:

make test-unit

If tests pass, proceed to Step 5.

If tests fail:

  1. Distinguish between test breakage from API changes (assertions on old behavior, mocks of renamed methods) and genuine regressions (new bugs introduced by a library update)
  2. For API changes — update tests and source code to match the new API
  3. For genuine regressions — check the library's changelog and issue tracker. If confirmed upstream bug, pin that specific package to the last working version in pyproject.toml and re-run uv lock && uv sync
  4. Re-run make test-unit
  5. Repeat until clean

Step 5: Verify — Integration Tests

Run the integration test suite:

make test-integration

Same triage approach as Step 4 if failures occur.

Step 6: Report, Commit, and PR

Check which files changed beyond the dependency files:

git diff --name-only

Always present a summary to the user before committing:

  • Number of packages bumped, with notable version jumps (major versions, security-relevant packages)
  • Verification status (lint, unit tests, integration tests)
  • List of all changed files
  • Any warnings from Step 2 that were deemed benign
  • Any source/test files modified to fix API changes (with a brief explanation of each fix)

If only pyproject.toml, uv.lock, and requirements.txt changed — commit and raise a PR automatically without asking:

git add pyproject.toml uv.lock requirements.txt
git commit -m "chore: bump dependencies to latest"

Then follow the raise-pr skill to open the PR.

If source or test files were also modified (API change fixes from Steps 3–5) — wait for user acknowledgment before committing. Then commit all changes and follow the raise-pr skill.

Constraints

  • Clean tree required — do not start if there are uncommitted changes.
  • Fix forward, not back — prefer updating code to match new APIs over pinning old versions. Only pin back when there's a confirmed upstream regression.
  • Do not skip verification — all four gates (lint, types, unit tests, integration tests) must pass before committing.
  • Do not touch unrelated code — only modify files that break due to the dependency bump. No drive-by refactors.
  • Report honestly — if a test failure looks unrelated to the bump, say so. Let the user decide whether to investigate separately.
  • No manual requirements.txt edits — always regenerate via make requirements.txt, never hand-edit.

Mehr Skills von openshift

openshift-docs
openshift
Durchsuchen und Lesen der OpenShift Container Platform-Dokumentation im Markdown-Format. Verwenden, wenn der Benutzer nach OpenShift-Funktionen, Konfiguration, Installation, … fragt.
triage-leaked-infra
openshift
Bewerten Sie, ob eine AWS-VPC oder eine Infrastruktur aus HyperShift CI sicher gelöscht werden kann. Verwenden Sie dies, wenn der Benutzer eine saubere geleakte Ausgabe einfügt und fragt: „Kann ich das löschen?“, „Ist…
openshift-expert
openshift
OpenShift-Plattform- und Kubernetes-Experte mit fundierten Kenntnissen in Cluster-Architektur, Operatoren, Netzwerk, Speicher, Fehlerbehebung und CI/CD-Pipelines. Nutzen…
Konflux Archived PipelineRuns
openshift
Greift auf archivierte Konflux PipelineRuns, TaskRuns und Pod-Logs über KubeArchive zu. Wird automatisch angewendet, wenn Konflux PipelineRun-Ergebnisse überprüft, untersucht…
backport
openshift
Commits oder PRs vom Hauptzweig in einen Release-Zweig zurückportieren. Verwenden, wenn der Benutzer darum bittet, Änderungen zwischen Zweigen zurückzuportieren, zu cherry-picken oder zu portieren, oder beim Beheben von…
rebase
openshift
Rebase den aktuellen Branch auf seinen Basis-Branch, löse alle Konflikte und stelle sicher, dass Lint, i18n und Build erfolgreich durchlaufen. Verwende dies, wenn der Benutzer darum bittet, zu rebasen, zu aktualisieren oder zu synchronisieren…
Build CPO Image
openshift
Erstellen und Pushen des control-plane-operator-Container-Images. Wird automatisch angewendet, wenn CPO-Änderungen getestet werden, die ein Deployment auf einem Live-Cluster erfordern.
find-complexity
openshift
Findet Funktionen und Methoden mit hoher zyklomatischer Komplexität, übermäßiger Länge oder zu vielen Parametern. Verwenden, wenn der Benutzer bittet, komplexen Code, Komplexität zu finden…