*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 <http://pydoit.org/tutorial-1.html>`_:
.. 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
. draw
Project Details
===============
- Website & docs - `http://pydoit.org <http://pydoit.org>`_
- Project management on github - `https://github.com/pydoit/doit <https://github.com/pydoit/doit>`_
- Discussion group - `https://groups.google.com/forum/#!forum/python-doit <https://groups.google.com/forum/#!forum/python-doit>`_
- News/twitter - `https://twitter.com/pydoit <https://twitter.com/pydoit>`_
- Plugins, extensions and projects based on doit - `https://github.com/pydoit/doit/wiki/powered-by-doit <https://github.com/pydoit/doit/wiki/powered-by-doit>`_
license
=======
The MIT License
Copyright (c) 2008-2022 Eduardo Naufel Schettino
Raw data
{
"_id": null,
"home_page": "http://pydoit.org",
"name": "doit",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "build make task automation pipeline task-runner",
"author": "Eduardo Naufel Schettino",
"author_email": "schettino72@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/5a/36/66b7dea1bb5688ba0d2d7bc113e9c0d57df697bd3f39ce2a139d9612aeee/doit-0.36.0.tar.gz",
"platform": null,
"description": "*doit* comes from the idea of bringing the power of build-tools to execute any\nkind of task\n\n*doit* can be uses as a simple **Task Runner** allowing you to easily define ad hoc\ntasks, helping you to organize all your project related tasks in an unified\neasy-to-use & discoverable way.\n\n*doit* scales-up with an efficient execution model like a **build-tool**.\n*doit* creates a DAG (direct acyclic graph) and is able to cache task results.\nIt ensures that only required tasks will be executed and in the correct order\n(aka incremental-builds).\n\nThe *up-to-date* check to cache task results is not restricted to looking for\nfile modification on dependencies. Nor it requires \"target\" files.\nSo it is also suitable to handle **workflows** not handled by traditional build-tools.\n\nTasks' dependencies and creation can be done dynamically during it is execution\nmaking it suitable to drive complex workflows and **pipelines**.\n\n*doit* is build with a plugin architecture allowing extensible commands, custom\noutput, storage backend and \"task loader\". It also provides an API allowing\nusers to create new applications/tools leveraging *doit* functionality like a framework.\n\n*doit* is a mature project being actively developed for more than 10 years.\nIt includes several extras like: parallel execution, auto execution (watch for file\nchanges), shell tab-completion, DAG visualisation, IPython integration, and more.\n\n\n\nSample Code\n===========\n\nDefine functions returning python dict with task's meta-data.\n\nSnippet from `tutorial <http://pydoit.org/tutorial-1.html>`_:\n\n.. code:: python\n\n def task_imports():\n \"\"\"find imports from a python module\"\"\"\n for name, module in PKG_MODULES.by_name.items():\n yield {\n 'name': name,\n 'file_dep': [module.path],\n 'actions': [(get_imports, (PKG_MODULES, module.path))],\n }\n\n def task_dot():\n \"\"\"generate a graphviz's dot graph from module imports\"\"\"\n return {\n 'targets': ['requests.dot'],\n 'actions': [module_to_dot],\n 'getargs': {'imports': ('imports', 'modules')},\n 'clean': True,\n }\n\n def task_draw():\n \"\"\"generate image from a dot file\"\"\"\n return {\n 'file_dep': ['requests.dot'],\n 'targets': ['requests.png'],\n 'actions': ['dot -Tpng %(dependencies)s -o %(targets)s'],\n 'clean': True,\n }\n\n\nRun from terminal::\n\n $ doit list\n dot generate a graphviz's dot graph from module imports\n draw generate image from a dot file\n imports find imports from a python module\n $ doit\n . imports:requests.models\n . imports:requests.__init__\n . imports:requests.help\n (...)\n . dot\n . draw\n\n\nProject Details\n===============\n\n - Website & docs - `http://pydoit.org <http://pydoit.org>`_\n - Project management on github - `https://github.com/pydoit/doit <https://github.com/pydoit/doit>`_\n - Discussion group - `https://groups.google.com/forum/#!forum/python-doit <https://groups.google.com/forum/#!forum/python-doit>`_\n - News/twitter - `https://twitter.com/pydoit <https://twitter.com/pydoit>`_\n - Plugins, extensions and projects based on doit - `https://github.com/pydoit/doit/wiki/powered-by-doit <https://github.com/pydoit/doit/wiki/powered-by-doit>`_\n\nlicense\n=======\n\nThe MIT License\nCopyright (c) 2008-2022 Eduardo Naufel Schettino",
"bugtrack_url": null,
"license": "MIT",
"summary": "doit - Automation Tool",
"version": "0.36.0",
"split_keywords": [
"build",
"make",
"task",
"automation",
"pipeline",
"task-runner"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4483a2960d2c975836daa629a73995134fd86520c101412578c57da3d2aa71ee",
"md5": "9e659c2f5d406649d06265e1914773d4",
"sha256": "ebc285f6666871b5300091c26eafdff3de968a6bd60ea35dd1e3fc6f2e32479a"
},
"downloads": -1,
"filename": "doit-0.36.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9e659c2f5d406649d06265e1914773d4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 85937,
"upload_time": "2022-04-22T15:33:23",
"upload_time_iso_8601": "2022-04-22T15:33:23.165732Z",
"url": "https://files.pythonhosted.org/packages/44/83/a2960d2c975836daa629a73995134fd86520c101412578c57da3d2aa71ee/doit-0.36.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5a3666b7dea1bb5688ba0d2d7bc113e9c0d57df697bd3f39ce2a139d9612aeee",
"md5": "5ee4995e15d9308ccc6a3211a9fa2abd",
"sha256": "71d07ccc9514cb22fe59d98999577665eaab57e16f644d04336ae0b4bae234bc"
},
"downloads": -1,
"filename": "doit-0.36.0.tar.gz",
"has_sig": false,
"md5_digest": "5ee4995e15d9308ccc6a3211a9fa2abd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 1448096,
"upload_time": "2022-04-22T15:33:12",
"upload_time_iso_8601": "2022-04-22T15:33:12.886357Z",
"url": "https://files.pythonhosted.org/packages/5a/36/66b7dea1bb5688ba0d2d7bc113e9c0d57df697bd3f39ce2a139d9612aeee/doit-0.36.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-04-22 15:33:12",
"github": false,
"gitlab": false,
"bitbucket": false,
"lcname": "doit"
}