跳转到主要内容

doit - 自动化工具

项目描述

doit 的理念是将构建工具的力量应用于执行任何类型的任务

doit 可以作为一个简单的 任务运行器,让您轻松定义临时任务,帮助您以统一、易于使用和发现的方式组织所有项目相关任务。

doit 通过一个高效的执行模型(如构建工具)进行扩展。 doit 创建一个DAG(有向无环图)并能够缓存任务结果。它确保只执行所需的任务,并且按正确顺序执行(即增量构建)。

缓存任务结果的最新检查不仅限于查找依赖项上的文件修改。也不需要“目标”文件。因此,它也适用于处理传统构建工具无法处理的 工作流

任务依赖项和创建可以在执行期间动态完成,使其适用于驱动复杂的 流水线

doit 采用插件架构,允许扩展命令、自定义输出、存储后端和“任务加载器”。它还提供了一个 API,允许用户利用 doit 的功能创建新的应用程序/工具,就像一个框架。

doit 是一个成熟的项目,已经活跃开发超过10年。它包括一些附加功能,如:并行执行、自动执行(监视文件更改)、shell 自动补全、DAG 可视化、IPython 集成等。

示例代码

定义返回 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,
    }

从终端运行

$ 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

项目详情

许可证

MIT 许可证 版权 (c) 2008-2022 Eduardo Naufel Schettino

项目详情


下载文件

下载您平台上的文件。如果您不确定要选择哪一个,请了解更多关于 安装包 的信息。

源代码分发

doit-0.36.0.tar.gz (1.4 MB 查看哈希值)

上传日期 源代码

构建分发

doit-0.36.0-py3-none-any.whl (85.9 kB 查看哈希值)

上传日期 Python 3

由以下支持