summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt14
-rw-r--r--pkg_resources/__init__.py22
-rw-r--r--setuptools/command/test.py2
-rw-r--r--setuptools/dist.py2
-rw-r--r--setuptools/tests/test_sdist.py2
5 files changed, 31 insertions, 11 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 9ebfb145..ab93a9c6 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -3,6 +3,20 @@ CHANGES
=======
----
+11.3
+----
+
+* Expose ``EntryPoint.resolve`` in place of EntryPoint._load, implementing the
+ simple, non-requiring load. Deprecated all uses of ``EntryPoint._load``
+ except for calling with no parameters, which is just a shortcut for
+ ``ep.require(); ep.resolve();``.
+
+ Apps currently invoking ``ep.load(require=False)`` should instead do the
+ following if wanting to avoid the deprecating warning::
+
+ getattr(ep, "resolve", lambda: ep.load(require=False))()
+
+----
11.2
----
diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py
index b31ae532..fd8efaa8 100644
--- a/pkg_resources/__init__.py
+++ b/pkg_resources/__init__.py
@@ -2294,19 +2294,25 @@ class EntryPoint(object):
def __repr__(self):
return "EntryPoint.parse(%r)" % str(self)
- def load(self, require=True, env=None, installer=None):
- if require:
- self.require(env, installer)
- else:
+ def load(self, require=True, *args, **kwargs):
+ """
+ Require packages for this EntryPoint, then resolve it.
+ """
+ if not require or args or kwargs:
warnings.warn(
- "`require` parameter is deprecated. Use "
- "EntryPoint._load instead.",
+ "Parameters to load are deprecated. Call .resolve and "
+ ".require separately.",
DeprecationWarning,
stacklevel=2,
)
- return self._load()
+ if require:
+ self.require(*args, **kwargs)
+ return self.resolve()
- def _load(self):
+ def resolve(self):
+ """
+ Resolve the entry point from its module and attrs.
+ """
module = __import__(self.module_name, fromlist=['__name__'], level=0)
try:
return functools.reduce(getattr, self.attrs, module)
diff --git a/setuptools/command/test.py b/setuptools/command/test.py
index 2bf5cb16..42689f70 100644
--- a/setuptools/command/test.py
+++ b/setuptools/command/test.py
@@ -172,4 +172,4 @@ class test(Command):
if val is None:
return
parsed = EntryPoint.parse("x=" + val)
- return parsed._load()()
+ return parsed.resolve()()
diff --git a/setuptools/dist.py b/setuptools/dist.py
index 1917a610..bc29b131 100644
--- a/setuptools/dist.py
+++ b/setuptools/dist.py
@@ -434,7 +434,7 @@ class Distribution(_Distribution):
for ep in pkg_resources.iter_entry_points('distutils.commands'):
if ep.name not in self.cmdclass:
# don't require extras as the commands won't be invoked
- cmdclass = ep._load()
+ cmdclass = ep.resolve()
self.cmdclass[ep.name] = cmdclass
return _Distribution.print_commands(self)
diff --git a/setuptools/tests/test_sdist.py b/setuptools/tests/test_sdist.py
index d3494d7a..9013b505 100644
--- a/setuptools/tests/test_sdist.py
+++ b/setuptools/tests/test_sdist.py
@@ -415,5 +415,5 @@ def test_default_revctrl():
"""
ep_def = 'svn_cvs = setuptools.command.sdist:_default_revctrl'
ep = pkg_resources.EntryPoint.parse(ep_def)
- res = ep._load()
+ res = ep.resolve()
assert hasattr(res, '__iter__')