def latests_by_hash_from_history_by_gpath(history_by_gpath): latests_by_hash = {} for history in history_by_gpath.itervalues(): latest = history.latest if latest.hash: setdefault(latests_by_hash, latest.hash, set).add(latest) return latests_by_hash
def entries_by_hash_from_history_by_gpath(history_by_gpath): entries_by_hash = {} for history in history_by_gpath.itervalues(): for entry in history: if entry.hash: setdefault(entries_by_hash, entry.hash, set).add(entry) return entries_by_hash
def read_entries(self, peerid): cached = setdefault(self.cache_by_peerid, peerid, lambda: \ HistoryCache(list(self.select_entries(peerid)))) # copy list for thread safety return list(cached.entries)