bazel-contrib / bazel-contrib/rules_python

Support python_version on modules_mapping and/or gazelle_manifest rule

Ouverte
#3,120 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
gazelle
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

Recevez les nouvelles issues par e-mail

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