gazelle_python.yaml can only use one pip_repository
#1,971 opened on Jun 14, 2024
Repository metrics
- Stars
- (679 stars)
- PR merge metrics
- (PR metrics pending)
Description
The modules_mapping rule accepts a list of wheels, but then the manifest generator assumes that all those modules come from a single pip.parse call.
Since many Python projects separate dependencies, i.e. https://pip-tools.readthedocs.io/en/stable/#workflow-for-layered-requirements it's often the case that some users have different requirements repositories, even for the same folder.
For example, in https://github.com/alexeagle/bazel_python_repro/blob/18f4504adcdef9187f68397ea20a4f6672badcc2/app/BUILD.bazel gazelle has generated line 28 as @pip//python_dotenv. However that wheel came from test.in installed at pip.test - so it should have generated @pip.test//python_dotenv.
Of course since the wheels were combined in the modules_mapping this information is lost and the gazelle_python.yaml can't indicate which repo should be used for a given import (no matter what folder the gazelle_python.yaml were to appear in)