from zope.app.component.metaconfigure import utility from pipelines.interfaces import IPipeline from pipelines.pipeline import Pipeline class pipeline(object): def __init__(self, _context, package, name): self.package = package self.name = name self.filters = [] def filter(self, _context, id, factory=None, component=None): self.filters.append(filter(_context, id, component, factory)) def __call__(self): pipe = Pipeline(self.filters) pipe.__dict__['__name__'] = self.name setattr(self.package, self.name, pipe) # setattr(self.package, pipe.getName(), pipe) # self.package[self.name] = pipe def filter(_context, id, component=None, factory=None): if factory: if component: raise TypeError("Can't specify factory and component.") component = factory() return component