Releases: ActiveCampaign/postmark-python
Releases · ActiveCampaign/postmark-python
v0.3.0
What's New
Synchronous Client (new in v0.3.0)
SyncServerClient and SyncAccountClient are now available via postmark.sync. Use them in scripts, Flask apps, and Jupyter notebooks — no async/await required. A single background thread with a persistent event loop handles all calls; HTTP connection pooling is retained for performance.
import postmark
with postmark.sync.ServerClient(token) as client:
response = client.outbound.send({...})Other Changes
- Examples reorganized into examples/async/ and examples/sync/ with parallel coverage
- New examples: send_sync_simple.py, send_sync_batch.py
- 31 new tests for sync client behavior (tests/test_sync_client.py)
Full Changelog: v0.2.5...v0.3.0
v0.2.5
What's Changed
- update test workflow for modern python and github actions by @purificant in #3
- chore: upgrade httpx to 0.28.1 by @mulka in #5
New Contributors
- @purificant made their first contribution in #3
- @mulka made their first contribution in #5
Thank you both!
Full Changelog: v0.2.4...v0.2.5
v0.2.4
This is a patch release with one fix for the PyPI project page.
Fixed
The Postmark Python SDK logo was broken on the PyPI project page due to a relative image path in the README. It now uses an absolute URL and renders correctly.
Full changelog: 0.2.3 → 0.2.4
v0.2.0
[0.2.0] - 2026-03-06
Added
User-Agentheader sent on every request in the formatPostmark.PY - {version} (Python/{major}.{minor}.{micro}).X-Request-Idfrom Postmark responses is now stored asrequest_idon allPostmarkAPIExceptionsubclasses and included in the exception__str__output when present — enabling direct support escalations.request_idincluded in structured log records for both successful requests and API errors.- Structured
extra={}fields on all log calls (method,endpoint,status_code,duration_ms,error_code,postmark_message,request_id) for compatibility with Datadog, Splunk, and other log aggregators. duration_mstiming on every request log record (success, error, and timeout).
Changed
- Upgraded
pytest-asyncioto^1.0.0and setasyncio_mode = "auto"to eliminate deprecation warnings on Python 3.12+.