bazel-contrib/rules_python

multi_pip_parse should support platform specific requirement files

Open

#2.653 aberto em 8 de mar. de 2025

Ver no GitHub
 (2 comments) (0 reactions) (0 assignees)Starlark (705 forks)auto 404
P4help wantedtype: pip

Métricas do repositório

Stars
 (679 stars)
Métricas de merge de PR
 (Métricas PR pendentes)

Description

🚀 feature request

Relevant Rules

I think we should extend the functionality of multi_pip_parse to deal with platform specific requirement files better.

Description

Currently you can do this to have different lock files on different versions of python

multi_pip_parse(
    ...
    requirements_lock = {
        "3.10": "//:requirements_lock_3_10.txt",
        "3.12": "//:requirements_lock_3_12.txt",
    },
)

but the platform specific attributes take strings (and not dict<str, lable>) so you can only have a single requirements file on a specific platform

multi_pip_parse(
    ...
    requirements_linux = "//requirements:requirements_lock_3_12_linux.txt",
    requirements_lock = {
        "3.10": "//:requirements_lock_3_10.txt",
        "3.12": "//:requirements_lock_3_12.txt",
    },
)

The platform specific requirements should also allow you to specify a dict so we can express the proper requirements files on various platforms

Describe the solution you'd like

Ideally it would just look like this

multi_pip_parse(
    ...
    requirements_linux = {
        "3.10": "//:requirements_lock_3_10_linux.txt",
        "3.12": "//:requirements_lock_3_12_linux.txt",
    },
    requirements_lock = {
        "3.10": "//:requirements_lock_3_10.txt",
        "3.12": "//:requirements_lock_3_12.txt",
    },
)

Describe alternatives you've considered

I'm not really sure there are any good alternative solutions, this feels like it is just missing functionality

Guia do colaborador