def classSizable(class_): """Monkey the class to be sizable through Five""" # tuck away the original method if necessary if hasattr(class_, "get_size") and not isFiveMethod(class_.get_size): class_.__five_original_get_size = class_.get_size class_.get_size = get_size # remember class for clean up _monkied.append(class_)
def killMonkey(class_, name, fallback, attr=None): """Die monkey, die!""" method = getattr(class_, name, None) if isFiveMethod(method): original = getattr(class_, fallback, None) if original is not None: delattr(class_, fallback) if original is None or isFiveMethod(original): try: delattr(class_, name) except AttributeError: pass else: setattr(class_, name, original) if attr is not None: try: delattr(class_, attr) except (AttributeError, KeyError): pass