Repository navigation
Handle short destination writes in stream writers - #371
Open
akshitkhokhani wants to merge 1 commit into
Open
akshitkhokhani wants to merge 1 commit into
akshitkhokhani wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Stream writers currently discard the byte count returned by their destination's
write(). A destination accepting a short write silently loses the rest of the output, even though the outer writer reports consuming the input.Retry the unwritten suffix in the C, CFFI and Rust compression/decompression writers, including compression flush. Preserve legacy callback destinations that return
Noneafter consuming the whole chunk. Zero progress raisesBlockingIOError; invalid counts are rejected, and destination exceptions propagate. The documentation states this contract and excludes general nonblocking or post-failure resumability guarantees.copy_stream()is unchanged.Fixes #370.
Validation on macOS ARM64 / CPython 3.13.7, using source-built backends and synthetic local data with network access disabled:
Nonecontrols pass on each.Noneand index-exception controls; no blocking findings remained.git diff --checkpass. Rust changes were formatted with rustfmt. The full project/slow test suites, other Python versions and other operating systems were not run locally.AI assistance was used for implementation, tests and independent review; no maintainer approval is implied.