- 
                Notifications
    
You must be signed in to change notification settings  - Fork 3.2k
 
Open
Labels
S: needs triageIssues/PRs that need to be triagedIssues/PRs that need to be triagedtype: bugA confirmed bug or unintended behaviorA confirmed bug or unintended behavior
Description
Description
When upgrading a namespace package where the modules have been moved between
the packages, the moved modules are removed but never readded if they are now in a dependency
Expected behavior
upgrading and installing from scratch should result in the same outcome
pip version
25.0.1
Python version
3.12
OS
macos, linux
How to Reproduce
Say you have 1 namespace package with 2 modules, and decide to split them into
2 separate packages, where lib1 depends on the new lib2:
before:
├──  lib1
│   ├──  megaproject
│   │   ├──  bar.py
│   │   └──  foo.py
│   ├──  pyproject.toml
│   └──  README.md
# lib1's pyproject.toml
[project]
name = "lib1"
version = "0.1.0"
after:
 .
├──  lib1
│   ├──  megaproject
│   │   └──  foo.py
│   ├──  pyproject.toml
│   └──  README.md
├──  lib2
│   ├──  megaproject
│   │   └──  bar.py
│   ├──  pyproject.toml
│   └──  README.md
└──  requirements.txt
# lib1's pyproject.toml
[project]
name = "lib1"
version = "0.2.0"
dependencies = [ "lib2" ]
If you install version 0.2.0 on a new venv, you end up with the expected files in site-packages:
- megaproject/bar.py
 - megaproject/foo.py
 
but if you are upgrading from an existing 0.1.0, the command will succeed,
it'll say we've uninstalled 0.1.0 and installed 0.2.0 + the dependency, with
no errors, but bar.py will be missing from site-packages
Output
Installing collected packages: lib2, lib1
  Attempting uninstall: lib1
    Found existing installation: lib1 0.1.0
    Uninstalling lib1-0.1.0:
      Successfully uninstalled lib1-0.1.0
Successfully installed lib1-0.2.0 lib2-0.1.0
Code of Conduct
- I agree to follow the PSF Code of Conduct.
 
Metadata
Metadata
Assignees
Labels
S: needs triageIssues/PRs that need to be triagedIssues/PRs that need to be triagedtype: bugA confirmed bug or unintended behaviorA confirmed bug or unintended behavior