Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def PipeLine(*args, **kwargs):
- """
- Given an arbitrary number of functions we create a pipeline where the output
- is piped between functions. you can also specify a tuple of arguments that
- should be passed to functions in the pipeline. The first arg is always the
- output of the previous function.
- """
- def wrapper(*data):
- if len(args) == 1:
- if args[-1].__name__ in kwargs:
- otherArgs = data + kwargs[args[-1].__name__]
- return args[-1](*otherArgs)
- else:
- return args[-1](*data)
- else:
- if args[-1].__name__ in kwargs:
- otherArgs = kwargs[args[-1].__name__]
- del kwargs[args[-1].__name__]
- return args[-1](PipeLine(*args[:-1], **kwargs)(*data), *otherArgs)
- else:
- return args[-1](PipeLine(*args[:-1], **kwargs)(*data))
- return wrapper
- def testPipelineWithArgs():
- """
- Test all the major functionality:
- multiple functions, initial arguments
- per function arguments stored in kwargs
- """
- def add1(input_):
- return input_ + 1
- def subX(input_, x):
- return input_ - x
- def stringify(input_):
- return str(input_)
- pipeline = PipeLine(
- add1,
- subX,
- stringify,
- subX=(2,),
- )
- print pipeline(10)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement