From 26df5dded6963cee63b2a966bd7e654b35a0d4ce Mon Sep 17 00:00:00 2001 From: Casey Dahlin Date: Tue, 23 Dec 2008 00:07:49 -0500 Subject: Add inverse_set method to Category --- category.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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 -- cgit