bazel-contrib / bazel-contrib/rules_python

Custom platform from `pip.default` can't be used by consumers

Aperta
#3,476 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Starlark
Stelle
688
Fork
721
Merge medio
15h 7m
PR unite (30g)
76

Descrizione

# 🐞 bug report

## Affected Rule

The issue is caused by the bzlmod module extension pip in the pip.default / pip.parse tag handling in:

- python/private/pypi/extension.bzl (`build_config()`)
- python/private/pypi/parse_requirements.bzl (MacOS, `_package_srcs()`)
- python/private/pypi/hub_builder.bzl (Ubuntu, `_evaluate_markers()`)

### Is this a regression?

No.

### Description

When pip.default() is called from a non-root Bazel module (a dependency module), it is ignored while building the pip extension config. At the same time, pip.parse() in that dependency module is still processed and can create a hub repo that the consumer can use transitively.

This makes it impossible (or very confusing) for a dependency module to ship a reusable pip.parse() hub that relies on custom platforms defined by that same module’s pip.default().

#### Expected behavior

pip.default() platform definitions from a dependency module are applied at least for that module’s own pip.parse() tags.

#### Actual behavior

- pip.default() from dependency modules is ignored.
- pip.parse() from dependency modules is processed.
- If pip.parse() needs a custom platform, evaluation will fail with an error.
- Workaround today: the root module must re-declare the same platforms in its own pip.default().

## 🔬 Minimal Reproduction

Reproduction repository:

## 🔥 Exception or Error

- MacOS: `The target platform 'cp312.12_plat_a' could not be found in ["cp312.12_linux_x86_64", "cp312.12_linux_aarch64", "cp312.12_osx_aarch64", "cp312.12_osx_x86_64", "cp312.12_windows_x86_64", "cp312.12_windows_aarch64"]`
- Linux: `Error: key "cp312.12_plat_a" not found in dictionary`

## 🌍 Your Environment

### Operating System

```text
MacOS 26.1, Ubuntu 24.04
```

### Output of `bazel version`

```text
7.5.0
```

### Rules_python version

```text
1.7.0
```

### Anything else relevant

None.

## References

None.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Start with python/private/pypi/extension.bzl and its build_config() handling, then trace the related logic in parse_requirements.bzl (_package_srcs() for MacOS) and hub_builder.bzl (_evaluate_markers() for Ubuntu). Use the linked minimal reproduction to verify that a dependency module’s pip.default() platforms apply to its pip.parse() hub without requiring the root module to redeclare them.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
build-system
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.