bazel-contrib / bazel-contrib/rules_python

Improve the `pip.parse` API to allow for incremental building of the configuration

Offen
#2,747 6 Kommentare 2 Reaktionen 1 zugewiesene Person Beansprucht von @aignas Auf GitHub ansehen
type: feature request type: pip
Vorherrschende Sprache
Starlark
Sterne
688
Forks
721
Ø Merge
15 Std. 7 Min.
Gemergte PRs (30 T.)
76

Beschreibung

Currently the API for defining different parameters by target platform is not ideal and we need to jump over hoops whilst trying to maintain it. The main difficulties are:
* We would like to specify different `pip.parse` attributes per target platform, but we cannot, because some of the parameters need to be labels, label lists or other.
* We cannot have overrides for these things easily and the definitions of what those target platforms are are hard-coded in the code.

The idea that I have is to reuse the same recipe from #2578, where we create a builder for the configuration and it allows us easily define:
* default constraint and flag values for the config settings that we create for different platform variants.
* default values for the pip index url, etc
* default values for which platforms we should support.
* default `auth` configuration for the `bazel_downloader`.
* The list of `python_versions` that are supported #1708.
* build the configuration incrementally for the `pip.parse` invocation allowing per-target-platform configuration of:
* `extra_pip_args`. #2745
* `requirements_lock`.
* `constraint_values` and `flag_values`. #2548

What is more the `override` API could be blended in more easily to provide better support for specifying different, patches, etc.

TODO:
- [ ] Design `defaults` and `configure` APIs and use that to set the defaults within `rules_python` for selecting the whls.
- [ ] Do the same for `index_url` setting, at some point `rules_python` could set the default `index_url` to default to the new code path.
- [ ] Transition the current `pip.parse` to use `pip.configure` under the hood.
- [ ] Ensure people can ignore specific `whl_platform_tags` for a particular platform (and maybe even a particular whl).

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.