Repository navigation
Preserve accepted update failure diagnostics - #101
Merged
Merged
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.
Change
Addresses #100. Map accepted handler failures to public
UpdateFailed, preserving the Server's failure message, HTTP status, response and workflow/run/update/failure IDs. The exception inherits fromInvalidArgumentso existing catches keep working. Malformed requests, validator rejection and validator infrastructure failures retain their existing types.Prepare patch 2.4.3. This changes client error mapping and introduces no wire, replay or codec change.
Verification
Local Python 3.12 verification passed: 295 error/client/sync tests, Ruff and mypy over all 31 source files. The new sync and async regressions separately passed without warnings. Tests cover useful message fallbacks, missing identities, explicit duplicate requests, preserved legacy catches and validation distinctions.
Source CI passed all supported Python versions, package metadata/smoke, lint, corpus policy and connected Server integration. Python 3.10 passed 2,484 tests with three skips. Python 3.11 and 3.12 each passed 2,485 with two skips. Developer portal checks and public boundary checks passed.
Reviewed exact candidate
805c33f6a37d9c318794536b709f7a1f5f6c84a6: handler failure mapping is below the existing validator/argument-specific branches, raw response is retained, and the public subtype preserves legacy catches. Only the intended eight files changed.Publication and consumers
Published 2.4.3 from merged commit
852981dce65ccb5d1aa4a9050c5d3012cd255cf6. Publication passed exact metadata and supported install verification. Merged-main CI passed. The public errors reference exposes the new class.Sample App #154 is merged at
c3377e18b89ce83838570c81eb4d592200c330e8. Main's live published update experiment passed all nine PHP/Python/Rust directions, replacement recovery, useful failure diagnostics, original identities and failed-request deduplication. Native image qualification passed both architectures. Independent anonymous reads verified both registries and channels atsha256:704c829151389be0477de946c8cd1457193f041992776af45625f6241666aee5. Other SDKs and Server have no runtime dependency on this client-only mapper and need no release. #100 is delivered.