pkg_resources: better error message on bad spec
authorZooko O'Whielacronx <zooko@zooko.com>
Thu, 22 Nov 2012 16:27:28 +0000 (09:27 -0700)
committerDavid-Sarah Hopwood <david-sarah@jacaranda.org>
Thu, 22 Nov 2012 17:09:41 +0000 (17:09 +0000)
Include the text of the offending distribution spec when it is ill-formed.

I got an error message from pkg_resources.py saying that a distribution spec
was ill-formed, because it ended with an '=' and nothing came after the '='.
However, the error message and stack trace didn't tell which distribution spec
it was.

With this patch, it includes the distribution spec itself in the error message.

There is no unit test of this patch, but I did test it manually by inserting a
"raise ValueError('WHATEVER')" into the code and re-running it and observing
that the new output correctly included the distribution

setuptools-0.6c16dev3.egg/pkg_resources.py

index 00d97225de29b13d793877b2e3e6398ff25d0b05..3dbdec14dc385ba35cd3ce41214b2850e19c989f 100644 (file)
@@ -528,11 +528,14 @@ class WorkingSet(object):
         # dist is unsatisfactory, in which case we won't add it.
         if __requires__ is not None:
             for thisreqstr in __requires__:
-                for thisreq in parse_requirements(thisreqstr):
-                    if thisreq.key == dist.key:
-                        if dist not in thisreq:
-                            return
-
+                try:
+                    for thisreq in parse_requirements(thisreqstr):
+                        if thisreq.key == dist.key:
+                            if dist not in thisreq:
+                                return
+                except ValueError, e:
+                    e.args = tuple(e.args + ({'thisreqstr': thisreqstr},))
+                    raise
 
         self.by_key[dist.key] = dist
         if dist.key not in keys: