Add a FileDigest type to differentiate file APIs from directory APIs #10900
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
Two codepaths in our
@rule
API use aDigest
for a file rather than a directory, and this can cause confusion, since using aDigest
of the wrong type will trigger a failure to lookup a digest in storage. More generally, our Python API has so far been more typesafe than our Rust API with regard toDigest
s: fairly consistently using them to representDirectory
s.Solution
Introduce
FileDigest
, and use it in the two relevant locations:DownloadFile
takes theFileDigest
for the file being downloaded.single_file_digests_to_bytes
takesFileDigests
returned inworkunits.artifacts
(see Fix retrieval of bytes from artifacts in StreamingWorkunitHandler #10698).Result
Improved type safety and clarity. Fixes #10898.
[ci skip-build-wheels]