doit logo

Table Of Contents

Project Links

Sponsors

Your logo here

Sponsor/Donate to doit


Why Donate? Donations will be used to sponsor futher development of the project.

For coorporate donations the logo of your company will be placed on this website side-bar (see above). For more information please contact schettino72@gmail.com



Tools

doit.tools includes some commonly used code. These are not used by the doit core, you can see it as a “standard library”. The functions/class used with uptodate were already introduced in the previous section.

create_folder (action)

Creates a folder if it does not exist yet. Uses os.makedirs() <http://docs.python.org/2/library/os#os.makedirs>_.

from doit.tools import create_folder

BUILD_PATH = "_build"

def task_build():
    return {'actions': [(create_folder, [BUILD_PATH]),
                        'touch %(targets)s'],
            'targets': ["%s/file.o" % BUILD_PATH]
            }

title_with_actions (title)

Return task name task actions from a task. This function can be used as ‘title’ attribute of a task dictionary to provide more detailed information of the action being executed.

from doit.tools import title_with_actions

def task_with_details():
    return {'actions': ['echo abc 123'],
            'title': title_with_actions}

InteractiveAction (action)

An InteractiveAction is like a CmdAction but with the following differences:

  • the output is never captured
  • it is always successful (return code is not used)
  • “swallow” KeyboardInterrupt

This is useful for executing long running process like a web-server.

from doit.tools import InteractiveAction

def task_top():
    cmd = "top"
    return {'actions': [InteractiveAction(cmd)],}

PythonInteractiveAction (action)

Similar to InteractiveAction but for PythonAction.

set_trace

doit by default redirects stdout and stderr. Because of this when you try to use the python debugger with pdb.set_trace, it does not work properly. To make sure you get a proper PDB shell you should use doit.tools.set_trace instead of pdb.set_trace.

def need_to_debug():
    # some code here
    from doit import tools
    tools.set_trace()
    # more code

def task_X():
    return {'actions':[(need_to_debug,)]}