bazel-contrib / bazel-contrib/rules_python
Support python_version on modules_mapping and/or gazelle_manifest rule
- Langage dominant
- Starlark
- Étoiles
- 688
- Forks
- 721
- Merge moyen
- 15 h 7 min
- PR mergées (30 j)
- 76
Description
# 🚀 feature request
### Relevant Rules
* [gazelle_python_manifest](https://github.com/bazel-contrib/rules_python/blob/main/gazelle/manifest/defs.bzl)
* [modules_mapping](https://github.com/bazel-contrib/rules_python/blob/main/gazelle/modules_mapping/def.bzl)
### Description
When in the middle of working on a Python version upgrade, it's valuable to generate gazelle manifests with different module maps because you the requirements.in may include additional requirements for the new python version:
```
gradio; python_version >= "3.11"
```
When running the manifest rule with all_whl_requirements, it'll fail with something like:
> No matching wheel for current configuration's Python version.
In order to get the desired behavior, we need to run the gazelle manifest update by specifying a different python version via command line `--@rules_python//python/config_settings:python_version=3.11`.
### Describe the solution you'd like
Adding a `python_version attribute to the manifest or modules_mapping rule, so that we can run it with the expected python_version as needed without a command-line flag.
### Describe alternatives you've considered
We currently customize our scripts so that we add the command line flag, but I don't think this is feasible.
Other alternatives:
* Generate a modules mapping per different environment tag satisfied in the requirements.in . This might be heavy-handed, but could work for all other environment markers beyond python_version . And there's no need to maintain multiple manifest files.
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par gazelle/manifest/defs.bzl et gazelle/modules_mapping/def.bzl, puis examinez comment la règle de manifeste utilise all_whl_requirements et le paramètre python_version de la ligne de commande. Le travail est terminé si l’une ou l’autre règle accepte la version de Python demandée et génère le manifeste ou la carte des modules correspondante sans l’indicateur de ligne de commande, avec un comportement couvrant les exigences conditionnées par la version.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- build-system
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100