'Ensure that distributions matching `requirements` are activated
`requirements` must be a string or a (possibly-nested) sequence
thereof, specifying the distributions and versions required.  The
return value is a sequence of the distributions that needed to be
activated to fulfill the requirements; all relevant distributions are
included, even if they were already activated in this working set.'

def require(self, *requirements):

    needed = self.resolve(parse_requirements(requirements))
    for dist in needed:
        self.add(dist)
    return needed
