doit


Namedoit JSON
Version 0.36.0 PyPI version JSON
download
home_pagehttp://pydoit.org
Summarydoit - Automation Tool
upload_time2022-04-22 15:33:12
maintainer
docs_urlNone
authorEduardo Naufel Schettino
requires_python>=3.8
licenseMIT
keywords build make task automation pipeline task-runner
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            *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"
}
        
Elapsed time: 0.04501s