doit

task management & automation tool

Github stars Tracking Chart

================
README

.. display some badges

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

.. image:: https://travis-ci.org/pydoit/doit.png?branch=master
:target: https://travis-ci.org/pydoit/doit

.. image:: https://ci.appveyor.com/api/projects/status/f7f97iywo8y7fe4d/branch/master?svg=true
:target: https://ci.appveyor.com/project/schettino72/doit/branch/master

.. image:: https://coveralls.io/repos/pydoit/doit/badge.png?branch=master
:target: https://coveralls.io/r/pydoit/doit?branch=master

.. image:: https://badges.gitter.im/Join%20Chat.svg
:alt: Join the chat at https://gitter.im/pydoit/doit
:target: https://gitter.im/pydoit/doit?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge

.. image:: https://opencollective.com/doit/backers/badge.svg
:target: backers_

.. image:: https://opencollective.com/doit/sponsors/badge.svg
:target: sponsors_

doit - automation tool

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

Sample Code

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

Snippet from tutorial <http://pydoit.org/tutorial_1.html>_::

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

Project Details

license

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

see LICENSE file

developers / contributors

see AUTHORS file

install

doit is tested on python 3.4 to 3.6.

The last version supporting python 2 is version 0.29.

::

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

::

doit$ virtualenv dev
doit$ source 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

tests

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

::

$ py.test

documentation

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

spell checking

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.

profiling

::

python -m cProfile -o output.pstats which doit list

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

contributing

On github create pull requests using a named feature branch.

.. _backers

backers

Become a backer <https://opencollective.com/doit#backer>_ and show your support to our open source project.

.. image:: https://opencollective.com/doit/backers.svg?width=890
:target: https://opencollective.com/doit#backers

.. _sponsors

sponsors

Support this project by becoming a sponsor <https://opencollective.com/doit#sponsor>_.
Your logo will show up here with a link to your website.

.. image:: https://opencollective.com/doit/sponsor/0/avatar
:target: https://opencollective.com/doit/sponsor/0/website

.. image:: https://opencollective.com/doit/sponsor/1/avatar
:target: https://opencollective.com/doit/sponsor/1/website

.. image:: https://opencollective.com/doit/sponsor/2/avatar
:target: https://opencollective.com/doit/sponsor/2/website

.. image:: https://opencollective.com/doit/sponsor/3/avatar
:target: https://opencollective.com/doit/sponsor/3/website

.. image:: https://opencollective.com/doit/sponsor/4/avatar
:target: https://opencollective.com/doit/sponsor/4/website

.. image:: https://opencollective.com/doit/sponsor/5/avatar
:target: https://opencollective.com/doit/sponsor/5/website

.. image:: https://opencollective.com/doit/sponsor/6/avatar
:target: https://opencollective.com/doit/sponsor/6/website

.. image:: https://opencollective.com/doit/sponsor/7/avatar
:target: https://opencollective.com/doit/sponsor/7/website

.. image:: https://opencollective.com/doit/sponsor/8/avatar
:target: https://opencollective.com/doit/sponsor/8/website

.. image:: https://opencollective.com/doit/sponsor/9/avatar
:target: https://opencollective.com/doit/sponsor/9/website

Overview

Name With Ownerpydoit/doit
Primary LanguagePython
Program languagePython (Language Count: 2)
Platform
License:MIT License
Release Count47
Last Release Name0.36.0 (Posted on )
First Release Name0.2.0 (Posted on )
Created At2014-02-14 22:21:23
Pushed At2023-10-21 22:19:38
Last Commit At2023-01-16 00:40:03
Stargazers Count1.8k
Watchers Count48
Fork Count170
Commits Count1.5k
Has Issues Enabled
Issues Count302
Issue Open Count84
Pull Requests Count63
Pull Requests Open Count7
Pull Requests Close Count93
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top