diff options
-rw-r--r-- | category.py | 9 | ||||
-rw-r--r-- | statemachine.py | 4 |
2 files changed, 5 insertions, 8 deletions
diff --git a/category.py b/category.py index c718002..81f26c8 100644 --- a/category.py +++ b/category.py @@ -21,17 +21,14 @@ class Category: self.args = args self.name = name - def equiv(self, other): + def superset_of(self, other): """ - A Category is equivalent to another Category if: - - The other category mandates the same or more arguments - - The intersection of the two is nonempty - Its an odd relationship, brought about to match expected user behavior + Determine if this category is a superset of `other`. """ if self.name != other.name: return False for key, value in self.args.iteritems(): if not other.args.has_key(key): return False - if not other.args[key].intersect(value).nonempty(): return False + if not other.args[key].intersect(value) == other.args[key]: return False return True def subtract(self, other): diff --git a/statemachine.py b/statemachine.py index b8657fa..57d6af5 100644 --- a/statemachine.py +++ b/statemachine.py @@ -89,7 +89,7 @@ class StateMachine: """ retval = [] for cat in self.up: - if dependencies.equiv(cat): + if dependencies.superset_of(cat) and val > 0: retval.append(dependents.fill(cat.args)) return set(retval) | dependents.inverse_set() @@ -99,7 +99,7 @@ class StateMachine: """ retval = [] for (x, y) in self.deps: - if x.equiv(cat): + if x.superset_of(cat): un = cat.intersect(x) retval.append((un, y.fill(un.args))) return retval |