Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bpo-29576: Improve some deprecations in the importlib #32

Merged
merged 2 commits into from
Feb 16, 2017
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Lib/importlib/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__
Expand Down
25 changes: 19 additions & 6 deletions Lib/importlib/abc.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
except ImportError as exc:
_frozen_importlib_external = _bootstrap_external
import abc
import warnings


def _register(abstract_cls, *classes):
Expand All @@ -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
Expand All @@ -57,11 +60,16 @@ def find_module(self, fullname, path):
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)
Expand Down Expand Up @@ -94,10 +102,15 @@ def find_loader(self, fullname):
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)
Expand Down
6 changes: 6 additions & 0 deletions Lib/test/test_importlib/test_abc.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,9 @@ def test_invalidate_caches(self):
# 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
Expand All @@ -189,6 +192,9 @@ def test_invalidate_caches(self):
# 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
Expand Down