1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "django-anymail"
dynamic = ["readme", "version"]
license = {file = "LICENSE"}
authors = [
{name = "Mike Edmunds", email = "medmunds@gmail.com"},
{name = "Anymail Contributors"},
]
description = """\
Django email backends and webhooks for Amazon SES, Brevo,
MailerSend, Mailgun, Mailjet, Mandrill, Postal, Postmark, Resend,
Scaleway TEM, SendGrid, SparkPost, and Unisender Go
(EmailBackend, transactional email tracking and inbound email signals)\
"""
# readme: see tool.hatch.metadata.hooks.custom below
keywords = [
"Django", "email", "email backend", "EmailBackend",
"ESP", "email service provider", "transactional mail",
"email tracking", "inbound email", "webhook",
"Amazon SES", "AWS SES", "Simple Email Service",
"Brevo", "SendinBlue",
"MailerSend",
"Mailgun", "Mailjet", "Sinch",
"Mandrill", "MailChimp",
"Postal",
"Postmark", "ActiveCampaign",
"Resend",
"Scaleway", "Scaleway TEM",
"SendGrid", "Twilio",
"SparkPost", "Bird",
"Unisender Go",
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Programming Language :: Python",
"Programming Language :: Python :: Implementation :: PyPy",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"License :: OSI Approved :: BSD License",
"Topic :: Communications :: Email",
"Topic :: Software Development :: Libraries :: Python Modules",
"Intended Audience :: Developers",
"Framework :: Django",
"Framework :: Django :: 4.0",
"Framework :: Django :: 4.1",
"Framework :: Django :: 4.2",
"Framework :: Django :: 5.0",
"Framework :: Django :: 5.1",
"Framework :: Django :: 5.2",
"Environment :: Web Environment",
]
requires-python = ">=3.8"
dependencies = [
"django>=4.0",
"requests>=2.4.3",
"urllib3>=1.25.0", # requests dependency: fixes RFC 7578 header encoding
]
[project.optional-dependencies]
# ESP-specific additional dependencies.
# (For simplicity, requests is included in the base dependencies.)
# (Do not use underscores in extra names: they get normalized to hyphens.)
amazon-ses = ["boto3>=1.24.6"]
brevo = []
mailersend = []
mailgun = []
mailjet = []
mandrill = []
postal = [
# Postal requires cryptography for verifying webhooks.
# Cryptography's wheels are broken on darwin-arm64 before Python 3.9,
# and unbuildable on PyPy 3.8 due to PyO3 limitations. Since cpython 3.8
# has also passed EOL, just require Python 3.9+ with Postal.
"cryptography; python_version >= '3.9'"
]
postmark = []
resend = ["svix"]
scaleway = []
sendgrid = [
# SendGrid optionally uses cryptography for verifying webhook signatures.
# Cryptography's wheels are broken on darwin-arm64 before Python 3.9,
# and unbuildable on PyPy 3.8 due to PyO3 limitations. Since cpython 3.8
# has also passed EOL, just require Python 3.9+ with SendGrid.
"cryptography; python_version >= '3.9'"
]
sendinblue = []
sparkpost = []
unisender-go = []
[project.urls]
Homepage = "https://github.com/anymail/django-anymail"
Documentation = "https://anymail.dev/en/stable/"
Source = "https://github.com/anymail/django-anymail"
Changelog = "https://anymail.dev/en/stable/changelog/"
Tracker = "https://github.com/anymail/django-anymail/issues"
[tool.hatch.build]
packages = ["anymail"]
# Hatch automatically includes pyproject.toml, LICENSE, and hatch_build.py.
# Help it find the dynamic readme source (otherwise wheel will only build with
# `hatch build`, not with `python -m build`):
#force-include = {"README.rst" = "README.rst"}
[tool.hatch.metadata.hooks.custom]
# Provides dynamic readme
path = "hatch_build.py"
readme = "README.rst"
[tool.hatch.version]
path = "anymail/_version.py"
[tool.black]
force-exclude = '^/tests/test_settings/settings_.*\.py'
target-version = ["py38"]
[tool.doc8]
# for now, Anymail allows longer lines in docs source:
max-line-length = 120
[tool.flake8]
# See .flake8 file in project root
[tool.isort]
combine_as_imports = true
known_first_party = "anymail"
profile = "black"
py_version = "38"
|