""" Pipeline implementation $Id$ """ from zope.interface import implements from pipelines.interfaces import IPipeline, AbortPipelineException ## add completed, aborted, etc? class PipeState: pass class Pipeline: """ A pipeline is a collection of filters, which are notified in order. """ implements(IPipeline) def __init__(self, filters=()): self._filters = tuple(filters) def __call__(self, data): """ Process our pipeline, allowing each filter to handle 'data'. """ self.processFilters(data) def processFilters(self, data): """ Process our pipeline, allowing each filter to handle 'data'. """ state = PipeState() for filter in self._filters: try: filter(data, state) except AbortPipelineException: break return state