doit comes from the idea of bringing the power of build-tools to execute any kind of task
Define functions returning python dict with task's meta-data.
Snippet from tutorial:
def task_imports():
"""find imports from a python module"""
for name, module in PKG_MODULES.by_name.items():
yield {
'name': name,
'file_dep': [module.path],
'actions': [(get_imports, (PKG_MODULES, module.path))],
}
def task_dot():
"""generate a graphviz's dot graph from module imports"""
return {
'targets': ['requests.dot'],
'actions': [module_to_dot],
'getargs': {'imports': ('imports', 'modules')},
'clean': True,
}
def task_draw():
"""generate image from a dot file"""
return {
'file_dep': ['requests.dot'],
'targets': ['requests.png'],
'actions': ['dot -Tpng %(dependencies)s -o %(targets)s'],
'clean': True,
}
Run from terminal:
$ doit list
dot generate a graphviz's dot graph from module imports
draw generate image from a dot file
imports find imports from a python module
$ doit
. imports:requests.models
. imports:requests.__init__
. imports:requests.help
(...)
. dot
. draw
- Website & docs - http://pydoit.org
- Project management on github - https://github.com/pydoit/doit
- Discussion group - https://groups.google.com/forum/#!forum/python-doit
- News/twitter - https://twitter.com/py_doit
- Plugins, extensions and projects based on doit - https://github.com/pydoit/doit/wiki/powered-by-doit
The MIT License Copyright (c) 2008-2018 Eduardo Naufel Schettino
see LICENSE file
see AUTHORS file
doit is tested on python 3.4 to 3.6.
The last version supporting python 2 is version 0.29.
$ pip install doit
- cloudpickle
- pyinotify (linux)
- macfsevents (mac)
Tools required for development:
- git * VCS
- py.test * unit-tests
- coverage * code coverage
- sphinx * doc tool
- pyflakes * syntax checker
- doit-py * helper to run dev tasks
The best way to setup an environment to develop doit itself is to create a virtualenv...
doit$ virtualenv dev
(dev)doit$ dev/bin/activate
install doit
as "editable", and add development dependencies from `dev_requirements.txt`:
(dev)doit$ pip install --editable .
(dev)doit$ pip install --requirement dev_requirements.txt
Use py.test - http://pytest.org
$ py.test
doc
folder contains ReST documentation based on Sphinx.
doc$ make html
They are the base for creating the website. The only difference is that the website includes analytics tracking. To create it (after installing doit):
$ doit website
All documentation is spell checked using the task `spell`:
$ doit spell
It is a bit annoying that code snippets and names always fails the check, these words must be added into the file doc/dictionary.txt.
The spell checker currently uses hunspell, to install it on debian based systems install the hunspell package: apt-get install hunspell.
python -m cProfile -o output.pstats `which doit` list
gprof2dot -f pstats output.pstats | dot -Tpng -o output.png
On github create pull requests using a named feature branch.
Become a backer and show your support to our open source project.
Support this project by becoming a sponsor. Your logo will show up here with a link to your website.