09bdb8aaad
* feat(python-sdk): add webhook verification and event handling Add webhook support to the Python SDK matching the JS SDK implementation: - Add Webhooks class with verify() and construct_event() methods - Implement HMAC-SHA256 signature verification with timing-safe comparison - Add timestamp validation with configurable tolerance (default 5 minutes) - Add comprehensive webhook event types (18 events: email, contact, domain, test) - Add WebhookVerificationError with typed error codes - Export webhook constants (headers) and types * fix(python-sdk): harden webhook parsing and typing Normalize invalid UTF-8 webhook payloads to INVALID_BODY errors so verify() safely returns false, and narrow base email webhook event types to avoid discriminated-union overlap. Add regression tests for both paths. * chore(python-sdk): bump package version to 0.2.9 * feat(python-sdk): add local webhook test example project Add a runnable Flask receiver and signed webhook sender under packages/python-sdk/example, and link it from the Python SDK README for local verification. --------- Co-authored-by: Claude <noreply@anthropic.com>
21 lines
445 B
TOML
21 lines
445 B
TOML
[tool.poetry]
|
|
name = "usesend"
|
|
version = "0.2.9"
|
|
description = "Python SDK for the UseSend API"
|
|
authors = ["UseSend"]
|
|
license = "MIT"
|
|
readme = "README.md"
|
|
packages = [{ include = "usesend" }]
|
|
include = ["usesend/py.typed"]
|
|
|
|
[tool.poetry.dependencies]
|
|
python = ">=3.8,<4.0"
|
|
requests = "^2.32.0"
|
|
typing_extensions = ">=4.7"
|
|
|
|
[tool.poetry.group.dev.dependencies]
|
|
|
|
[build-system]
|
|
requires = ["poetry-core"]
|
|
build-backend = "poetry.core.masonry.api"
|