From c3b2c2d614005462386c3c8b37cc28d89e9aa33e Mon Sep 17 00:00:00 2001 From: Conor Heine Date: Sun, 10 Nov 2024 15:43:40 -0800 Subject: [PATCH] Fix typing errors in older python builds --- anymail/backends/mailtrap.py | 7 ++++++- anymail/webhooks/mailtrap.py | 9 +++++++-- pyproject.toml | 2 ++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/anymail/backends/mailtrap.py b/anymail/backends/mailtrap.py index 35cc6499..0bf82a7a 100644 --- a/anymail/backends/mailtrap.py +++ b/anymail/backends/mailtrap.py @@ -1,5 +1,10 @@ +import sys import warnings -from typing import Any, Literal, NotRequired, TypedDict + +if sys.version_info < (3, 11): + from typing_extensions import Any, Literal, NotRequired, TypedDict +else: + from typing import Any, Literal, NotRequired, TypedDict from ..exceptions import AnymailRequestsAPIError, AnymailWarning from ..message import AnymailMessage, AnymailRecipientStatus diff --git a/anymail/webhooks/mailtrap.py b/anymail/webhooks/mailtrap.py index 2e97ef95..52881580 100644 --- a/anymail/webhooks/mailtrap.py +++ b/anymail/webhooks/mailtrap.py @@ -1,6 +1,11 @@ import json +import sys from datetime import datetime, timezone -from typing import Literal, NotRequired, TypedDict + +if sys.version_info < (3, 11): + from typing_extensions import Any, Literal, NotRequired, TypedDict, Union +else: + from typing import Any, Literal, NotRequired, TypedDict, Union from ..signals import AnymailTrackingEvent, EventType, RejectReason, tracking from .base import AnymailBaseWebhookView @@ -24,7 +29,7 @@ class MailtrapEvent(TypedDict): timestamp: int event_id: str category: NotRequired[str] - custom_variables: NotRequired[dict[str, str | int | float | bool]] + custom_variables: NotRequired[dict[str, Union[str, int, float, bool]]] reason: NotRequired[str] response: NotRequired[str] response_code: NotRequired[int] diff --git a/pyproject.toml b/pyproject.toml index b4f67861..76523c5d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -63,6 +63,7 @@ dependencies = [ "django>=4.0", "requests>=2.4.3", "urllib3>=1.25.0", # requests dependency: fixes RFC 7578 header encoding + "typing_extensions>=4.12", # for older Python compatibility ] [project.optional-dependencies] @@ -74,6 +75,7 @@ brevo = [] mailersend = [] mailgun = [] mailjet = [] +mailtrap = [] mandrill = [] postmark = [] resend = ["svix"]