bazel-contrib / bazel-contrib/rules_python

Generate one Bazel repo per dependency

Ouverte
#2,370 10 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
need: repro
Langage dominant
Starlark
Étoiles
688
Forks
721
Merge moyen
15 h 7 min
PR mergées (30 j)
76

Description

# 🚀 feature request

### Relevant Rules

`pip.parse()` module extension

### Description

When the same pip package is (transitively) depended upon multiple times from different `requirements.txt` files, it is undefined which version will be chosen (both are added to the PYTHONPATH and the order of deps decides which one takes precedence).
This is especially problematic for transitive dependencies of module dependencies where one only has limited to no influence of which version is chosen. This is especially problematic for fundamental libraries like Protobuf which gets pulled in transitively in many `requirements.txt`.
The way this is handled in golang, is that every dependency is its own Bazel repo and as such takes part in version resolution. This makes sure that every package only exists once within a given Bazel workspace.

### Describe the solution you'd like

Generate one Bazel repo per pip dependency.

### Describe alternatives you've considered

For the transition period, `rules_python` could generate both, one repo for all of `requirements.txt` and one repo per dependency. This way, users can easily migrate from one approach to another. In a future major version, the old functionality could be removed.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par l’extension du module `pip.parse()` et suivez comment plusieurs fichiers `requirements.txt` deviennent des dépôts et des entrées PYTHONPATH. Comparez le modèle actuel de dépôt regroupant toutes les dépendances avec le modèle demandé par dépendance, y compris la période de transition proposée ; le travail est terminé lorsque chaque dépendance pip possède son propre dépôt Bazel et que la sélection de version n’est plus déterminée par l’ordre des dépendances.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
build-system, tooling
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.