def test_progress(): # make sure progress doesn't raise exception table = (('foo', 'bar', 'baz'), ('a', 1, True), ('b', 2, True), ('b', 3)) nrows(progress(table))
def itersimpleaggregate(table, key, aggregation, value, field): # special case counting if aggregation == len and key is not None: aggregation = lambda g: sum(1 for _ in g) # count length of iterable # special case where length of key is 1 if isinstance(key, (list, tuple)) and len(key) == 1: key = key[0] # determine output header if isinstance(key, (list, tuple)): outhdr = tuple(key) + (field, ) elif callable(key): outhdr = ('key', field) elif key is None: outhdr = field, else: outhdr = (key, field) yield outhdr # generate data if isinstance(key, (list, tuple)): for k, grp in rowgroupby(table, key, value): yield tuple(k) + (aggregation(grp), ) elif key is None: # special case counting if aggregation == len: yield nrows(table), else: yield aggregation(values(table, value)), else: for k, grp in rowgroupby(table, key, value): yield k, aggregation(grp)
def test_nrows(): table = (('foo', 'bar'), ('a', 1), ('b',)) actual = nrows(table) expect = 2 eq_(expect, actual)