Skip to content

uv pip upgrade behavior breaks multi-app install workflow and violates existing dependency constraints #1683

@ismxilxrif

Description

@ismxilxrif

Bench’s current app installation workflow assumes that dependencies are resolved incrementally and that versions installed in earlier steps remain compatible when later apps are installed. This was true when Bench relied on pip, but it no longer holds after the switch to uv.

The Problem
Bench installs apps one by one through separate commands

With pip, this typically preserved earlier installed versions unless a conflicting requirement appeared. With uv, the resolver treats only the active requirement set, not already installed distributions, so shared dependencies may be upgraded beyond constraints required by previously installed apps.

Example

In version-16-beta:

frappe requires: oauthlib ~=3.2.2 (allowed: >=3.2.2, <3.3.0)

erpnext (via python-youtuberequests-oauthlib) requires: oauthlib >=3.0.0

Installing both in one resolution step picks a compatible version (3.2.x).
Installing in two separate steps causes uv pip to upgrade oauthlib to 3.3.2, violating Frappe’s requirement, because the constraint ~=3.2.2 is not part of the visible input during the second resolution pass.

Why this is a regression

The existing workflow relies on sequential installation steps.

The switch to uv breaks this model because constraints from already installed apps are not imported into subsequent resolution runs.

Although it's not causing problems now, this might break apps in the future.

This produces environments that Bench previously avoided without explicit intervention.

Impact

Multi-app benches can end up with incompatible shared dependencies after adding apps.

Expected behavior

Bench should maintain dependency consistency across all installed apps without requiring manual management from users.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions