Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pydoit/doit
CLI task management & automation tool
https://github.com/pydoit/doit
build-automation build-system build-tool cli data-pipeline data-science hacktoberfest python task-runner workflow workflow-automation workflow-management
Last synced: 2 days ago
JSON representation
CLI task management & automation tool
- Host: GitHub
- URL: https://github.com/pydoit/doit
- Owner: pydoit
- License: mit
- Created: 2014-02-14T22:21:23.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2024-07-04T15:59:14.000Z (5 months ago)
- Last Synced: 2024-11-18T21:12:55.049Z (24 days ago)
- Topics: build-automation, build-system, build-tool, cli, data-pipeline, data-science, hacktoberfest, python, task-runner, workflow, workflow-automation, workflow-management
- Language: Python
- Homepage: http://pydoit.org
- Size: 7.72 MB
- Stars: 1,871
- Watchers: 48
- Forks: 175
- Open Issues: 94
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGES
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Authors: AUTHORS
Awesome Lists containing this project
- awesome-python-applications - Repo - line task management and automation tool, with directives written in Python. `(linux, windows, mac)` (<a id="tag-dev" href="#tag-dev">Dev</a> / <a id="tag-dev.build" href="#tag-dev.build">Build</a>)
- awesome-python-applications - Repo - line task management and automation tool, with directives written in Python. `(linux, windows, mac)` (<a id="tag-dev" href="#tag-dev">Dev</a> / <a id="tag-dev.build" href="#tag-dev.build">Build</a>)
- awesome-repositories - pydoit/doit - CLI task management & automation tool (Python)
README
================
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://zenodo.org/badge/DOI/10.5281/zenodo.4892136.svg
:target: https://doi.org/10.5281/zenodo.4892136Financial contributions on `Open Collective `_
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 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
. drawProject 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-doitlicense
=======The MIT License
Copyright (c) 2008-2021 Eduardo Naufel Schettinosee 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 tasksdevelopment 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/activateinstall ``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.txttests
=======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.whlRemember to push GIT tags::
git push --tags
contributing
==============On github create pull requests using a named feature branch.
Financial contribution to support maintenance welcome.
.. image:: https://opencollective.com/doit/tiers/backers.svg?avatarHeight=50
:target: https://opencollective.com/doit/tiers