bazel-contrib/rules_python

gazelle_python.yaml can only use one pip_repository

Open

#1,971 opened on 2024年6月14日

GitHub で見る
 (3 comments) (3 reactions) (0 assignees)Starlark (705 forks)auto 404
gazellehelp wantedtype: feature request

Repository metrics

Stars
 (679 stars)
PR merge metrics
 (PR metrics pending)

説明

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)

コントリビューターガイド