Skip to content

Releases: ActiveCampaign/postmark-python

v0.3.4

Choose a tag to compare

@gregsvo gregsvo released this 29 Jun 16:18

Migrate pyproject.toml package metadata from the legacy [tool.poetry] table to the PEP 621 [project] table. No functional or API changes — the package installs and behaves identically. Passes poetry check --strict.

v0.3.3

Choose a tag to compare

@gregsvo gregsvo released this 24 Jun 19:13

Add PEP 561 py.typed marker so type checkers in downstream projects pick up the package's inline annotations. Syncs Python 3.13/3.14 and Typing :: Typed trove classifiers to match CI.

v0.3.2

Choose a tag to compare

@gregsvo gregsvo released this 15 Jun 21:11

What's Changed

  • chore: update dev tooling and sync pre-commit with dependencies by @purificant in #9

Full Changelog: v0.3.1...v0.3.2

v0.3.1

Choose a tag to compare

@gregsvo gregsvo released this 12 Jun 20:41

What's Changed

  • Gunicorn and Odoo... we got you. Sync wrapper now fork-safe, thanks to @yibudak 's keen eye. #8

New Contributors

Full Changelog: v0.3.0...v0.3.1

v0.3.0

Choose a tag to compare

@gregsvo gregsvo released this 08 Jun 20:42

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

Choose a tag to compare

@gregsvo gregsvo released this 03 Jun 21:00

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

Thank you both!

Full Changelog: v0.2.4...v0.2.5

v0.2.4

Choose a tag to compare

@gregsvo gregsvo released this 16 Apr 20:32

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

Choose a tag to compare

@gregsvo gregsvo released this 06 Mar 21:28

[0.2.0] - 2026-03-06

Added

  • User-Agent header sent on every request in the format Postmark.PY - {version} (Python/{major}.{minor}.{micro}).
  • X-Request-Id from Postmark responses is now stored as request_id on all PostmarkAPIException subclasses and included in the exception __str__ output when present — enabling direct support escalations.
  • request_id included 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_ms timing on every request log record (success, error, and timeout).

Changed

  • Upgraded pytest-asyncio to ^1.0.0 and set asyncio_mode = "auto" to eliminate deprecation warnings on Python 3.12+.