跳转到主要内容

Arca是一个用于从各种隔离状态下的git仓库运行Python函数(可调用对象)的库,同时集成了缓存。

项目描述

Arca

https://img.shields.io/travis/pyvec/arca.svg https://img.shields.io/codecov/c/github/pyvec/arca.svg https://img.shields.io/pypi/v/arca.svg https://img.shields.io/github/license/pyvec/arca.svg?style=flat https://img.shields.io/readthedocs/arca.svg

Arca是一个用于从各种隔离状态下的git仓库运行Python函数(可调用对象)的库。Arca还可以使用dogpile.cache来缓存这些可调用对象的结果。

入门指南

术语表

  • Arca - 库的名称。当写成Arca时,指的是主接口类。

  • 任务 - 函数(可调用)的定义,由对象引用和参数组成。

  • 后端 - 运行任务的方式。

安装

需求
  • Python >= 3.6

某些后端的需求

安装

安装最新稳定版本

python -m pip install arca

如果您想使用 Docker 后端

python -m  pip install arca[docker]

或者如果您想使用 Vagrant 后端

python -m pip install arca[vagrant]

或者如果您希望安装上游版本

python -m pip install git+https://github.com/pyvec/arca.git#egg=arca
python -m pip install git+https://github.com/pyvec/arca.git#egg=arca[docker]
python -m pip install git+https://github.com/pyvec/arca.git#egg=arca[vagrant]

示例

要运行一个 Hello World 示例,您只需要 arca.Arcaarca.Task 类。 Task 用于定义在存储库中要运行的任务。 Arca 负责所有设置并提供运行任务的基本 API。

假设我们有一个名为 hello_world.py 的文件,位于存储库 https://example.com/hello_word.git 上的 master 分支。

def say_hello():
   return "Hello World!"

要使用 Arca 调用函数,以下示例将做到这一点

from arca import Arca, Task

task = Task("hello_world:say_hello")
arca = Arca()

result = arca.run("https://example.com/hello_word.git", "master", task)
print(result.output)

代码将打印 Hello World!result 将是一个 arca.Result 实例。 arca.Result 有三个属性,output 包含函数调用的返回值,stdoutstderr 包含打印到标准输出(有关标准输出捕获的更多信息,请参阅结果部分)。如果任务失败,将引发 arca.exceptions.BuildError

默认情况下,使用 当前环境后端 来运行任务,该后端使用当前 Python,在子进程中启动代码。您可以在此处了解有关后端的信息。

进一步阅读

您可以在 Read The Docs 上阅读完整的文档。

运行测试

要运行测试,您需要可选需求 Docker 和 Vagrant。一旦您拥有它们并且它们可以由当前用户使用,您只需运行

python setup.py test

这将启动测试和 PEP8 检查。测试将花费一些时间,因为自定义 Docker 镜像的构建也会被测试,Vagrant 通常需要很长时间才能设置。

贡献

欢迎贡献!请随意在 GitHub 上打开问题或提交拉取请求!

更改

0.3.3 (2019-12-10)

更改
  • 更新依赖项

  • 允许带有斜线的分支(#79

0.3.2 (2019-11-23)

更改
  • 将项目移至 Pyvec 组织下。

  • 将基本镜像的 Docker 仓库更改为 arcaoss/arca

  • 修复了仓库的 Unicode 路径(#60

0.3.1 (2018-11-16)

当 Docker 镜像构建失败时引发 Arca 异常。(#56#57

0.3.0 (2018-08-25)

更改
  • 移除了 CurrentEnvironmentBackend 处理需求的功能 - 所有需求都被忽略。(向后不兼容

  • 增加了使用Pipenv安装依赖支持。包含的目录由后端选项pipfile_location设置,默认选择仓库的根目录。Pipenv文件优先于常规的依赖文件。

  • Result类现在增加了两个属性,stdoutstderr,分别表示启动任务的标准输出和错误输出。因此现在在端点中允许打印。

  • DockerBackend使用的Docker镜像中使用了UTF-8地区设置。

  • 支持Python 3.7。

0.2.1 (2018-06-11)

更新dogpile.cache到0.6.5,使其兼容Python 3.7。更新Docker后端以支持Python测试版。

0.2.0 (2018-05-09)

此版本与之前版本相比有多处向后不兼容的更改。

更改
  • 使用扩展安装Docker和Vagrant依赖项。

    • 必须使用以下命令:pip install arca[docker]pip install arca[vagrant]

  • 自动将已克隆的仓库作为新克隆分支的参考。

  • 在Docker后端使用Debian作为默认的基础镜像。

    • apk_dependencies更改为apt_dependencies,现在使用apt-get进行安装。

  • Vagrant后端只创建一个虚拟机,而不是多个——请参阅其文档。

  • 为任务添加了超时,默认为5秒。可以使用Tasktimeout参数进行设置。

  • 为安装依赖项添加了超时,默认为300秒。可以使用后端的requirements_timeout配置选项进行设置。

0.1.1 (2018-04-23)

更新gitpython到2.1.9。

0.1.0 (2018-04-18)

初始发布。

更改
  • 更新了PyPI描述和元数据。

0.1.0a0 (2018-04-13)

初始alpha版本。

项目详情。


下载文件

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

源代码分发

arca-0.3.3.tar.gz (32.0 kB 查看哈希值)

上传时间: 源代码

构建分发

arca-0.3.3-py3-none-any.whl (34.3 kB 查看哈希值)

上传时间: Python 3

由以下赞助

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面