def __new__(klass,*criteria): criteria, all = map(ISeededCriterion,criteria), [] nt = criteria[0].node_type for c in criteria: if c.node_type is not nt: raise ValueError("Mismatched dispatch types", criteria) if c.__class__ is klass: # flatten nested criteria all.extend([c for c in c.criteria if c not in all]) elif c not in all: all.append(c) if len(all)==1: return all[0] self = object.__new__(klass) self.node_type = nt AbstractCriterion.__init__(self,frozenset(all)) return self
def __new__(klass, *criteria): criteria, all = list(map(ISeededCriterion, criteria)), [] nt = criteria[0].node_type for c in criteria: if c.node_type is not nt: raise ValueError("Mismatched dispatch types", criteria) if c.__class__ is klass: # flatten nested criteria all.extend([c for c in c.criteria if c not in all]) elif c not in all: all.append(c) if len(all) == 1: return all[0] self = object.__new__(klass) self.node_type = nt AbstractCriterion.__init__(self, frozenset(all)) return self
def __init__(self,truth=True): AbstractCriterion.__init__(self,bool(truth))
def __init__(self, criterion): criterion = ISeededCriterion(criterion) AbstractCriterion.__init__(self,(criterion,)) self.node_type = criterion.node_type
def __init__(self, truth=True): AbstractCriterion.__init__(self, bool(truth))
def __init__(self, criterion): criterion = ISeededCriterion(criterion) AbstractCriterion.__init__(self, (criterion, )) self.node_type = criterion.node_type