Source code for dent.Pager

import time

[docs]class Pager(dict): def __init__(self, size): self.available_indices = set(range(size)) def _remove_oldest(self): oldest = sorted(list(self.items()), key = lambda x: x[1][0])[0][0] self.remove(oldest)
[docs] def remove(self, item): assert item in self self.available_indices.add(self[item]) del self[item]
[docs] def add(self, item): if len(self.available_indices) == 0: self._remove_oldest() index = self.available_indices.pop() self[item] = (time.time(), index) return index
def __getitem__(self, item): assert item in self v = super(Pager,self).__getitem__(item)[1] self[item] = (time.time(),v) return v