from metaflow import FlowSpec, step
from functools import wraps

class extra_arg():

    def __init__(self, key="value"):
        self.key = key

    def __call__(self, f):
        @wraps(f)
        def func(s):
    	    return f(s, self.key)
        return func

class FirstFlow(FlowSpec):

    @extra_arg(key="test")
    @step
    def start(self, *extra):
        print('extra', extra)
        self.next(self.end)

    @step
    def end(self):
        pass

if __name__ == '__main__':
    FirstFlow()
