bundled zetuptools: prefer platform-specific dists to platform-independent ones. refs #1233

This commit is contained in:
david-sarah 2010-11-02 18:47:40 -08:00
parent f606ce068b
commit a1cef915fd

View 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):