def list_versions(self, name): """ given the name of a package, retruns a sorted list of versions for package `name` found in any repo. """ versions = set() req = Req(name) for spec in self.index.itervalues(): if req.matches(spec): versions.add(spec['version']) return sorted(versions, key=comparable_version)
def list_versions(self, name): """ given the name of a package, retruns a sorted list of versions for package `name` found in any repo. """ versions = set() req = Req(name) for dist in self.groups[req.name]: spec = self.index[dist] if req.matches(spec): versions.add(spec['version']) return sorted(versions, key=comparable_version)
def list_versions(self, name): """ given the name of a package, retruns a sorted list of versions for package `name` found in any repo. """ versions = set() req = Req(name) for dist in self.groups[req.name]: spec = self.index[dist] if req.matches(spec): versions.add(spec['version']) try: return sorted(versions, key=comparable_version) except TypeError: return list(versions)
def data_from_spec(spec): """ Given a spec dictionary, returns a the spec file as a well formed string. Also this function is a reference for meta-data version 1.1 """ str_None = str, type(None) for var, typ in [ ('name', str), ('version', str), ('build', int), ('arch', str_None), ('platform', str_None), ('osdist', str_None), ('python', str_None), ('packages', list)]: assert isinstance(spec[var], typ), spec if isinstance(spec[var], str): s = spec[var] assert s == s.strip(), spec assert s != '', spec assert spec['build'] >= 0, spec cnames = set() for req_string in spec['packages']: r = Req(req_string) assert r.strictness >= 1 cnames.add(r.name) # make sure no project is listed more than once assert len(cnames) == len(spec['packages']) lst = ["""\ metadata_version = '1.1' name = %(name)r version = %(version)r build = %(build)i arch = %(arch)r platform = %(platform)r osdist = %(osdist)r python = %(python)r""" % spec] if spec['packages']: lst.append('packages = [') deps = spec['packages'] for req in sorted(deps, key=string.lower): lst.append(" %r," % req) lst.append(']') else: lst.append('packages = []') lst.append('') return '\n'.join(lst)