diff options
author | Casey Dahlin <cdahlin@redhat.com> | 2008-12-23 00:07:49 -0500 |
---|---|---|
committer | Casey Dahlin <cdahlin@redhat.com> | 2008-12-23 00:07:49 -0500 |
commit | 26df5dded6963cee63b2a966bd7e654b35a0d4ce (patch) | |
tree | b91983d9cb95a3acccfd899673bedec226b404a2 | |
parent | b746901eb0eaf46e163ec1a52211f86fdfbc45f1 (diff) | |
download | upstate-26df5dded6963cee63b2a966bd7e654b35a0d4ce.tar.gz upstate-26df5dded6963cee63b2a966bd7e654b35a0d4ce.tar.xz upstate-26df5dded6963cee63b2a966bd7e654b35a0d4ce.zip |
Add inverse_set method to Category
-rw-r--r-- | category.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/category.py b/category.py index 61458dc..3acc16e 100644 --- a/category.py +++ b/category.py @@ -47,6 +47,21 @@ class Category: if args[key].nonempty(): retval.add(Category(self.name, **args)) + def inverse_set(self): + """ + Returns a set of Categories that will match any state NOT matched by + this one (provided it specifies the same or more arguments). + """ + retval = set() + for key, value in self.args.iteritems(): + value = value.complement() + if not value.nonempty(): + continue + newargs = self.args.copy() + newargs[key] = value + retval.add(Category(self.name, **newargs)) + return retval + def intersect(self, other): """ Returns a new category consisting only of states that are in this |