bazel-contrib / bazel-contrib/rules_python
Support `uv` as part of `rules_python`
- 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ả
Just creating this as a placeholder for discussions and documenting some thoughts/findings. `rules_uv` is doing its job well and replicating the functionality in `rules_python` would be duplicate effort. However, `rules_uv` does not support `WORKSPACE` installations (at least the [releases] don't advertise such support) and `rules_python` needs to support `WORKSPACE` installations.
[releases]: https://github.com/theoremlp/rules_uv/releases
As a result I see the following options:
1. Do not support `uv`. This has a drawback of longer compilation times with the included `pip-compile` tooling. `uv` is just a binary and could in theory be later reused for common operations with whl packages.
2. Support `uv` only on `bzlmod` by including `rules_uv` as a dependency. This would require us to expose `rules_uv` via `@python_versions` or something similar so that we don't have loads that load `rules_uv` within the main `//python/*.bzl` files to avoid breaking `WORKSPACE` users. However this would not allow us to use it for our own example testing because they should produce the same output with and without bzlmod. Since we cannot dog-food `rules_uv`, it makes it a hard proposition.
3. Write the `WORKSPACE` `deps.bzl` implementation for `rules_uv` so that we can depend on it.
4. Support `uv` by copying/reimplementing the `uv` support as a separate rule/macro whilst not relying on `rules_uv`. The drawback is that we would have to reimplement parts of it, but the benefit would be that the extra tests that we would need to have would be next to the implementation. We could also provide Windows support in this way as `rules_uv` does not support Windows yet due to relying on `bash` scripting for `pip_compile`.
Current status:
- [x] `uv pip compile`, works with custom authentication helpers.
- [x] `uv lock`, works with custom authentication helpers.
- [x] Parse `uv.lock` and support `requirements.txt` feature subset, works with bazel downloader, no sdist support.
- [x] Downloading and customizing downloaded `uv` versions.
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu bằng việc xem lại checklist hiện tại và bốn tùy chọn triển khai, sau đó kiểm tra các entry point //python/*.bzl, hỗ trợ deps.bzl của WORKSPACE, tích hợp bzlmod và các bản phát hành của rules_uv. So sánh cách xử lý hiện tại đối với uv.lock và requirements.txt cũng như các kỳ vọng của example-test. Công việc chưa được coi là hoàn tất cho đến khi dự án chọn một cách tiếp cận và chỉ rõ hành vi bắt buộc của WORKSPACE và bzlmod.
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
- Tính năng
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 30/100