bpo-42611: PEP 594 - Remove asyncore, asynchat, and smptd from stdlib by aeros · Pull Request #23728 · python/cpython

As per PEP 594, this PR removes asyncore, asynchat, and smptd. This includes any documentation, tests, and source code, except for parts that were needed for existing tests. Those were moved to Lib/test/support/<module>, and the essential parts were determined through usage of coverage.py. After I removed test_<module>, I looked to see which members were utilized in the existing tests, and removed any that were not used. I did not do any partial removals though; e.g. specific unused branches within a member that is otherwise used. I also left unused __repr__ for debugging purposes.

For improved communication and convenience to users, importing any of the 3 removed modules after these changes results in the following:

raise ImportError(
    "As of 3.10, <module> has been removed from the standard library, see "
    "PEP 594 for details. An archived (no longer maintained) version exists "
    "at https://github.com/tiran/legacylib"
)

This could potentially be removed in couple versions if needed, but since it imposes no real maintenance burden I think we can leave the custom ImportError indefinitely. The only change would possibly be updating tiran/legacylib to python/legacylib, assuming it is eventually moved there.

https://bugs.python.org/issue42611