bazel-contrib / bazel-contrib/rules_python

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

Đang mở
#3,476 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Starlark
Star
688
Fork
721
Merge trung bình
15 giờ 7 phút
Pull request đã merge (30 ngày)
76

Mô tả

# 🐞 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.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với python/private/pypi/extension.bzl và phần xử lý build_config(), sau đó lần theo logic liên quan trong parse_requirements.bzl (_package_srcs() cho MacOS) và hub_builder.bzl (_evaluate_markers() cho Ubuntu). Sử dụng bản tái hiện tối thiểu được liên kết để xác minh rằng các nền tảng của pip.default() trong một dependency module được áp dụng cho pip.parse() hub của module đó mà không yêu cầu root module khai báo lại chúng.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
build-system
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.