> > I took a look at dolt syntax, and saw this: > > QQQ > > def create_folder(path): > """Create folder given by "path" if it doesnt exist""" > if not os.path.exists(path): > os.mkdir(path) > return True > > def task_create_build_folder(): > buildFolder = jsPath + "build" > return {'action':create_folder, > 'args': (buildFolder,) > } > > QQQ > > Wouldn't it be more convenient to provide syntax like this: > > @task("create_build_folder") > @depend("dep1 some_other_dep") > def buildf(): > buildFolder = jsPath + "build" > create_folder(buildFolder) > > I find the doit syntax a bit cumbersome, especially as you can avoid > 'args' by just returning a lamda in 'action'.
My idea was to: do *not* add any new syntax (to avoid being cumbersome). It is just python, you dont have to import or subclass anything. You just need to create a function that returns a dictionary with some predefined keys. I though about using decorators in the beginning... but returning a dictionary looked easier to implement and more flexible. one important feature is how easy to define a group of task with the same action. Take a look at the example below on running pychecker in all python files from a folder. I couldnt figure out an easy way of doing it with decorators. import glob; pyFiles = glob.glob('*.py') def task_checker(): for f in pyFiles: yield {'action': "pychecker %s"% f, 'name':f, 'dependencies':(f,)} Another advantage of using just a dictionary to define a task is that it will be easy to read tasks from a text file (if it is very simple and you dont need to write any python script). but not implemented yet. I though about using decorator for simple python-tasks but in a different way: @task def create_folder(path): """Create folder given by "path" if it doesnt exist""" if not os.path.exists(path): os.mkdir(path) return True so if your python function is a task and you will use it only once you dont need to define a function for the 'action' and another function to create the task. but not implement yet also. > > I've looked around a bit for python "make" replacement, but there does > not seem to be a simple & straightforward solution around (read - > straight-python syntax, one .py file installation, friendly license). apart from one .py file installation (easy_install is not enough?) thats what i am trying to do. thanks for the feedback. cheers, Eduardo -- http://mail.python.org/mailman/listinfo/python-list