X-Git-Url: https://git.madduck.net/etc/taskwarrior.git/blobdiff_plain/6afb8eb5f0f9c3d6ccddce158ec5a4dbec19c3b4..76ef07d9a8863b337a7aca651842f094472f867f:/tasklib/lazy.py diff --git a/tasklib/lazy.py b/tasklib/lazy.py index b26f964..1e13fc3 100644 --- a/tasklib/lazy.py +++ b/tasklib/lazy.py @@ -29,7 +29,7 @@ class LazyUUIDTask(object): # Getattr is called only if the attribute could not be found using # normal means self.replace() - return self.name + return getattr(self, name) def __eq__(self, other): if other['uuid']: @@ -83,7 +83,7 @@ class LazyUUIDTaskSet(object): raise AttributeError else: self.replace() - return self.name + return getattr(self, name) def __repr__(self): return "LazyUUIDTaskSet([{0}])".format(', '.join(self._uuids)) @@ -91,6 +91,9 @@ class LazyUUIDTaskSet(object): def __eq__(self, other): return set(t['uuid'] for t in other) == self._uuids + def __ne__(self, other): + return not (self == other) + def __contains__(self, task): return task['uuid'] in self._uuids @@ -101,6 +104,60 @@ class LazyUUIDTaskSet(object): for uuid in self._uuids: yield LazyUUIDTask(self._tw, uuid) + def __sub__(self, other): + return LazyUUIDTaskSet(self._tw, + self._uuids - set(t['uuid'] for t in other)) + + def issubset(self, other): + return all([task in other for task in self]) + + def issuperset(self, other): + return all([task in self for task in other]) + + def union(self, other): + return LazyUUIDTaskSet(self._tw, + self._uuids | set(t['uuid'] for t in other)) + + def intersection(self, other): + return LazyUUIDTaskSet(self._tw, + self._uuids & set(t['uuid'] for t in other)) + + def difference(self, other): + return LazyUUIDTaskSet(self._tw, + self._uuids - set(t['uuid'] for t in other)) + + def symmetric_difference(self, other): + return LazyUUIDTaskSet(self._tw, + self._uuids ^ set(t['uuid'] for t in other)) + + def update(self, other): + self._uuids |= set(t['uuid'] for t in other) + return self + + def intersection_update(self, other): + self._uuids &= set(t['uuid'] for t in other) + return self + + def difference_update(self, other): + self._uuids -= set(t['uuid'] for t in other) + return self + + def symmetric_difference_update(self, other): + self._uuids ^= set(t['uuid'] for t in other) + return self + + def add(self, task): + self._uuids.add(task['uuid']) + + def remove(self, task): + self._uuids.remove(task['uuid']) + + def pop(self): + return self._uuids.pop() + + def clear(self): + self._uuids.clear() + def replace(self): """ Performs conversion to the regular TaskQuerySet object, referenced by