diff --git a/.gitignore b/.gitignore index 4120a67f..52207973 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ prof/ .pytype/ ~temp* *.sw[a-p] +pyvenv.cfg diff --git a/DESCRIPTION.rst b/DESCRIPTION.rst index caa9e7a7..c41fb1da 100644 --- a/DESCRIPTION.rst +++ b/DESCRIPTION.rst @@ -45,7 +45,7 @@ This is a server for SMTP and related MTA protocols, similar in utility to the standard library's |smtpd.py|_ module, -but rewritten to be based on ``asyncio`` for Python 3.6+. +but rewritten to be based on ``asyncio`` for Python 3.7+. Please visit the `Project Homepage`_ for more information. diff --git a/MANIFEST.in b/MANIFEST.in index c1397cf5..b7a588e1 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,3 @@ graft aiosmtpd include LICENSE NOTICE *.cfg *.ini *.py *.rst *.yml *.toml -global-exclude *.py[oc] *.sw[a-p] +global-exclude *.py[oc] *.sw[a-p] pyvenv.cfg diff --git a/README.rst b/README.rst index 2c1bab7d..48a753c7 100644 --- a/README.rst +++ b/README.rst @@ -55,13 +55,13 @@ Full documentation is available on |aiosmtpd rtd|_ Requirements ============ -You need **at least Python 3.6** to use this library. +You need **at least Python 3.7** to use this library. Supported Platforms ----------------------- -``aiosmtpd`` has been tested on **CPython** and |PyPy3.7|_ +``aiosmtpd`` has been tested on **CPython**>=3.7 and |PyPy|_>=3.7 for the following platforms (in alphabetical order): * Cygwin (on Windows 10) [1] @@ -69,6 +69,7 @@ for the following platforms (in alphabetical order): * OpenSUSE Leap 15 [2] * Ubuntu 18.04 * Ubuntu 20.04 +* Ubuntu 22.04 * Windows 10 | [1] Supported only with Cygwin-provided CPython versions @@ -77,8 +78,8 @@ for the following platforms (in alphabetical order): ``aiosmtpd`` *probably* can run on platforms not listed above, but we cannot provide support for unlisted platforms. -.. |PyPy3.7| replace:: **PyPy3.7** -.. _`PyPy3.7`: https://www.pypy.org/ +.. |PyPy| replace:: **PyPy** +.. _`PyPy`: https://www.pypy.org/ Installation @@ -175,7 +176,7 @@ In general, the ``-e`` parameter to tox specifies one (or more) **testenv** to run (separate using comma if more than one testenv). The following testenvs have been configured and tested: -* ``{py36,py37,py38,py39,pypy3}-{nocov,cov,diffcov,profile}`` +* ``{py37,py38,py39,py310,py311,pypy3}-{nocov,cov,diffcov,profile}`` Specifies the interpreter to run and the kind of testing to perform. diff --git a/aiosmtpd/__init__.py b/aiosmtpd/__init__.py index fc683476..63a070cd 100644 --- a/aiosmtpd/__init__.py +++ b/aiosmtpd/__init__.py @@ -1,4 +1,4 @@ # Copyright 2014-2021 The aiosmtpd Developers # SPDX-License-Identifier: Apache-2.0 -__version__ = "1.4.3.dev0" +__version__ = "1.4.3rc1" diff --git a/aiosmtpd/docs/NEWS.rst b/aiosmtpd/docs/NEWS.rst index eea911da..3dece748 100644 --- a/aiosmtpd/docs/NEWS.rst +++ b/aiosmtpd/docs/NEWS.rst @@ -16,6 +16,20 @@ Fixed/Improved * A whole bunch of annotations +1.4.3 (2022-12-16) +================== + +Fixed/Improved +-------------- +* Add compatibility for Python 3.10 and 3.11 (Closes #322) +* Test matrix update (Closes #306) + + * Drop Python 3.6, PyPy 3.6 (some) and MacOS 10 + * Add Python 3.10 & 3.11, PyPy 3.7 & 3.8, Ubuntu 22.04, MacOS 11 & 12 + +* Longer AUTOSTOP_DELAY especially for Windows (Closes #313) + + 1.4.2 (2021-03-08) ===================== diff --git a/aiosmtpd/docs/controller.rst b/aiosmtpd/docs/controller.rst index e43720bd..c1edc13d 100644 --- a/aiosmtpd/docs/controller.rst +++ b/aiosmtpd/docs/controller.rst @@ -21,6 +21,12 @@ In both cases, you need to pass a :ref:`handler ` to the ``SMTP`` constructor. Handlers respond to events that you care about during the SMTP dialog. +.. important:: + + Consider running the controller in a separate Python process (e.g., using the + :mod:`multiprocessing` module) if you don't want your main Python process to be + blocked when aiosmtpd is handling extra-large emails. + Using the controller ==================== diff --git a/setup.cfg b/setup.cfg index e5409bdd..c4fe49c1 100644 --- a/setup.cfg +++ b/setup.cfg @@ -21,7 +21,6 @@ classifiers = Operating System :: POSIX :: BSD :: FreeBSD Operating System :: POSIX :: Linux Programming Language :: Python :: 3 :: Only - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -34,7 +33,7 @@ classifiers = [options] zip_safe = false -python_requires = ~=3.6 +python_requires = ~=3.7 packages = find: include_package_data = true install_requires = diff --git a/tox.ini b/tox.ini index ae30ade7..423a1ed9 100644 --- a/tox.ini +++ b/tox.ini @@ -1,12 +1,11 @@ [tox] minversion = 3.9.0 -envlist = qa, static, docs, py{36,37,38,39,py3}-{nocov,cov,diffcov} +envlist = qa, static, docs, py{37,38,39,py3}-{nocov,cov,diffcov} skip_missing_interpreters = True [testenv] # One virtualenv per Python version envdir = - py36: {toxworkdir}/3.6 py37: {toxworkdir}/3.7 py38: {toxworkdir}/3.8 py39: {toxworkdir}/3.9 @@ -45,11 +44,11 @@ deps = setenv = cov: COVERAGE_FILE={toxinidir}/_dump/.coverage nocov: PYTHONASYNCIODEBUG=1 - py36: INTERP=py36 py37: INTERP=py37 py38: INTERP=py38 py39: INTERP=py39 py310: INTERP=py310 + py311: INTERP=py311 pypy3: INTERP=pypy3 py: INTERP=py passenv = @@ -110,14 +109,16 @@ commands = python -m flake8 aiosmtpd setup.py housekeep.py release.py check-manifest -v pytest -v --tb=short aiosmtpd/qa - pytype --keep-going --jobs auto . + # Disabled for now because pytype blows up in Windows + #pytype --keep-going --jobs auto . deps = colorama flake8>=5.0.4 {[flake8_plugins]deps} pytest check-manifest - pytype + # Disabled for now because pytype blows up in Windows + #pytype [testenv:docs] basepython = python3