congress.datalog.factset module

class congress.datalog.factset.FactSet

Bases: object

Maintains a set of facts, and provides indexing for efficient iteration, given a partial or full match. Expects that all facts are the same width.

add(fact)

Add a fact to the FactSet

Returns True if the fact is absent from this FactSet and adds the fact, otherwise returns False.

create_index(columns)

Create an index

@columns is a tuple of column indicies that index into the facts in self. @columns must be sorted in ascending order, and each column index must be less than the width of a fact in self. If the index exists, do nothing.

find(partial_fact, iterations=None)

Find Facts given a partial fact

@partial_fact is a tuple of pair tuples. The first item in each pair tuple is an index into a fact, and the second item is a value to match again self._facts. Expects the pairs to be sorted by index in ascending order.

@iterations is either an empty list or None. If @iterations is an empty list, then find() will append the number of iterations find() used to compute the return value(this is useful for testing indexing).

Returns matching Facts.

has_index(columns)

Returns True if the index exists.

remove(fact)

Remove a fact from the FactSet

Returns True if the fact is in this FactSet and removes the fact, otherwise returns False.

remove_index(columns)

Remove an index

@columns is a tuple of column indicies that index into the facts in self. @columns must be sorted in ascending order, and each column index must be less than the width of a fact in self. If the index does not exists, raise KeyError.