Skip to content

Tags: BabelQueue/babelqueue-python

Tags

v1.13.0

Toggle v1.13.0's commit message
feat(gdpr): runtime field encryption for x-gdpr-sensitive — Python co…

…re (ADR-0030)

The SDK-enforcement half of GDPR governance (mirrors the Go reference). New
babelqueue.gdpr module: a caller-bound Cipher Protocol (encrypt/decrypt onto
KMS/Vault) + protect/unprotect helpers that encrypt/decrypt exactly the schema's
x-gdpr-sensitive leaves in place (nested + array + root), byte-for-byte round-trip,
wrong key -> DecryptError. schema.sensitive_paths() parses x-gdpr-sensitive
(validation-neutral). data stays pure JSON (ciphertext string) so the envelope is
frozen (GR-1, schema_version 1, trace_id preserved). Python stdlib has no AES-GCM
-> the core ships no concrete cipher and pulls no crypto dep (GR-7); the AES-256-GCM
reference is the optional babelqueue[gdpr] extra. Opt-in; schema validation on
cleartext. v1.13.0.

v1.12.0

Toggle v1.12.0's commit message
feat(outbox): transactional outbox helper — Python core (ADR-0029)

Ports the producer-side transactional outbox as babelqueue.outbox: Outbox.write
encodes the frozen envelope and persists it via a caller-bound OutboxStore inside
the caller's own DB transaction (no dual-write), and OutboxRelay.flush/drain
forwards stored rows verbatim through the transport — mark_published only after
publish returns, a raising publish -> mark_failed + linear backoff (row stays
pending), one poison row never blocks the batch. At-least-once handoff; consumers
dedupe on meta.id (the Idempotent mirror). Frozen bytes ride verbatim (GR-1/4/5);
OutboxStore is a Protocol so the core stays stdlib-only (GR-7). v1.12.0.

v1.11.0

Toggle v1.11.0's commit message
feat(otel): W3C traceparent transport-header propagation — Python SDK…

… (ADR-0028)

Mirrors the Go reference: a dependency-free header seam (publish_with_headers +
headers_from_context surfacing a delivered message's headers) and W3C traceparent
inject/extract in otel.py (consumer span becomes a child of the producer's remote
parent; no header falls back to the v0.1 trace_id behaviour). Per-transport
carriers: Redis __bq_frame (bare-value back-compat), AMQP header table, SQS
MessageAttributes, in-memory reference. Envelope frozen (GR-1), otel stays the
[otel] extra (GR-7), trace_id preserved (GR-4). Also bump to 1.11.0 and reconcile
the drifted __version__ (was 1.6.0) to the package version.

v1.10.0

Toggle v1.10.0's commit message
feat(replay): Replay-Bypass guard — skip external side-effects on a d…

…eliberate replay (ADR-0027) (#4)

* feat(replay): Replay-Bypass guard — skip external side-effects on a deliberate replay (ADR-0027)

Parity with the Go reference: ReceivedMessage headers + HeaderPublisher,
Redrive Bypass option stamping bq-replay-bypass, and is_replay /
bypass_external_effects helpers. 160 tests pass.

* chore(release): v1.10.0

---------

v1.9.0

Toggle v1.9.0's commit message
chore(release): v1.9.0

v1.8.0

Toggle v1.8.0's commit message
chore(release): v1.8.0

v1.7.0

Toggle v1.7.0's commit message
chore(release): v1.7.0

v1.6.0

Toggle v1.6.0's commit message
babelqueue 1.6.0 — Redis/Laravel reservation parity (shared reliable-…

…queue) + version reconcile

v1.5.0

Toggle v1.5.0's commit message
babelqueue 1.5.0 — Apache ActiveMQ Artemis transport (AMQP 1.0, §7)

v1.4.0

Toggle v1.4.0's commit message
test(kafka): add the §6 conformance runner