aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2015-03-28 10:55:05 -0400
committerJason R. Coombs <jaraco@jaraco.com>2015-03-28 10:55:05 -0400
commit6bb8f3a708241aed3e64a24e71800dd6742d54df (patch)
treeba544d4840ba2d94835d39d93f34bbc732fc34d2
parentf0b26583b2abdfba057dc199d31701497ad894c1 (diff)
parente1f0b4019be6efa9c20f0f0dae13009f071ff2a0 (diff)
downloadexternal_python_setuptools-6bb8f3a708241aed3e64a24e71800dd6742d54df.tar.gz
external_python_setuptools-6bb8f3a708241aed3e64a24e71800dd6742d54df.tar.bz2
external_python_setuptools-6bb8f3a708241aed3e64a24e71800dd6742d54df.zip
Merged in msabramo/setuptools/DistributionNotFound_list_requirers (pull request #126)
DistributionNotFound: Show requirers
-rw-r--r--pkg_resources/__init__.py33
-rwxr-xr-xsetuptools/command/easy_install.py4
2 files changed, 27 insertions, 10 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
diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
index 276b6f99..f2bfa68d 100755
--- a/setuptools/command/easy_install.py
+++ b/setuptools/command/easy_install.py
@@ -709,9 +709,7 @@ class easy_install(Command):
[requirement], self.local_index, self.easy_install
)
except DistributionNotFound as e:
- raise DistutilsError(
- "Could not find required distribution %s" % e.args
- )
+ raise DistutilsError(str(e))
except VersionConflict as e:
raise DistutilsError(e.report())
if self.always_copy or self.always_copy_from: