""" An auto incremeting value (kind of like an AUTO INCREMENT field in SQL). Optionally, the name of the counter to be used is specified (each counter increments separately). Counts start at 1, not 0. """ from collections import defaultdict __all__ = [ 'next', 'reset', 'reset_all', 'counter', ] __counters = defaultdict(int) def next(name=None): __counters[name] += 1 value = __counters[name] return value def reset_all(value=0): for k in __counters: reset(k, value) def reset(name=None, value=0): __counters[name] = value class counter(object): def __init__(self, name): self.name = name def next(self): return next(self.name) def reset(self, value=0): return reset(self.name, value)