Source code for discodo.utils.callbackList

[docs]class CallbackList(list): """A list that has callback when the value is changed.""" CALLBACK_METHOD = [ "append", "extend", "insert", "remove", "pop", "reverse", "clear", ]
[docs] @staticmethod def callback(name, *args): """Override this function to use callback""" ...
def __setitem__(self, index: int, value): self.callback("setItem", index, value) return super().__setitem__(index, value) def __delitem__(self, index: int): self.callback("delItem", index) return super().__delitem__(index) def __iadd__(self, value): self.callback("extend", value) return super().__iadd__(value) def __getattribute__(self, name: str): results = super().__getattribute__(name) if callable(results) and results.__name__ in self.CALLBACK_METHOD: def wrapper(*args): self.callback(name, *args) return results(*args) return wrapper return results