[Python-checkins] gh-68966: Deprecate the mailcap module (#91951)

vstinner webhook-mailer at python.org
Tue Apr 26 16:44:01 EDT 2022


https://github.com/python/cpython/commit/80de0273c0caf8bae19787bb00255eb3fb2a2d0c
commit: 80de0273c0caf8bae19787bb00255eb3fb2a2d0c
branch: main
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2022-04-26T22:43:50+02:00
summary:

gh-68966: Deprecate the mailcap module (#91951)

files:
A Misc/NEWS.d/next/Library/2022-04-26-09-09-07.gh-issue-68966.roapI2.rst
M Doc/library/mailcap.rst
M Doc/library/netdata.rst
M Doc/library/superseded.rst
M Doc/whatsnew/3.11.rst
M Lib/mailcap.py
M Lib/test/test_mailcap.py

diff --git a/Doc/library/mailcap.rst b/Doc/library/mailcap.rst
index 7749b7dd45ef4..416b181f45a77 100644
--- a/Doc/library/mailcap.rst
+++ b/Doc/library/mailcap.rst
@@ -3,9 +3,14 @@
 
 .. module:: mailcap
    :synopsis: Mailcap file handling.
+   :deprecated:
 
 **Source code:** :source:`Lib/mailcap.py`
 
+.. deprecated:: 3.11
+   The :mod:`mailcap` module is deprecated. See :pep:`594` for the rationale
+   and the :mod:`mimetypes` module for an alternative.
+
 --------------
 
 Mailcap files are used to configure how MIME-aware applications such as mail
diff --git a/Doc/library/netdata.rst b/Doc/library/netdata.rst
index 8955e859ab634..1541e2a544459 100644
--- a/Doc/library/netdata.rst
+++ b/Doc/library/netdata.rst
@@ -13,7 +13,6 @@ on the internet.
 
    email.rst
    json.rst
-   mailcap.rst
    mailbox.rst
    mimetypes.rst
    base64.rst
diff --git a/Doc/library/superseded.rst b/Doc/library/superseded.rst
index e3f9b0d37fe10..b38f16691f6ea 100644
--- a/Doc/library/superseded.rst
+++ b/Doc/library/superseded.rst
@@ -20,9 +20,10 @@ backwards compatibility. They have been superseded by other modules.
    crypt.rst
    imghdr.rst
    imp.rst
+   mailcap.rst
    msilib.rst
-   nntplib.rst
    nis.rst
+   nntplib.rst
    optparse.rst
    ossaudiodev.rst
    pipes.rst
diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst
index b812658d5e91e..aa0a51b4375f1 100644
--- a/Doc/whatsnew/3.11.rst
+++ b/Doc/whatsnew/3.11.rst
@@ -1061,6 +1061,7 @@ Deprecated
   * :mod:`chunk`
   * :mod:`crypt`
   * :mod:`imghdr`
+  * :mod:`mailcap`
   * :mod:`msilib`
   * :mod:`nis`
   * :mod:`nntplib`
@@ -1071,7 +1072,8 @@ Deprecated
   * :mod:`sunau`
   * :mod:`telnetlib`
 
-  (Contributed by Brett Cannon in :issue:`47061`.)
+  (Contributed by Brett Cannon in :issue:`47061` and Victor Stinner in
+  :gh:`68966`.)
 
 
 Removed
diff --git a/Lib/mailcap.py b/Lib/mailcap.py
index ae416a8e9fb27..856b6a55475f3 100644
--- a/Lib/mailcap.py
+++ b/Lib/mailcap.py
@@ -6,6 +6,12 @@
 __all__ = ["getcaps","findmatch"]
 
 
+_DEPRECATION_MSG = ('The {name} module is deprecated and will be removed in '
+                    'Python {remove}. See the mimetypes module for an '
+                    'alternative.')
+warnings._deprecated(__name__, _DEPRECATION_MSG, remove=(3, 13))
+
+
 def lineno_sort_key(entry):
     # Sort in ascending order, with unspecified entries at the end
     if 'lineno' in entry:
diff --git a/Lib/test/test_mailcap.py b/Lib/test/test_mailcap.py
index ef9cad498a75c..97a8fac6e074a 100644
--- a/Lib/test/test_mailcap.py
+++ b/Lib/test/test_mailcap.py
@@ -1,10 +1,15 @@
-import mailcap
-import os
 import copy
+import os
+import sys
 import test.support
-from test.support import os_helper
 import unittest
-import sys
+import warnings
+from test.support import os_helper
+from test.support import warnings_helper
+
+
+mailcap = warnings_helper.import_deprecated('mailcap')
+
 
 # Location of mailcap file
 MAILCAPFILE = test.support.findfile("mailcap.txt")
diff --git a/Misc/NEWS.d/next/Library/2022-04-26-09-09-07.gh-issue-68966.roapI2.rst b/Misc/NEWS.d/next/Library/2022-04-26-09-09-07.gh-issue-68966.roapI2.rst
new file mode 100644
index 0000000000000..5c9ffbf09f005
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2022-04-26-09-09-07.gh-issue-68966.roapI2.rst
@@ -0,0 +1,3 @@
+The :mod:`mailcap` module is now deprecated and will be removed in Python 3.13.
+See :pep:`594` for the rationale and the :mod:`mimetypes` module for an
+alternative. Patch by Victor Stinner.



More information about the Python-checkins mailing list