From 06ac157c53046f4fcad34383ef131f773085f3d5 Mon Sep 17 00:00:00 2001 From: Wulian233 <1055917385@qq.com> Date: Wed, 12 Feb 2025 07:59:09 +0800 Subject: [PATCH] gh-125746: Delay deprecated `zipimport.zipimporter.load_module` removal time to 3.15 (#125748) --- Doc/deprecations/pending-removal-in-3.15.rst | 6 ++++++ Doc/deprecations/pending-removal-in-future.rst | 3 --- Doc/library/zipimport.rst | 2 +- Lib/zipimport.py | 9 +++++---- .../2024-10-20-13-01-05.gh-issue-125746.wDLTay.rst | 2 ++ 5 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2024-10-20-13-01-05.gh-issue-125746.wDLTay.rst diff --git a/Doc/deprecations/pending-removal-in-3.15.rst b/Doc/deprecations/pending-removal-in-3.15.rst index e269681593c..92297e15180 100644 --- a/Doc/deprecations/pending-removal-in-3.15.rst +++ b/Doc/deprecations/pending-removal-in-3.15.rst @@ -96,3 +96,9 @@ Pending removal in Python 3.15 and :meth:`~wave.Wave_read.getmarkers` methods of the :class:`~wave.Wave_read` and :class:`~wave.Wave_write` classes have been deprecated since Python 3.13. + +* :mod:`zipimport`: + + * :meth:`~zipimport.zipimporter.load_module` has been deprecated since + Python 3.10. Use :meth:`~zipimport.zipimporter.exec_module` instead. + (Contributed by Jiahao Li in :gh:`125746`.) diff --git a/Doc/deprecations/pending-removal-in-future.rst b/Doc/deprecations/pending-removal-in-future.rst index d8d7ad8c783..42dce518717 100644 --- a/Doc/deprecations/pending-removal-in-future.rst +++ b/Doc/deprecations/pending-removal-in-future.rst @@ -151,6 +151,3 @@ although there is currently no date scheduled for their removal. :class:`~xml.etree.ElementTree.Element` is deprecated. In a future release it will always return ``True``. Prefer explicit ``len(elem)`` or ``elem is not None`` tests instead. - -* :meth:`zipimport.zipimporter.load_module` is deprecated: - use :meth:`~zipimport.zipimporter.exec_module` instead. diff --git a/Doc/library/zipimport.rst b/Doc/library/zipimport.rst index 9353a45bdce..cd76f29a556 100644 --- a/Doc/library/zipimport.rst +++ b/Doc/library/zipimport.rst @@ -148,7 +148,7 @@ zipimporter Objects qualified (dotted) module name. Returns the imported module on success, raises :exc:`ZipImportError` on failure. - .. deprecated:: 3.10 + .. deprecated-removed:: 3.10 3.15 Use :meth:`exec_module` instead. diff --git a/Lib/zipimport.py b/Lib/zipimport.py index e5192c4d074..444c9dd11d8 100644 --- a/Lib/zipimport.py +++ b/Lib/zipimport.py @@ -20,7 +20,6 @@ import _io # for open import marshal # for loads import sys # for modules import time # for mktime -import _warnings # For warn() __all__ = ['ZipImportError', 'zipimporter'] @@ -221,9 +220,11 @@ class zipimporter(_bootstrap_external._LoaderBasics): Deprecated since Python 3.10. Use exec_module() instead. """ - msg = ("zipimport.zipimporter.load_module() is deprecated and slated for " - "removal in Python 3.12; use exec_module() instead") - _warnings.warn(msg, DeprecationWarning) + import warnings + warnings._deprecated("zipimport.zipimporter.load_module", + f"{warnings._DEPRECATED_MSG}; " + "use zipimport.zipimporter.exec_module() instead", + remove=(3, 15)) code, ispackage, modpath = _get_module_code(self, fullname) mod = sys.modules.get(fullname) if mod is None or not isinstance(mod, _module_type): diff --git a/Misc/NEWS.d/next/Library/2024-10-20-13-01-05.gh-issue-125746.wDLTay.rst b/Misc/NEWS.d/next/Library/2024-10-20-13-01-05.gh-issue-125746.wDLTay.rst new file mode 100644 index 00000000000..387d793fd20 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2024-10-20-13-01-05.gh-issue-125746.wDLTay.rst @@ -0,0 +1,2 @@ +Delay deprecated :meth:`zipimport.zipimporter.load_module` removal +time to 3.15. Use :meth:`zipimport.zipimporter.exec_module` instead.