bazel-contrib / bazel-contrib/rules_python

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

Open
#2,747 6 comments 2 reactions 1 assignee Claimed by @aignas View on GitHub
type: feature request type: pip
Dominant language
Starlark
Stars
688
Forks
721
Avg merge
14h 49m
Merged PRs (30d)
81

Description

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).

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.