跳转到主要内容

用于强制数据管道输出与git历史之间链接的上下文管理器。

项目描述

PyPI version pipeline coverage

gittrail - 将数据管道输出链接到git历史

使用git进行代码版本控制很简单,而数据管道输入/输出的版本控制则很难。

GitTrail 通过强制数据文件与您处理代码的提交历史之间的链接,帮助您维护可追踪的数据血缘。

像区块链,但更容易。

它如何工作

GitTrail 作为一个上下文管理器用于执行您的数据处理的代码周围

with GitTrail(
    repo="/path/to/my_data_processing_code",
    data="/path/to/my_data_storage",
):
    # TODO: download the pipeline inputs to [data]

在GitTrail会话之间,您可以编辑您的管道代码,进行提交等。

当您的下一个数据处理阶段准备就绪时

with GitTrail(
    repo="/path/to/my_data_processing_code",
    data="/path/to/my_data_storage",
):
    # TODO: run data analysis on inputs from [data]
    # TODO: save results to [data]

进入上下文时,GitTrail 会将日志处理器附加到重定向所有日志到[data]子目录中的*.log文件。当上下文退出时,会断开连接,并将会话元数据存储在*.json文件中。元数据包括您[repo]的当前git提交,以及[data]内部文件的MD5哈希值。

在上下文中,以下两条规则被强制执行

  1. 您的代码[repo]的工作树必须是干净的(没有未提交的更改)。
  2. 当前在[data]中找到的所有文件必须在先前的GitTrail上下文中创建/更改过。

结合起来,这意味着

  • 您不允许手动添加/编辑[数据]中的任何内容。
  • 随着您通过管道前进,您的数据处理代码可以继续发展。
  • 您可以对处理代码的 Git 提交进行修改/回滚/重写,但 [data] 中对应的文件以及审计跟踪会话文件必须删除。
  • [data] 中的所有文件都与生成它们的处理代码相关联。

局限性

GitTrail 不能监控一切,因此请注意以下几点:

  • data 之外的数据,例如数据库,不受跟踪。如果您正在 [data] 之外读取/写入数据,请考虑如何在 Git 历史记录和/或 [data] 审计跟踪中跟踪这些数据。
  • repo 之外的所有代码不受跟踪。除非您的 [repo] 指定了确切的依赖版本,否则您的代码可能无法 100% 重复。
  • 审计跟踪文件未进行加密签名,因此如果篡改它们,则不会进行跟踪。

项目详细信息


下载文件

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

源代码分发

gittrail-0.1.1.tar.gz (24.0 kB 查看散列值)

上传时间 源代码

构建分发

gittrail-0.1.1-py3-none-any.whl (24.4 kB 查看散列值)

上传时间 Python 3

由以下提供支持