def test_comparaison_lt_or_gt(self): """Test strict comparaison between versions """ v1 = Version.parse('2a1') v2 = Version.parse('2b1') self.assertTrue(v1 < v2) self.assertFalse(v1 > v2) self.assertTrue(v2 > v1) self.assertFalse(v2 < v1)
def test_comparaison_latest(self): """Test comparaison with latest version """ v1 = Version.parse('1.0') v2 = Version.parse('9999999999999.0') latest = Version.parse('latest') self.assertTrue(v1 < v2) self.assertTrue(v1 < latest) self.assertTrue(v2 < latest)
def test_comparaison_le_or_ge(self): """Test comparaison beween versions """ v1 = Version.parse('2a1') v2 = Version.parse('2b1') self.assertTrue(v1 <= v2) self.assertFalse(v1 >= v2) self.assertTrue(v2 >= v1) self.assertFalse(v2 <= v1)
def test_comparaison_equality(self): """Test equality comparaison between versions """ v1 = Version.parse('1.2') v2 = Version.parse('1.2') v3 = Version.parse('3.3') self.assertTrue(v1 == v2) self.assertFalse(v1 != v2) self.assertTrue(v1 != v3) self.assertFalse(v1 == v3)
def load(self): egginfo = self.configuration['egginfo'] self.distribution.name = egginfo['name'].as_text() self.distribution.version = Version.parse(egginfo['version'].as_text()) self.distribution.summary = egginfo.get('summary', '').as_text() self.distribution.author = egginfo.get('author', '').as_text() self.distribution.author_email = egginfo.get( 'author_email', '').as_text() self.distribution.license = egginfo.get('license', '').as_text() self.distribution.classifiers = egginfo.get('classifier', '').as_list() self.distribution.format = None self.distribution.pyversion = None self.distribution.platform = None self.distribution.requirements = Requirements.parse( egginfo.get('requires', '').as_list()) self.distribution.extras = {} # Source path of the extension path = os.path.join(self.path, egginfo.get('source', '.').as_text()) if not os.path.isdir(path): raise PackageError(path, 'Invalid source path "%s"' % path) self.distribution.path = os.path.abspath(path) self.distribution.package_path = self.path # Entry points self.distribution.entry_points = {} entry_points = egginfo.get('entry_points', None) if entry_points is not None: for category_name in entry_points.as_list(): info = self.configuration['entry_points:' + category_name] self.distribution.entry_points[category_name] = info.as_dict() return self.distribution
def get(self, requirement, default=None): if self._activated: __status__ = u"Looking version for %s in Known Good Set %s." % ( str(requirement), self.name) if requirement.key in self.versions: self.used.add(requirement.key) return Version.parse(self.versions[requirement.key].version) return default
def __init__(self, context, requirement): self.context = context self.name = requirement.name self.key = requirement.key if (len(requirement.versions) == 1 and requirement.versions[0][0] == operator.eq): self.version = requirement.versions[0][1] else: self.version = Version.parse('latest') self.extras = {} for extra in requirement.extras: self.extras[extra] = Requirements()
def load(self): pkg_info = read_pkg_info(self.egg_info) self.distribution.package_path = self.path self.distribution.name = pkg_info['name'] self.distribution.version = Version.parse(pkg_info['version']) self.distribution.summary = pkg_info.get('summary', '') self.distribution.author = pkg_info.get('author', '') self.distribution.author_email = pkg_info.get('author-email', '') self.distribution.license = pkg_info.get('license', '') self.distribution.classifiers = pkg_info.get('classifier', '') self.distribution.path = os.path.abspath(self.source_path) self.distribution.entry_points = read_pkg_entry_points(self.egg_info) self.distribution.requirements, self.distribution.extras = \ read_pkg_requires(self.egg_info) self.distribution.extensions = read_native_libs(self.egg_info) return self.distribution
def parse_filename(link, **extra): """Parse package information encoded inside a filename. """ info = RELEASE_TARBALL.match(link) if info: try: result = {'name': info.group('name'), 'version': Version.parse(info.group('version')), 'format': info.group('format'), 'pyversion': info.group('pyversion'), 'platform': info.group('platform')} except InvalidVersion: logger.debug( u"Link to '%s' seems to be a package, " u"but can't make sense out of it, ignoring it." % link) return {} result.update(extra) return result return {}
def __init__(self, name=None, version=None, path=None, pyversion=None, platform=None, url=None, format=None, package_path=None): self.name = name self.version = Version.parse(version) self.summary = '' self.author = '' self.author_email = '' self.license = '' self.classifiers = [] self.format = format self.url = url self.pyversion = pyversion self.platform = platform self.path = path self.package_path = package_path or path self.entry_points = {} self.requirements = [] self.extras = {} self.extensions = []
def load(self, distribution, interpretor): distribution.package_path = self.path # Read extracted configuration config = Configuration.read_lines(self.source.splitlines, self.path) setuptool_config = config['setuptools'] distribution.version = Version.parse( setuptool_config['version'].as_text()) # Look for requirements if 'install_requires' in setuptool_config: distribution.requirements = Requirements.parse( setuptool_config['install_requires'].as_list()) if 'extras_require' in setuptool_config: extra_config = config[setuptool_config['extras_require'].as_text()] for extra, extra_requirements in extra_config.items(): distribution.extras[extra] = Requirements.parse( extra_requirements.as_list()) # Look for source directory if 'package_dir' in setuptool_config: package_config = config[ setuptool_config['package_dir'].as_text()] if '_' in package_config: prefix = package_config['_'].as_text() distribution.path = os.path.join(self.path, prefix) if 'description' in setuptool_config: distribution.description = setuptool_config['description'].as_text() if 'license' in setuptool_config: distribution.license = setuptool_config['license'].as_text() if 'author' in setuptool_config: distribution.author = setuptool_config['author'].as_text() if 'autor_email' in setuptool_config: distribution.author_email = \ setuptool_config['author_email'].as_text() if 'ext_modules' in setuptool_config: libraries = self.extensions(prefix, setuptool_config) create_autotools(distribution, prefix, libraries) distribution.extensions = libraries return distribution
def test_parse(self): """Test version parsing """ for version in ['1.2a1', '0.12', '1.10b2']: parsed_version = Version.parse(version) self.assertEqual(str(parsed_version), version) self.assertEqual(str(Version.parse('3.5.0-1')), '3.5-1') self.assertEqual(str(Version.parse('3.5final-1')), '3.5-1') self.assertEqual(str(Version.parse('3.5alpha2')), '3.5a2') self.assertEqual(str(Version.parse('3.5beta1')), '3.5b1') self.assertEqual(str(Version.parse('3.5.post42')), '3.5-42') self.assertEqual(str(Version.parse('1b2.2')), '1.0b2.2') self.assertEqual(str(Version.parse('1.dev')), '1.0dev') self.assertEqual(str(Version.parse('1.0dev')), '1.0dev') self.assertEqual(str(Version.parse('1.0.0dev')), '1.0dev') self.assertEqual(str(Version.parse('10')), '10.0') self.assertEqual(str(Version.parse('latest')), 'latest') self.assertRaises(InvalidVersion, Version.parse, 'lol.best-of-world')
def test_parse_filename(self): """Test installer name parsing """ self.assertEqual( parse_filename('ZODB3-3.9.1a10.tar.gz'), {'name': 'ZODB3', 'format': 'tar.gz', 'pyversion': None, 'platform': None, 'version': Version.parse('3.9.1a10')}) self.assertEqual( parse_filename('setup-0.1dev.tar.gz'), {'name': 'setup', 'format': 'tar.gz', 'pyversion': None, 'platform': None, 'version': Version.parse('0.1dev')}) self.assertEqual( parse_filename('setup-0.1dev-py2.4.tar.gz'), {'name': 'setup', 'format': 'tar.gz', 'pyversion': '2.4', 'platform': None, 'version': Version.parse('0.1dev')}) self.assertEqual( parse_filename('setup-2.0beta1-py2.6.tar.gz'), {'name': 'setup', 'format': 'tar.gz', 'pyversion': '2.6', 'platform': None, 'version': Version.parse('2.0b1')}) self.assertEqual( parse_filename('setup-2.0-py2.6-linux.tar.gz'), {'name': 'setup', 'format': 'tar.gz', 'pyversion': '2.6', 'platform': 'linux', 'version': Version.parse('2.0')}) self.assertEqual( parse_filename('setup-1.0-py2.7-win32.tar.gz'), {'name': 'setup', 'format': 'tar.gz', 'pyversion': '2.7', 'platform': 'win32', 'version': Version.parse('1.0')}) self.assertEqual( parse_filename('setup-1.0a1-py2.7.tgz'), {'name': 'setup', 'format': 'tgz', 'pyversion': '2.7', 'platform': None, 'version': Version.parse('1.0a1')}) self.assertEqual( parse_filename('setup-1.0-py2.7.zip'), {'name': 'setup', 'format': 'zip', 'pyversion': '2.7', 'platform': None, 'version': Version.parse('1.0')}) self.assertEqual( parse_filename('setup-1.0-py2.7-win32.egg'), {'name': 'setup', 'format': 'egg', 'pyversion': '2.7', 'platform': 'win32', 'version': Version.parse('1.0')}) self.assertEqual( parse_filename('setup-1.0-py2.7-win-amd64.egg'), {'name': 'setup', 'format': 'egg', 'pyversion': '2.7', 'platform': 'win-amd64', 'version': Version.parse('1.0')}) self.assertEqual( parse_filename('setup-3.5.0-1.tar.gz'), {'name': 'setup', 'format': 'tar.gz', 'pyversion': None, 'platform': None, 'version': Version.parse('3.5-1')}) self.assertEqual( parse_filename('setup-3.5.0-1-py2.6-mac.tar.gz'), {'name': 'setup', 'format': 'tar.gz', 'pyversion': '2.6', 'platform': 'mac', 'version': Version.parse('3.5-1')}) self.assertEqual( parse_filename('setup-3.5.0-1-py2.6-macosx-10.6-x86_64.tar.gz'), {'name': 'setup', 'format': 'tar.gz', 'pyversion': '2.6', 'platform': 'macosx-10.6-x86_64', 'version': Version.parse('3.5-1')}) self.assertEqual( parse_filename('setuptools-0.6c11-py2.6.egg'), {'name': 'setuptools', 'format': 'egg', 'pyversion': '2.6', 'platform': None, 'version': Version.parse('0.6c11')}) self.assertEqual( parse_filename('elementtree-1.2.7-20070827.zip'), {'name': 'elementtree', 'format': 'zip', 'pyversion': None, 'platform': None, 'version': Version.parse('1.2.7-20070827')}) self.assertEqual( parse_filename('elementtree-1.2.7-20070827-preview.zip'), {'name': 'elementtree', 'format': 'zip', 'pyversion': None, 'platform': None, 'version': Version.parse('1.2.7-20070827-preview')}) self.assertEqual( parse_filename('python-dateutil-1.4.tar.gz'), {'name': 'python-dateutil', 'format': 'tar.gz', 'pyversion': None, 'platform': None, 'version': Version.parse('1.4')}) self.assertEqual( parse_filename('python-dateutil-1.4dev-r42.tar.gz'), {'name': 'python-dateutil', 'format': 'tar.gz', 'pyversion': None, 'platform': None, 'version': Version.parse('1.4dev-r42')}) self.assertEqual( parse_filename('python-dateutil-1.4dev-r42-py2.5.tar.gz'), {'name': 'python-dateutil', 'format': 'tar.gz', 'pyversion': '2.5', 'platform': None, 'version': Version.parse('1.4dev-r42')}) self.assertEqual( parse_filename('python-dateutil-1.4dev-r42-py2.5-win.tar.gz'), {'name': 'python-dateutil', 'format': 'tar.gz', 'pyversion': '2.5', 'platform': 'win', 'version': Version.parse('1.4dev-r42')}) self.assertEqual( parse_filename('python-dateutil-1.4dev-r42-py2.5-win-i386.tar.gz'), {'name': 'python-dateutil', 'format': 'tar.gz', 'pyversion': '2.5', 'platform': 'win-i386', 'version': Version.parse('1.4dev-r42')}) self.assertEqual( parse_filename('five.megrok.z3cform-0.1a1-infrae.tar.gz'), {'name': 'five.megrok.z3cform', 'format': 'tar.gz', 'pyversion': None, 'platform': None, 'version': Version.parse('0.1a1-infrae')}) self.assertEqual( parse_filename('five.megrok.z3cform-0.1a1-infrae-all.tar.gz'), {'name': 'five.megrok.z3cform', 'format': 'tar.gz', 'pyversion': None, 'platform': None, 'version': Version.parse('0.1a1-infrae-all')}) self.assertEqual( parse_filename( 'five.megrok.z3cform-0.1a1-infrae-py2.6-linux.tar.gz'), {'name': 'five.megrok.z3cform', 'format': 'tar.gz', 'pyversion': '2.6', 'platform': 'linux', 'version': Version.parse('0.1a1-infrae')}) self.assertEqual( parse_filename( 'five.megrok.z3cform-0.1a1-ext-all-py2.6-linux.tar.gz'), {'name': 'five.megrok.z3cform', 'format': 'tar.gz', 'pyversion': '2.6', 'platform': 'linux', 'version': Version.parse('0.1a1-ext-all')}) self.assertEqual( parse_filename( 'five.megrok.z3cform-0.1a1-ext-all-py2.6-linux-x86_64.tar.gz'), {'name': 'five.megrok.z3cform', 'format': 'tar.gz', 'pyversion': '2.6', 'platform': 'linux-x86_64', 'version': Version.parse('0.1a1-ext-all')})