Created
January 24, 2014 15:17
-
-
Save dansimau/8599211 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class DirtyBase(object): | |
def __init__(self, *a, **k): | |
super(DirtyBase, self).__init__(*a, **k) | |
self.dirty = False | |
def __setitem__(self, *a, **k): | |
self.mark_dirty() | |
super(DirtyBase, self).__setitem__(*a, **k) | |
def __delitem__(self, *a, **k): | |
self.mark_dirty() | |
super(DirtyBase, self).__delitem__(*a, **k) | |
def mark_clean(self): | |
self.dirty = False | |
def mark_dirty(self): | |
self.dirty = True | |
class DirtyDict(DirtyBase, dict): | |
def clear(self, *a, **k): | |
self.mark_dirty() | |
super(DirtyDict, self).clear(*a, **k) | |
def pop(self, *a, **k): | |
self.mark_dirty() | |
super(DirtyDict, self).pop(*a, **k) | |
def popitem(self, *a, **k): | |
self.mark_dirty() | |
super(DirtyDict, self).popitem(*a, **k) | |
def setdefault(self, *a, **k): | |
self.mark_dirty() | |
super(DirtyDict, self).setdefault(*a, **k) | |
def update(self, *a, **k): | |
self.mark_dirty() | |
super(DirtyDict, self).update(*a, **k) | |
class DirtyList(DirtyBase, list): | |
def append(self, *a, **k): | |
self.mark_dirty() | |
super(DirtyList, self).append(*a, **k) | |
def extend(self, *a, **k): | |
self.mark_dirty() | |
super(DirtyList, self).extend(*a, **k) | |
def insert(self, *a, **k): | |
self.mark_dirty() | |
super(DirtyList, self).insert(*a, **k) | |
def remove(self, *a, **k): | |
self.mark_dirty() | |
super(DirtyList, self).remove(*a, **k) | |
def pop(self, *a, **k): | |
self.mark_dirty() | |
super(DirtyList, self).pop(*a, **k) | |
def sort(self, *a, **k): | |
self.mark_dirty() | |
super(DirtyList, self).sort(*a, **k) | |
def reverse(self, *a, **k): | |
self.mark_dirty() | |
super(DirtyList, self).reverse(*a, **k) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment