PartialStreamSubmissionError
Class: warmhub.PartialStreamSubmissionError
PartialStreamSubmissionError(*, cause: object, completed_operations: Sequence[SubmittedOperation | Mapping[str, Any]], completed_receipts: Sequence[OperationEventReceipt] = (), submission_id: str | None = None, event_request_id: str | None = None, chunk_ordinal: int | None = None, pending_outcome: str | None = None, acknowledged_operation_count: int | None = None, last_acknowledged_repo_seq: int | None = None, attempted_append_outcome: str | None = None, receipt_lookup_attempts: Sequence[ReceiptLookupAttempt] = ())A streamed commit failed after an ambiguous or partial append.
NOT a WarmHubError — see the module docstring. Inspect repository
state before retrying manually: the failed append may have committed
operations not reflected in completed_operations.
completed_operations holds
SubmittedOperation models, matching
operations. The constructor accepts
either decoded models or raw wire rows so callers on both sides of the
stream layer can pass what they already have — but what comes back out is
always a model, because “everything the client returns is a frozen object
with snake_case attributes” has to hold on the two error paths a caller is
most likely to be reading rows on.
receipt_lookup_attempts records what automatic receipt recovery
asked and was told, one frozen entry per attempt, each carrying outcome
(not_found | transient | decode_failed | mismatch |
rejected), error_class and error_code. It is empty when
recovery did not run. Without it “no receipt was recovered” reads the same
whether the receipt is genuinely absent, the lookup itself kept failing, or
a found receipt named a different request — three situations with three
different corrective actions.
Properties and attributes
Section titled “Properties and attributes”code = 'PARTIAL_STREAM_SUBMISSION'Documentation is not yet available.
name = 'WarmHubError'Mirrors TypeScript’s this.name = 'WarmHubError' on this class. It is
load-bearing, not cosmetic: to_warmhub_error reads name, so this
normalizes to code PARTIAL_STREAM_SUBMISSION (not retryable) exactly
as TypeScript does. Dropping it would make is_retryable answer True
for an ambiguous partial submission — the worst possible retry.
message
Section titled “message”message = messageDocumentation is not yet available.
cause = causeDocumentation is not yet available.
completed_operations
Section titled “completed_operations”completed_operations = tuple((row if isinstance(row, SubmittedOperation) else decode_submitted_operation(row)) for row in completed_operations)Operations the SDK confirmed completed before the failing append.
completed_receipts
Section titled “completed_receipts”completed_receipts = tuple(completed_receipts)Documentation is not yet available.
submission_id
Section titled “submission_id”submission_id = submission_idDocumentation is not yet available.
event_request_id
Section titled “event_request_id”event_request_id = event_request_idDocumentation is not yet available.
chunk_ordinal
Section titled “chunk_ordinal”chunk_ordinal = chunk_ordinalDocumentation is not yet available.
pending_outcome
Section titled “pending_outcome”pending_outcome = pending_outcomeDocumentation is not yet available.
acknowledged_operation_count
Section titled “acknowledged_operation_count”acknowledged_operation_count = len(self.completed_operations) if acknowledged_operation_count is None else acknowledged_operation_countDocumentation is not yet available.
last_acknowledged_repo_seq
Section titled “last_acknowledged_repo_seq”last_acknowledged_repo_seq = last_acknowledged_repo_seqDocumentation is not yet available.
attempted_append_outcome
Section titled “attempted_append_outcome”attempted_append_outcome = attempted_append_outcomeDocumentation is not yet available.
receipt_lookup_attempts
Section titled “receipt_lookup_attempts”receipt_lookup_attempts = tuple(receipt_lookup_attempts)Why automatic receipt recovery returned nothing. Empty when it did not run. See the class docstring.