You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Introduce typed download-result and hook compatibility contract #1331
Without this card, Phase 4 would depend on a temporary positional tuple and undefined hook behavior. Stabilizing the contract first prevents repeated API changes and gives legacy hooks a documented migration path.
Update source-resolver download() methods to return it. Implement HookSDistResolver.download() and HookPrebuiltResolver.download() so they no longer raise NotImplementedError, and adapt legacy hook Path results using documented defaults.
Acceptance criteria
Built-in resolvers return DownloadedSource.
HookSDistResolver.download() and HookPrebuiltResolver.download() are implemented and no longer raise NotImplementedError.
Legacy hook Path results remain supported.
Ambiguous artifacts require an explicit DownloadKind.
Activity
feat(sources): replace download tuple with DownloadedSource dataclass
feat(sources): replace download tuple with DownloadedSource dataclass
feat(sources): replace download tuple with DownloadedSource dataclass
smoparth commentedon Oct 21, 2026
Closing this issue as the respective PR got merged.