Skip to content

Introduce targets for all_requirements, all_whl_requirements, all_data_requirements #2559

Open
@aignas

Description

@aignas

Right now there are constants named all_requirements, all_whl_requirements and all_data_requirements that expose:

  • all of the py_library targets.
  • all of the wheels from the hub repo (this are just filegroups).
  • all of the data targets (these are just filegroups).

Proposal:
Introduce

  • :whl and :data targets for easy inclusion of all of the whls/packages. The name is up for improvement - should it be @pypi//:all_whl, @pypi//:all_data or something similar? Maybe plural would be better?
  • :all_pkg py_library that includes all of the other py_library targets via deps could be also a good thing to have.
  • Get rid of the is_exposed concept within the pip.parse - all of the requirements will be present in the all_*requirements constants no matter what target platforms they are available on. For gazelle one would have to use the new filegroup.
  • Introduce a constant with just the names of the distributions that the pypi repository has so that programatic traversal over all of the targets is still possible. Maybe it should be called distributions something similar?
  • Once we have the new targets and constants, we could deprecate the old constants and remove them in v2.

Pros:

  • The inclusion of wheels that are only available on certain platforms becomes easier and there is less logic in our repository rules.
  • Maintaining targets is much easier than string constants in the long run.
    Cons:
  • Users may need to introduce aspects or move their logic to build phase instead of using the constant for other use-cases than the gazelle manifest generation.

What are there other use-cases that we should be mindful of?

  • @keith, I remember you had some extra static analysis built on top of rules_python, is it only using the py_library targets? Are you using any of the all_*requirements constants?
  • @mark-thm, do you have anything using it?
  • @alexeagle, do your clients have any custom logic here that is using the symbols?

Related: #260 stabilization requires the whole ticket or at least some of it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions