Commit cceed18
fix(upgrade-all): detect pipx packages with missing metadata and provide fix
Enhanced pipx upgrade-all error handling to distinguish between missing
metadata issues (user-fixable) and actual failures.
Problem:
- pipx upgrade-all exits with non-zero code when any package has missing metadata
- This happens with packages installed using pipx < 0.15.0.0
- Script treated partial success as complete failure
- User received generic error message without actionable fix
Solution:
- Detect "missing internal pipx metadata" pattern in output
- Extract broken package name from error message
- Use log_reconcile() with ⚙ icon for partial upgrades
- Provide exact fix command: pipx uninstall <pkg> && pipx install <pkg>
- Only mark as failure if it's a real error (not metadata issue)
Behavior:
Before:
❌ pipx packages (see log for details)
⏭ pipx packages (failed)
After (metadata issue):
⚙ pipx packages (partial: black has missing metadata, run: pipx uninstall black && pipx install black)
After (real failure):
❌ pipx packages (see log for details)
This treats missing metadata as a skippable issue with clear resolution path,
similar to how we handle system-managed packages and transient network errors.
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>1 parent 7d691cb commit cceed18
1 file changed
Lines changed: 17 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
556 | 556 | | |
557 | 557 | | |
558 | 558 | | |
559 | | - | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
560 | 576 | | |
561 | 577 | | |
562 | 578 | | |
| |||
0 commit comments