From: Chris Larson Date: Mon, 4 Apr 2011 16:36:10 +0000 (-0700) Subject: persist_data: raise KeyError on missing elements X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a4f62433845c29f98c6a9746d5d2847bf9506ea5;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git persist_data: raise KeyError on missing elements Signed-off-by: Chris Larson --- diff --git a/lib/bb/fetch/__init__.py b/lib/bb/fetch/__init__.py index 4cf78779eec..5be4c9caea3 100644 --- a/lib/bb/fetch/__init__.py +++ b/lib/bb/fetch/__init__.py @@ -757,12 +757,11 @@ class Fetch(object): revs = persist_data.persist('BB_URI_HEADREVS', d) key = self.generate_revision_key(url, ud, d) - rev = revs[key] - if rev != None: - return str(rev) - - revs[key] = rev = self._latest_revision(url, ud, d) - return rev + try: + return revs[key] + except KeyError: + revs[key] = rev = self._latest_revision(url, ud, d) + return rev def sortable_revision(self, url, ud, d): """ @@ -775,13 +774,13 @@ class Fetch(object): key = self.generate_revision_key(url, ud, d) latest_rev = self._build_revision(url, ud, d) - last_rev = localcounts[key + '_rev'] + last_rev = localcounts.get(key + '_rev') uselocalcount = bb.data.getVar("BB_LOCALCOUNT_OVERRIDE", d, True) or False count = None if uselocalcount: count = Fetch.localcount_internal_helper(ud, d) if count is None: - count = localcounts[key + '_count'] + count = localcounts.get(key + '_count') if last_rev == latest_rev: return str(count + "+" + latest_rev) diff --git a/lib/bb/fetch/git.py b/lib/bb/fetch/git.py index 981c494b497..9a51ed1387d 100644 --- a/lib/bb/fetch/git.py +++ b/lib/bb/fetch/git.py @@ -245,18 +245,20 @@ class Git(Fetch): revs = bb.persist_data.persist('BB_URI_HEADREVS', d) key = self.generate_revision_key(url, ud, d, branch=True) - rev = revs[key] - if rev is None: + + try: + return revs[key] + except KeyError: # Compatibility with old key format, no branch included oldkey = self.generate_revision_key(url, ud, d, branch=False) - rev = revs[oldkey] - if rev is not None: - del revs[oldkey] - else: + try: + rev = revs[oldkey] + except KeyError: rev = self._latest_revision(url, ud, d) + else: + del revs[oldkey] revs[key] = rev - - return str(rev) + return rev def sortable_revision(self, url, ud, d): """ diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py index 9768b087b27..9cfa3de9830 100644 --- a/lib/bb/fetch2/__init__.py +++ b/lib/bb/fetch2/__init__.py @@ -804,12 +804,11 @@ class FetchMethod(object): revs = bb.persist_data.persist('BB_URI_HEADREVS', d) key = self.generate_revision_key(url, ud, d, name) - rev = revs[key] - if rev != None: - return str(rev) - - revs[key] = rev = self._latest_revision(url, ud, d, name) - return rev + try: + return revs[key] + except KeyError: + revs[key] = rev = self._latest_revision(url, ud, d, name) + return rev def sortable_revision(self, url, ud, d, name): """ @@ -822,13 +821,13 @@ class FetchMethod(object): key = self.generate_revision_key(url, ud, d, name) latest_rev = self._build_revision(url, ud, d, name) - last_rev = localcounts[key + '_rev'] + last_rev = localcounts.get(key + '_rev') uselocalcount = bb.data.getVar("BB_LOCALCOUNT_OVERRIDE", d, True) or False count = None if uselocalcount: count = FetchMethod.localcount_internal_helper(ud, d, name) if count is None: - count = localcounts[key + '_count'] or "0" + count = localcounts.get(key + '_count') or "0" if last_rev == latest_rev: return str(count + "+" + latest_rev) diff --git a/lib/bb/persist_data.py b/lib/bb/persist_data.py index 38ad354900d..81f0845dda1 100644 --- a/lib/bb/persist_data.py +++ b/lib/bb/persist_data.py @@ -60,8 +60,11 @@ class SQLTable(collections.MutableMapping): self.table, [key]) for row in data: return row[1] + raise KeyError(key) def __delitem__(self, key): + if key not in self: + raise KeyError(key) self._execute("DELETE from %s where key=?;" % self.table, [key]) def __setitem__(self, key, value):