class SlidingWindow: """Counts events in the last `span` seconds.""" def __init__(self, span): self.span = span self.events = [] def add(self, at): self.events.append(at) def prune(self, now): cutoff = now - self.span self.events = [e for e in self.events if e > cutoff] def count(self, now): self.prune(now) return len(self.events)