Skip to content

Add support for Poetry platform-specific URL dependencies#210

Open
dududko wants to merge 1 commit intojvolkman:mainfrom
dududko:torch-cpu-multiplatform
Open

Add support for Poetry platform-specific URL dependencies#210
dududko wants to merge 1 commit intojvolkman:mainfrom
dududko:torch-cpu-multiplatform

Conversation

@dududko
Copy link

@dududko dududko commented Dec 18, 2025

This change enables rules_pycross to handle Poetry lock files with platform-specific wheel URLs, such as PyTorch CPU wheels from different indexes for different platforms.

Changes:

  • Handle list-based dependencies in pyproject.toml (platform-specific URLs)
  • Extract source URLs from lock file entries with type = "url"
  • Merge wheel files from packages with same name but different versions (e.g., torch@2.2.2 and torch@2.2.2+cpu) into a single package entry

This allows rules_pycross to select the correct wheel at build time based on the target platform, which is essential for Remote Build Execution (RBE) where different executors may need different platform-specific wheels.

Example pyproject.toml syntax now supported:

  torch = [
    {markers = "sys_platform == 'darwin'", url = "https://.../torch-2.2.2-macosx.whl"},
    {markers = "sys_platform == 'linux'", url = "https://.../torch-2.2.2+cpu-linux.whl"},
  ]

Fixes: #34

This change enables rules_pycross to handle Poetry lock files with
platform-specific wheel URLs, such as PyTorch CPU wheels from different
indexes for different platforms.

Changes:
- Handle list-based dependencies in pyproject.toml (platform-specific URLs)
- Extract source URLs from lock file entries with `type = "url"`
- Merge wheel files from packages with same name but different versions
  (e.g., torch@2.2.2 and torch@2.2.2+cpu) into a single package entry

This allows rules_pycross to select the correct wheel at build time based
on the target platform, which is essential for Remote Build Execution (RBE)
where different executors may need different platform-specific wheels.

Example pyproject.toml syntax now supported:
  torch = [
    {markers = "sys_platform == 'darwin'", url = "https://.../torch-2.2.2-macosx.whl"},
    {markers = "sys_platform == 'linux'", url = "https://.../torch-2.2.2+cpu-linux.whl"},
  ]

Fixes: jvolkman#34
@jvolkman
Copy link
Owner

Thanks @dududko, sorry for the delay.

One question - are you doing anything with the markers string? I didn't see any handling in the change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Poetry pyproject.toml wheel dependencies fails to generate

2 participants