From: Zac Medico Date: Wed, 19 Oct 2011 21:19:09 +0000 (-0700) Subject: Add bindbapi.getfetchsizes() like pordbapi has. X-Git-Tag: v2.2.0_alpha70~24 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=de807d14fb994535f1ea529ecef8de0ee9db4136;p=portage.git Add bindbapi.getfetchsizes() like pordbapi has. --- diff --git a/pym/portage/dbapi/bintree.py b/pym/portage/dbapi/bintree.py index 62fc62354..5c091bd45 100644 --- a/pym/portage/dbapi/bintree.py +++ b/pym/portage/dbapi/bintree.py @@ -177,6 +177,34 @@ class bindbapi(fakedbapi): self.bintree.populate() return fakedbapi.cpv_all(self) + def getfetchsizes(self, pkg): + """ + This will raise MissingSignature if SIZE signature is not available, + or InvalidSignature if SIZE signature is invalid. + """ + + if not self.bintree.populated: + self.bintree.populate() + + pkg = getattr(pkg, 'cpv', pkg) + + filesdict = {} + if not self.bintree.isremote(pkg): + pass + else: + metadata = self.bintree._remotepkgs[pkg] + try: + size = int(metadata["SIZE"]) + except KeyError: + raise portage.exception.MissingSignature("SIZE") + except ValueError: + raise portage.exception.InvalidSignature( + "SIZE: %s" % metadata["SIZE"]) + else: + filesdict[os.path.basename(self.bintree.getname(pkg))] = size + + return filesdict + def _pkgindex_cpv_map_latest_build(pkgindex): """ Given a PackageIndex instance, create a dict of cpv -> metadata map.