diff options
| author | Jason R. Coombs <jaraco@jaraco.com> | 2015-03-28 10:55:05 -0400 |
|---|---|---|
| committer | Jason R. Coombs <jaraco@jaraco.com> | 2015-03-28 10:55:05 -0400 |
| commit | 6bb8f3a708241aed3e64a24e71800dd6742d54df (patch) | |
| tree | ba544d4840ba2d94835d39d93f34bbc732fc34d2 /pkg_resources | |
| parent | f0b26583b2abdfba057dc199d31701497ad894c1 (diff) | |
| parent | e1f0b4019be6efa9c20f0f0dae13009f071ff2a0 (diff) | |
| download | python-setuptools-git-6bb8f3a708241aed3e64a24e71800dd6742d54df.tar.gz | |
Merged in msabramo/setuptools/DistributionNotFound_list_requirers (pull request #126)
DistributionNotFound: Show requirers
Diffstat (limited to 'pkg_resources')
| -rw-r--r-- | pkg_resources/__init__.py | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py index b12ad0e0..a8a16942 100644 --- a/pkg_resources/__init__.py +++ b/pkg_resources/__init__.py @@ -369,6 +369,30 @@ class ContextualVersionConflict(VersionConflict): class DistributionNotFound(ResolutionError): """A requested distribution was not found""" + _template = ("The '{self.req}' distribution was not found " + "and is required by {self.requirers_str}") + + @property + def req(self): + return self.args[0] + + @property + def requirers(self): + return self.args[1] + + @property + def requirers_str(self): + if not self.requirers: + return 'the application' + return ', '.join(self.requirers) + + def report(self): + return self._template.format(**locals()) + + def __str__(self): + return self.report() + + class UnknownExtra(ResolutionError): """Distribution doesn't have an "extra feature" of the given name""" _provider_factories = {} @@ -799,13 +823,8 @@ class WorkingSet(object): ws = WorkingSet([]) dist = best[req.key] = env.best_match(req, ws, installer) if dist is None: - #msg = ("The '%s' distribution was not found on this " - # "system, and is required by this application.") - #raise DistributionNotFound(msg % req) - - # unfortunately, zc.buildout uses a str(err) - # to get the name of the distribution here.. - raise DistributionNotFound(req) + requirers = required_by.get(req, None) + raise DistributionNotFound(req, requirers) to_activate.append(dist) if dist not in req: # Oops, the "best" so far conflicts with a dependency |
