]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
bundled zetuptools: prefer platform-specific dists to platform-independent ones....
authordavid-sarah <david-sarah@jacaranda.org>
Wed, 3 Nov 2010 02:47:40 +0000 (18:47 -0800)
committerdavid-sarah <david-sarah@jacaranda.org>
Wed, 3 Nov 2010 02:47:40 +0000 (18:47 -0800)
setuptools-0.6c16dev2.egg/pkg_resources.py

index 9828d8978fc20ed438870eb7f7a5719a7b5574db..00d97225de29b13d793877b2e3e6398ff25d0b05 100644 (file)
@@ -793,19 +793,33 @@ class Environment(object):
         This calls the ``find(req)`` method of the `working_set` to see if a
         suitable distribution is already active.  (This may raise
         ``VersionConflict`` if an unsuitable version of the project is already
-        active in the specified `working_set`.)  If a suitable distribution
-        isn't active, this method returns the newest distribution in the
-        environment that meets the ``Requirement`` in `req`.  If no suitable
-        distribution is found, and `installer` is supplied, then the result of
-        calling the environment's ``obtain(req, installer)`` method will be
-        returned.
+        active in the specified `working_set`.)
+
+        If a suitable distribution isn't active, this method returns the
+        newest platform-dependent distribution in the environment that meets
+        the ``Requirement`` in `req`. If no suitable platform-dependent
+        distribution is found, then the newest platform-independent
+        distribution that meets the requirement is returned. (A platform-
+        dependent distribution will typically have code compiled or
+        specialized for that platform.)
+
+        Otherwise, if `installer` is supplied, then the result of calling the
+        environment's ``obtain(req, installer)`` method will be returned.
         """
         dist = working_set.find(req)
         if dist is not None:
             return dist
+
+        # first try to find a platform-dependent dist
+        for dist in self[req.key]:
+            if dist in req and dist.platform is not None:
+                return dist
+
+        # then try any other dist
         for dist in self[req.key]:
             if dist in req:
                 return dist
+
         return self.obtain(req, installer) # try and download/install
 
     def obtain(self, requirement, installer=None):