PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` import logging import operator import sys import time class Threshold(object): def __init__(self, **kwargs): self.log = logging.getLogger(self.__class__.__name__) self.id = kwargs.get('id') # I renamed 'delay' to 'duration' to indicate that we're not delaying # reporting an exceeded threshold, but instead we're checking if it is # being exceded for a duration of time. self.duration = kwargs.get('delay', 0) # I renamed 'value' to 'limit' to distinguish it from the check value. self.limit = kwargs.get('value', 0) self.operator = kwargs.get('operator', None) self.reported = False # The logging library interferes with cPickle, so we must remove the logger # instance then reset it when we serialize/unserialize. def __getstate__(self): state = dict(self.__dict__) del state['log'] return state def __setstate__(self, state): self.__dict__.update(state) self.log = logging.getLogger(self.__class__.__name__) def limit_exceeded(self, value): if self.operator is None: self.log.debug('Threshold %s is a null threshold', self.id) return None operation = getattr(operator, self.operator) self.log.debug("Testing if value (%.2f) is %s threshold %s's limit (%.2f)", value, self.operator, self.id, self.limit) return operation(value, self.limit)