[PR #3300] [MERGED] Fix uv conflict attribution #3176

Closed
opened 2026-10-28 21:15:50 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Comfy-Org/ComfyUI-Manager/pull/3300
Author: @ltdrdata
Created: 9/18/2026
Status: ✅ Merged
Merged: 9/18/2026
Merged by: @ltdrdata

Base: manager-v4 ← Head: fix/v4-uv-conflict-attribution


📝 Commits (1)

  • 918f413 Fix uv conflict attribution

📊 Changes

2 files changed (+61 additions, -5 deletions)

View changed files

📝 comfyui_manager/common/unified_dep_resolver.py (+8 -3)
📝 tests/test_unified_dep_resolver.py (+53 -2)

📄 Description

Purpose and scope

uv can report a dependency-resolution failure in an error heading followed by indented explanation lines. The existing parser drops those explanations, so the CLI cannot identify the requesting node packs and their version constraints.

Preserve the explanations while retaining the parser's filtering of unrelated output. Applies to the shared dependency resolver used by CLI commands and startup resolution.

Key changes

  • Extract error/conflict lines together with their indented continuations. End the diagnostic block at blank or unrelated unindented lines. Preserve existing empty-input handling and the fallback for unrecognized diagnostics.
  • Keep raw stderr available separately and retain the existing conflict-attribution interface.
  • Register the resolver test module on its parent package so existing mock targets work on Python 3.10.

Validation approach

Retain all original parser tests and strengthen the mixed-output check to require the exact filtered result. A multiline regression requires both conflicting packages to map to the correct node packs and version specifications, excludes an unrelated package mentioned in debug output, and verifies that resolution failure does not proceed to installation. Additional coverage checks continuation boundaries and multiple diagnostics.

The original parser fails the multiline checks; a whole-stderr implementation fails filtering and attributes the unrelated package. The corrected parser passes both sets of requirements.

CLI E2E runs real uv commands against the existing dedicated test node packs in an isolated ComfyUI environment. Startup validation executes the production resolver block with real uv and isolated package paths, checking the failure details, fallback flag and unchanged installed packages; this is not a full ComfyUI launch.

Validation results

  • Head: 918f4133; Python 3.10.20 / uv 0.12.17.
  • Resolver regression: 150 passed on Python 3.10 and 150 passed on Python 3.12.
  • Actual CLI E2E: 12 passed, including node-pack names and version constraints in conflict output.
  • Startup resolver block: passed; both conflicting package specifications and per-node fallback remain visible.
  • Full local non-E2E suite: 348 passed, 12 skipped, 3 inherited Git backup fixture failures. The skips require the separate CLI environment exercised above.
  • Ruff and whitespace checks passed. New-head cross-platform CI passed on Ubuntu, Windows and macOS.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Comfy-Org/ComfyUI-Manager/pull/3300 **Author:** [@ltdrdata](https://github.com/ltdrdata) **Created:** 9/18/2026 **Status:** ✅ Merged **Merged:** 9/18/2026 **Merged by:** [@ltdrdata](https://github.com/ltdrdata) **Base:** `manager-v4` ← **Head:** `fix/v4-uv-conflict-attribution` --- ### 📝 Commits (1) - [`918f413`](https://github.com/Comfy-Org/ComfyUI-Manager/commit/918f4133cf58136c36797c0f749c6c44d5a02c1a) Fix uv conflict attribution ### 📊 Changes **2 files changed** (+61 additions, -5 deletions) <details> <summary>View changed files</summary> 📝 `comfyui_manager/common/unified_dep_resolver.py` (+8 -3) 📝 `tests/test_unified_dep_resolver.py` (+53 -2) </details> ### 📄 Description ## Purpose and scope uv can report a dependency-resolution failure in an error heading followed by indented explanation lines. The existing parser drops those explanations, so the CLI cannot identify the requesting node packs and their version constraints. Preserve the explanations while retaining the parser's filtering of unrelated output. Applies to the shared dependency resolver used by CLI commands and startup resolution. ## Key changes - Extract error/conflict lines together with their indented continuations. End the diagnostic block at blank or unrelated unindented lines. Preserve existing empty-input handling and the fallback for unrecognized diagnostics. - Keep raw stderr available separately and retain the existing conflict-attribution interface. - Register the resolver test module on its parent package so existing mock targets work on Python 3.10. ## Validation approach Retain all original parser tests and strengthen the mixed-output check to require the exact filtered result. A multiline regression requires both conflicting packages to map to the correct node packs and version specifications, excludes an unrelated package mentioned in debug output, and verifies that resolution failure does not proceed to installation. Additional coverage checks continuation boundaries and multiple diagnostics. The original parser fails the multiline checks; a whole-stderr implementation fails filtering and attributes the unrelated package. The corrected parser passes both sets of requirements. CLI E2E runs real uv commands against the existing dedicated test node packs in an isolated ComfyUI environment. Startup validation executes the production resolver block with real uv and isolated package paths, checking the failure details, fallback flag and unchanged installed packages; this is not a full ComfyUI launch. ## Validation results - Head: 918f4133; Python 3.10.20 / uv 0.12.17. - Resolver regression: 150 passed on Python 3.10 and 150 passed on Python 3.12. - Actual CLI E2E: 12 passed, including node-pack names and version constraints in conflict output. - Startup resolver block: passed; both conflicting package specifications and per-node fallback remain visible. - Full local non-E2E suite: 348 passed, 12 skipped, 3 inherited Git backup fixture failures. The skips require the separate CLI environment exercised above. - Ruff and whitespace checks passed. [New-head cross-platform CI](https://github.com/Comfy-Org/ComfyUI-Manager/actions/runs/35397392681) passed on Ubuntu, Windows and macOS. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-28 21:15:50 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Comfy-Org/ComfyUI-Manager#3176
No description provided.