import csv from cofollow import consumer from tableformat import create_formatter from ticker import Ticker @consumer def to_csv(target): def producer(): while True: yield line reader = csv.reader(producer()) while True: line = yield target.send(next(reader)) @consumer def create_ticker(target): while True: row = yield target.send(Ticker.from_row(row)) @consumer def negchange(target): while True: record = yield if record.change < 0: target.send(record) @consumer def ticker(fmt, fields): formatter = create_formatter(fmt) formatter.headings(fields) while True: rec = yield row = [getattr(rec, name) for name in fields] formatter.row(row) if __name__ == '__main__': from cofollow import follow follow( 'Data/stocklog.csv', to_csv( create_ticker( negchange( ticker('text', ['name', 'price', 'change']) ) ) ) )