bazel-contrib / bazel-contrib/rules_python

Generate one Bazel repo per dependency

Abierto
#2,370 10 comentarios 0 reacciones 0 asignados Ver en GitHub
need: repro
Lenguaje dominante
Starlark
Estrellas
688
Forks
721
Merge medio
15 h 7 min
PR fusionados (30 d)
76

Descripción

# 🚀 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.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Empieza por la extensión del módulo `pip.parse()` y sigue cómo varios archivos `requirements.txt` se convierten en repositorios y entradas de PYTHONPATH. Compara el modelo actual de repositorio con todas las dependencias con el modelo solicitado por dependencia, incluido el periodo de transición propuesto; se considera terminado cuando cada dependencia de pip tiene su propio repositorio de Bazel y la selección de versiones ya no está determinada por el orden de las dependencias.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
build-system, tooling
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
30/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.