Need help with doit?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

Global Rank
#76,254
Topics of expertise
task-ru...
quality...
vue-plu...
otf
ttf
static-...
fixture...
deseria...
Location
远方
1.1K Stars 142 Forks MIT License 1.4K Commits 63 Opened issues

Description

task management & automation tool

Services available

!
?

Need anything else?

Contributors list

# 76,254
quality...
Sass
Jupyter...
task-ru...
1109 commits
# 23,886
static-...
css-fra...
Bootstr...
Haskell
12 commits
# 473,682
Python
task-ru...
mutatio...
7 commits
# 4,769
Python
certifi...
Ansible
C#
7 commits
# 36,635
HTML
Jupyter...
Shell
astrono...
6 commits
# 40,481
smali
Less
man-in-...
Azure
5 commits
# 17,804
WPF
WinForm...
Lua
spine
5 commits
# 417,389
CSS
Shell
Jupyter...
HTML
3 commits
# 75,563
Flask
chartin...
gui-fra...
jupyter
3 commits
# 328,283
Node.js
Markdow...
remarkj...
Sass
3 commits
# 63,189
Python
encrypt...
Jupyter...
static-...
3 commits
# 24,167
jupyter
robot-f...
robotfr...
excel
3 commits
# 509,783
Python
Shell
virtual...
pypi
3 commits
# 73,741
dlib
Shell
Android
D
3 commits
# 565,093
Python
task-ru...
3 commits
# 9,389
jupyter
game-fr...
jupyter...
stata
3 commits
# 563,821
Python
task-ru...
3 commits
# 79,720
Python
TeX
freetyp...
opentyp...
2 commits
# 413,963
R
Shell
MATLAB
task-ru...
2 commits
# 72,090
Python
jupyter
python3
socks-p...
2 commits

================

README

.. display some badges

.. image:: https://img.shields.io/pypi/v/doit.svg :target: https://pypi.python.org/pypi/doit

.. image:: https://github.com/pydoit/doit/actions/workflows/ci.yml/badge.svg?branch=master :target: https://github.com/pydoit/doit/actions/workflows/ci.yml?query=branch%3Amaster

.. image:: https://codecov.io/gh/pydoit/doit/branch/master/graph/badge.svg?token=wxKa1h11zn :target: https://codecov.io/gh/pydoit/doit

.. image:: https://xscode.com/assets/promo-banner.svg :target: https://xscode.com/schettino72/doit

.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.4892136.svg :target: https://doi.org/10.5281/zenodo.4892136

doit - automation tool

doit comes from the idea of bringing the power of build-tools to execute any kind of task

doit can be uses as a simple Task Runner allowing you to easily define ad hoc tasks, helping you to organize all your project related tasks in an unified easy-to-use & discoverable way.

doit scales-up with an efficient execution model like a build-tool. doit creates a DAG (direct acyclic graph) and is able to cache task results. It ensures that only required tasks will be executed and in the correct order (aka incremental-builds).

The up-to-date check to cache task results is not restricted to looking for file modification on dependencies. Nor it requires "target" files. So it is also suitable to handle workflows not handled by traditional build-tools.

Tasks' dependencies and creation can be done dynamically during it is execution making it suitable to drive complex workflows and pipelines.

doit is build with a plugin architecture allowing extensible commands, custom output, storage backend and "task loader". It also provides an API allowing users to create new applications/tools leveraging doit functionality like a framework.

doit is a mature project being actively developed for more than 10 years. It includes several extras like: parallel execution, auto execution (watch for file changes), shell tab-completion, DAG visualisation, IPython integration, and more.

Sample Code

Define functions returning python dict with task's meta-data.

Snippet from

tutorial 
_:

.. code:: python

def taskimports(): """find imports from a python module""" for name, module in PKGMODULES.byname.items(): yield { 'name': name, 'filedep': [module.path], 'actions': [(getimports, (PKGMODULES, module.path))], }

def taskdot(): """generate a graphviz's dot graph from module imports""" return { 'targets': ['requests.dot'], 'actions': [moduleto_dot], 'getargs': {'imports': ('imports', 'modules')}, 'clean': True, }

def taskdraw(): """generate image from a dot file""" return { 'filedep': ['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

Project Details

  • 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/pydoit
  • Plugins, extensions and projects based on doit - https://github.com/pydoit/doit/wiki/powered-by-doit

license

The MIT License Copyright (c) 2008-2021 Eduardo Naufel Schettino

see LICENSE file

developers / contributors

see AUTHORS file

install

doit is tested on python 3.6 to 3.10.

The last version supporting python 2 is version 0.29.

.. code:: bash

$ pip install doit

dependencies

  • 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

development setup

The best way to setup an environment to develop doit itself is to create a virtualenv...

.. code:: bash

doit$ virtualenv dev doit$ source dev/bin/activate

install

doit
as "editable", and add development dependencies from
dev_requirements.txt
:

.. code:: bash

(dev) doit$ pip install --editable . (dev) doit$ pip install --requirement dev_requirements.txt

tests

Use py.test - http://pytest.org

.. code:: bash

$ py.test

documentation

doc
folder contains ReST documentation based on Sphinx.

.. code:: bash

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):

.. code:: bash

$ doit website

spell checking

All documentation is spell checked using the task

spell
:

.. code:: bash

$ 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
.

profiling

.. code:: bash

python -m cProfile -o output.pstats

which doit
list

gprof2dot -f pstats output.pstats | dot -Tpng -o output.png

releases

Update version number at:

  • doit/version.py
  • setup.py
  • doc/conf.py
  • doc/index.html

.. code:: bash

python setup.py sdist python setup.py bdist_wheel twine upload dist/doit-X.Y.Z.tar.gz twine upload dist/doit-X.Y.Z-py3-none-any.whl

contributing

On github create pull requests using a named feature branch.

Financial contribution to support maintenance welcome. https://xscode.com/schettino72/doit

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.