deps-update

bởi openshift

Cập nhật các phụ thuộc Python lên phiên bản mới nhất bằng uv, tạo lại lock và requirements.txt, sau đó xác minh linting và kiểm thử đều thành công. Sửa lỗi phát sinh từ các thay đổi API…

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.

Thêm skills từ openshift

openshift-docs
openshift
Tìm kiếm và đọc tài liệu OpenShift Container Platform ở định dạng markdown. Sử dụng khi người dùng hỏi về các tính năng, cấu hình, cài đặt của OpenShift,…
triage-leaked-infra
openshift
Đánh giá xem VPC AWS hoặc bộ hạ tầng từ HyperShift CI có an toàn để xóa hay không. Sử dụng khi người dùng dán đầu ra cleanleaked và hỏi 'tôi có thể xóa cái này không?', 'có…
openshift-expert
openshift
Chuyên gia nền tảng OpenShift và Kubernetes với kiến thức sâu về kiến trúc cluster, operators, mạng, lưu trữ, xử lý sự cố và pipeline CI/CD. Sử dụng…
Konflux Archived PipelineRuns
openshift
Truy cập các PipelineRuns, TaskRuns và nhật ký pod Konflux đã lưu trữ thông qua KubeArchive. Tự động áp dụng khi kiểm tra kết quả PipelineRun Konflux, điều tra…
backport
openshift
Backport các commit hoặc PR từ nhánh main sang nhánh release. Sử dụng khi người dùng yêu cầu backport, cherry-pick, hoặc chuyển các thay đổi giữa các nhánh, hoặc khi đang xử lý…
rebase
openshift
Rebase nhánh hiện tại lên nhánh cơ sở của nó, giải quyết tất cả xung đột, và xác minh lint, i18n, và build đều thành công. Sử dụng khi người dùng yêu cầu rebase, cập nhật, hoặc đồng bộ…
Build CPO Image
openshift
Xây dựng và đẩy hình ảnh container control-plane-operator. Tự động áp dụng khi kiểm tra các thay đổi CPO yêu cầu triển khai lên cụm trực tiếp.
find-complexity
openshift
Tìm các hàm và phương thức có độ phức tạp cyclomatic cao, độ dài quá mức, hoặc quá nhiều tham số. Sử dụng khi người dùng yêu cầu tìm mã phức tạp, độ phức tạp…