bazel-contrib / bazel-contrib/rules_python
multi_pip_parse should support platform specific requirement files
- Lenguaje dominante
- Starlark
- Estrellas
- 688
- Forks
- 721
- Merge medio
- 15 h 7 min
- PR fusionados (30 d)
- 76
Descripción
# 🚀 feature request
### Relevant Rules
I think we should extend the functionality of `multi_pip_parse` to deal with platform specific requirement files better.
### Description
Currently you can do this to have different lock files on different versions of python
```
multi_pip_parse(
...
requirements_lock = {
"3.10": "//:requirements_lock_3_10.txt",
"3.12": "//:requirements_lock_3_12.txt",
},
)
```
but the platform specific attributes take strings (and not dict) so you can only have a single requirements file on a specific platform
```
multi_pip_parse(
...
requirements_linux = "//requirements:requirements_lock_3_12_linux.txt",
requirements_lock = {
"3.10": "//:requirements_lock_3_10.txt",
"3.12": "//:requirements_lock_3_12.txt",
},
)
```
The platform specific requirements should also allow you to specify a dict so we can express the proper requirements files on various platforms
### Describe the solution you'd like
Ideally it would just look like this
```
multi_pip_parse(
...
requirements_linux = {
"3.10": "//:requirements_lock_3_10_linux.txt",
"3.12": "//:requirements_lock_3_12_linux.txt",
},
requirements_lock = {
"3.10": "//:requirements_lock_3_10.txt",
"3.12": "//:requirements_lock_3_12.txt",
},
)
```
### Describe alternatives you've considered
I'm not really sure there are any good alternative solutions, this feels like it is just missing functionality
Guía de contribución
Línea de trabajo
El punto de entrada es multi_pip_parse; empieza rastreando cómo se declaran y seleccionan requirements_lock y requirements_linux. Compara el manejo existente del diccionario de versiones de Python con los atributos específicos de la plataforma. Se considera terminado cuando los atributos específicos de la plataforma aceptan las asignaciones de versión a etiqueta mostradas y conservan el comportamiento actual de las cadenas.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- build-system
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100