diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2015-01-05 14:21:41 -0500 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2015-01-05 14:21:41 -0500 |
commit | 92a553d3adeb431cdf92b136ac9ccc3f2ef98bf1 (patch) | |
tree | 5fc6312e181a4dea87a02e700b49c065283c7f9a | |
parent | 7fa87f2fbdf84d414e069ca96f6c6d860d7e0505 (diff) | |
download | python-setuptools-git-11.3.tar.gz |
Add EntryPoint.resolve and deprecate most usage of EntryPoint.load. Removed EntryPoint._load.11.3
-rw-r--r-- | CHANGES.txt | 14 | ||||
-rw-r--r-- | pkg_resources/__init__.py | 22 | ||||
-rw-r--r-- | setuptools/command/test.py | 2 | ||||
-rw-r--r-- | setuptools/dist.py | 2 | ||||
-rw-r--r-- | setuptools/tests/test_sdist.py | 2 |
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__') |