def reqobj_combine(self, reqobj0, reqobj1): if reqobj0.project_name != reqobj1.project_name: raise RuntimeError, \ 'Try to combine reqobj different project %s, %s.' %\ (reqobj0.project_name, reqobj1.project_name) extras = reqobj0.extras for e1 in reqobj1.extras: if e1 not in extras: extras.append(e1) extras = ','.join(extras) if extras: extras = '[%s]' % extras specs = [''.join(s) for s in reqobj0.specs] for s1 in [''.join(s) for s in reqobj1.specs]: if s1 not in specs: specs.append(s1) specs = ','.join(specs) return reqstr2obj('%s%s%s' % (reqobj0.project_name, extras, specs))
def resolve_matchlist(self, logobj, pkgidx_url, skip_logged_ornot): if self.matchlist == []: return prefix = "<a href='"; sep = "/'>"; suffix = "</a><br/>" sockf = urllib2.urlopen(pkgidx_url) ln = sockf.readline() while ln: ln = ln.strip() lnidx = ln.find(sep) if lnidx > 0 and ln.startswith(prefix) and ln.endswith(suffix): s0 = ln[len(prefix):lnidx] s1 = ln[lnidx + len(sep): -len(suffix)] if s0 == s1: # A valid PyPI package name is recognized. for match in self.matchlist: if fnmatch.fnmatch(s0, match): if self.valid_cr.match(s0) is None: logobj.in_except(s0, 'Invalid name') elif skip_logged_ornot and logobj.check_logged(s0): pass else: self.add(reqstr2obj(s0)) break ln = sockf.readline() sockf.close() self.matchlist = []
def append_arg(self, reqarg): if '*' in reqarg or '?' in reqarg: self.matchlist.append(reqarg) else: self.add(reqstr2obj(reqarg))
def check_logged(self, pypi_dirname): if self.log_path is None: return False if not self.check_update(): self.load_from_file() dist = reqstr2obj(pypi_dirname) return dist.project_name in self.pkginfo_map