def get_newest_release(package_name, index=None): """Get the newest release version for a package from pypi. """ installer = Installer(index=index) requirement = Requirement.parse(package_name) dist = installer._obtain(requirement) if dist: return dist.version else: return None
def _get_installer(self): from zc.buildout.easy_install import Installer import sys dest = self.buildout['buildout']['eggs-directory'] links = self.buildout['buildout'].get('find-links', '').split() index = self.buildout['buildout'].get('index') always_unzip = None path = [self.buildout['buildout']['develop-eggs-directory']] allow_hosts = ('*', ) newest = True versions = None use_dependency_links = False check_picked = True installer = Installer(dest, links, index, sys.executable, always_unzip, path, newest, versions, use_dependency_links, allow_hosts=allow_hosts, check_picked=check_picked) return installer
class TestStartExtension(TestCase): """Test the start extension. """ def setUp(self): self.buildout_config = { 'buildout': {'versions': 'versions'}, 'versions': {'A-Package': '1.0'}, } self.i = Installer(versions=self.buildout_config['versions']) self.logging = LogCapture('zc.buildout.easy_install') # Run the extension, which includes installing our patches. start(self.buildout_config) # Some other extension, like mr.developer, may run after us # and call 'default_versions' after changing something to the # buildout config versions. We should be fine with that. self.buildout_config['versions']['extra-lower'] = '4.2' self.buildout_config['versions']['ExtraUpper'] = '4.2' default_versions(self.buildout_config['versions']) def tearDown(self): self.logging.uninstall() def _check(self, requirement, expected): parsed_req = tuple(parse_requirements(requirement))[0] result = self.i._constrain(parsed_req) self.failUnless(isinstance(result, Requirement)) compare(expected, str(result)) def test_normal(self): self._check('A-Package', 'A-Package==1.0') self.logging.check() def test_lowercase(self): self._check('a_package', 'a-package==1.0') self.logging.check() def test_uppercase(self): self._check('A_PACKAGE', 'A-PACKAGE==1.0') self.logging.check() def test_sanity(self): # A non-pinned package should still be reported as such. self._check('B_Package', 'B-Package') self.logging.check() def test_extra(self): # A pin added after our extension has run is picked up as well. self._check('extra-lower', 'extra-lower==4.2') self.logging.check() def test_extra_lower(self): # A pin added after our extension has run is not lowercased # though. self._check('ExtraUpper', 'ExtraUpper') self.logging.check()
def setUp(self): self.buildout_config = { 'buildout': {'versions': 'versions'}, 'versions': {'A-Package': '1.0'}, } self.i = Installer(versions=self.buildout_config['versions']) self.logging = LogCapture('zc.buildout.easy_install') # Run the extension, which includes installing our patches. start(self.buildout_config) # Some other extension, like mr.developer, may run after us # and call 'default_versions' after changing something to the # buildout config versions. We should be fine with that. self.buildout_config['versions']['extra-lower'] = '4.2' self.buildout_config['versions']['ExtraUpper'] = '4.2' default_versions(self.buildout_config['versions'])