summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2021-06-24 19:57:55 (GMT)
committerGitHub <noreply@github.com>2021-06-24 19:57:55 (GMT)
commita80a38ee9a7b2e26dba848793cc298d8435fddd5 (patch)
tree23543b6fdfb11076b6db2393cb27701d1bec3dcc /Lib
parent11f1a30cdb59f9da0209798d2057f7afacbd9547 (diff)
downloadcpython-a80a38ee9a7b2e26dba848793cc298d8435fddd5.zip
cpython-a80a38ee9a7b2e26dba848793cc298d8435fddd5.tar.gz
cpython-a80a38ee9a7b2e26dba848793cc298d8435fddd5.tar.bz2
[3.10] bpo-44498: Issue a deprecation warning on asynchat, asyncore and smtpd import (GH-26882) (GH-26904)
* Issue a deprecation warning on smtpd import * Also issue DeprecationWarnings for asynchat and asyncore * Fix some tests * test___all__ requires the word 'module' or 'package' in the deprecation warning text, so add those to smtpd, asynchat, and asyncore. * In test_support, use pprint now instead of asyncore as the landmark. * Add What's New * Use ..deprecated:: * Use ..deprecated:: * Update Lib/smtpd.py Co-authored-by: Miro Hrončok <miro@hroncok.cz> * Update Doc/library/smtpd.rst Co-authored-by: Miro Hrončok <miro@hroncok.cz> * Import async{hat,ore} after the DeprecationWarning for this module Co-authored-by: Miro Hrončok <miro@hroncok.cz> (cherry picked from commit 8488b85c6397fe58f17fc00e047044c959ac0b04) Co-authored-by: Barry Warsaw <barry@python.org> Automerge-Triggered-By: GH:warsaw
Diffstat (limited to 'Lib')
-rw-r--r--Lib/asynchat.py8
-rw-r--r--Lib/asyncore.py7
-rwxr-xr-xLib/smtpd.py15
-rw-r--r--Lib/test/test_support.py4
4 files changed, 30 insertions, 4 deletions
diff --git a/Lib/asynchat.py b/Lib/asynchat.py
index f4ba361..de26ffa 100644
--- a/Lib/asynchat.py
+++ b/Lib/asynchat.py
@@ -48,6 +48,14 @@ you - by calling your self.found_terminator() method.
import asyncore
from collections import deque
+from warnings import warn
+warn(
+ 'The asynchat module is deprecated. '
+ 'The recommended replacement is asyncio',
+ DeprecationWarning,
+ stacklevel=2)
+
+
class async_chat(asyncore.dispatcher):
"""This is an abstract class. You must derive from this class, and add
diff --git a/Lib/asyncore.py b/Lib/asyncore.py
index eeea488..b1eea4b 100644
--- a/Lib/asyncore.py
+++ b/Lib/asyncore.py
@@ -57,6 +57,13 @@ from errno import EALREADY, EINPROGRESS, EWOULDBLOCK, ECONNRESET, EINVAL, \
ENOTCONN, ESHUTDOWN, EISCONN, EBADF, ECONNABORTED, EPIPE, EAGAIN, \
errorcode
+warnings.warn(
+ 'The asyncore module is deprecated. '
+ 'The recommended replacement is asyncio',
+ DeprecationWarning,
+ stacklevel=2)
+
+
_DISCONNECTED = frozenset({ECONNRESET, ENOTCONN, ESHUTDOWN, ECONNABORTED, EPIPE,
EBADF})
diff --git a/Lib/smtpd.py b/Lib/smtpd.py
index 1e2adc8..bc43331 100755
--- a/Lib/smtpd.py
+++ b/Lib/smtpd.py
@@ -83,8 +83,6 @@ import errno
import getopt
import time
import socket
-import asyncore
-import asynchat
import collections
from warnings import warn
from email._header_value_parser import get_addr_spec, get_angle_addr
@@ -94,6 +92,19 @@ __all__ = [
"MailmanProxy",
]
+warn(
+ 'The smtpd module is deprecated and unmaintained. Please see aiosmtpd '
+ '(https://aiosmtpd.readthedocs.io/) for the recommended replacement.',
+ DeprecationWarning,
+ stacklevel=2)
+
+
+# These are imported after the above warning so that users get the correct
+# deprecation warning.
+import asyncore
+import asynchat
+
+
program = sys.argv[0]
__version__ = 'Python SMTP proxy version 0.3'
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 55d78b7..b1d3411 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -292,8 +292,8 @@ class TestSupport(unittest.TestCase):
def test_CleanImport(self):
import importlib
- with import_helper.CleanImport("asyncore"):
- importlib.import_module("asyncore")
+ with import_helper.CleanImport("pprint"):
+ importlib.import_module("pprint")
def test_DirsOnSysPath(self):
with import_helper.DirsOnSysPath('foo', 'bar'):