diff options
author | Matthias Bussonnier <bussonniermatthias@gmail.com> | 2017-02-16 02:00:32 (GMT) |
---|---|---|
committer | Brett Cannon <brettcannon@users.noreply.github.com> | 2017-02-16 02:00:32 (GMT) |
commit | 1d4601c2c6952d03fc4dda2b041be9aa8713c0bc (patch) | |
tree | 0a2192efa8f0275e65a84ebef34fd060e72089c7 | |
parent | 72dccde884d89586b0cafd990675b7e21720a81f (diff) | |
download | cpython-1d4601c2c6952d03fc4dda2b041be9aa8713c0bc.zip cpython-1d4601c2c6952d03fc4dda2b041be9aa8713c0bc.tar.gz cpython-1d4601c2c6952d03fc4dda2b041be9aa8713c0bc.tar.bz2 |
bpo-29576: add explicit deprecation for importlib.abc.find_loader() and find_module() (GH-32)
-rw-r--r-- | Doc/whatsnew/3.7.rst | 11 | ||||
-rw-r--r-- | Lib/importlib/__init__.py | 3 | ||||
-rw-r--r-- | Lib/importlib/abc.py | 25 | ||||
-rw-r--r-- | Lib/test/test_importlib/test_abc.py | 6 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
5 files changed, 41 insertions, 7 deletions
diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst index 81ad4f9..21621c5 100644 --- a/Doc/whatsnew/3.7.rst +++ b/Doc/whatsnew/3.7.rst @@ -140,6 +140,17 @@ Deprecated ``0x03050400`` and ``0x03060000`` (not including) or ``0x03060100`` or higher. (Contributed by Serhiy Storchaka in :issue:`27867`.) +- Methods + :meth:`MetaPathFinder.find_module() <importlib.abc.MetaPathFinder.find_module>` + (replaced by + :meth:`MetaPathFinder.find_spec() <importlib.abc.MetaPathFinder.find_spec>` + ) and + :meth:`PathEntryFinder.find_loader() <importlib.abc.PathEntryFinder.find_loader>` + (replaced by + :meth:`PathEntryFinder.find_spec() <importlib.abc.PathEntryFinder.find_spec>`) + both deprecated in Python 3.4 now emit :exc:`DeprecationWarning`. (Contributed + by Matthias Bussonnier in :issue:`29576`) + Removed ======= diff --git a/Lib/importlib/__init__.py b/Lib/importlib/__init__.py index b6a9f82..f87e20e 100644 --- a/Lib/importlib/__init__.py +++ b/Lib/importlib/__init__.py @@ -79,7 +79,8 @@ def find_loader(name, path=None): This function is deprecated in favor of importlib.util.find_spec(). """ - warnings.warn('Use importlib.util.find_spec() instead.', + warnings.warn('Deprecated since Python 3.4. ' + 'Use importlib.util.find_spec() instead.', DeprecationWarning, stacklevel=2) try: loader = sys.modules[name].__loader__ diff --git a/Lib/importlib/abc.py b/Lib/importlib/abc.py index daff681..661bd76 100644 --- a/Lib/importlib/abc.py +++ b/Lib/importlib/abc.py @@ -13,6 +13,7 @@ try: except ImportError as exc: _frozen_importlib_external = _bootstrap_external import abc +import warnings def _register(abstract_cls, *classes): @@ -34,6 +35,8 @@ class Finder(metaclass=abc.ABCMeta): reimplementations of the import system. Otherwise, finder implementations should derive from the more specific MetaPathFinder or PathEntryFinder ABCs. + + Deprecated since Python 3.3 """ @abc.abstractmethod @@ -57,11 +60,16 @@ class MetaPathFinder(Finder): If no module is found, return None. The fullname is a str and the path is a list of strings or None. - This method is deprecated in favor of finder.find_spec(). If find_spec() - exists then backwards-compatible functionality is provided for this - method. + This method is deprecated since Python 3.4 in favor of + finder.find_spec(). If find_spec() exists then backwards-compatible + functionality is provided for this method. """ + warnings.warn("MetaPathFinder.find_module() is deprecated since Python " + "3.4 in favor of MetaPathFinder.find_spec()" + "(available since 3.4)", + DeprecationWarning, + stacklevel=2) if not hasattr(self, 'find_spec'): return None found = self.find_spec(fullname, path) @@ -94,10 +102,15 @@ class PathEntryFinder(Finder): The portion will be discarded if another path entry finder locates the module as a normal module or package. - This method is deprecated in favor of finder.find_spec(). If find_spec() - is provided than backwards-compatible functionality is provided. - + This method is deprecated since Python 3.4 in favor of + finder.find_spec(). If find_spec() is provided than backwards-compatible + functionality is provided. """ + warnings.warn("PathEntryFinder.find_loader() is deprecated since Python " + "3.4 in favor of PathEntryFinder.find_spec() " + "(available since 3.4)", + DeprecationWarning, + stacklevel=2) if not hasattr(self, 'find_spec'): return None, [] found = self.find_spec(fullname) diff --git a/Lib/test/test_importlib/test_abc.py b/Lib/test/test_importlib/test_abc.py index 4c090f3..db36204 100644 --- a/Lib/test/test_importlib/test_abc.py +++ b/Lib/test/test_importlib/test_abc.py @@ -163,6 +163,9 @@ class MetaPathFinderDefaultsTests(ABCTestHarness): # Calling the method is a no-op. self.ins.invalidate_caches() + def test_find_module_warns(self): + with self.assertWarns(DeprecationWarning): + self.ins.find_module('something', None) (Frozen_MPFDefaultTests, Source_MPFDefaultTests @@ -189,6 +192,9 @@ class PathEntryFinderDefaultsTests(ABCTestHarness): # Should be a no-op. self.ins.invalidate_caches() + def test_find_loader_warns(self): + with self.assertWarns(DeprecationWarning): + self.ins.find_loader('something') (Frozen_PEFDefaultTests, Source_PEFDefaultTests @@ -229,6 +229,9 @@ Extension Modules Library ------- +- bpo-29576: Improve some deprecations in importlib. Some deprecated methods + now emit DeprecationWarnings and have better descriptive messages. + - bpo-29534: Fixed different behaviour of Decimal.from_float() for _decimal and _pydecimal. Thanks Andrew Nester. |