跳转到主要内容

Reclass定义了一种语法和目录结构,用于递归合并YAML数据源。

项目描述

reclass-rs:Rust语言实现的Reclass

Reclass是一个库,它定义了一种语法和目录结构,用于递归合并YAML数据源。

此存储库包含基于Reclass分支的Rust实现,由kapicorp维护。此存储库中提供的Reclass实现可以用于其他Rust程序和Python程序。reclass-rs Python模块直接用Rust实现,使用了PyO3

请注意,此实现尚不支持Kapitan Reclass中所有可用的特性和扩展。然而,对于已实现的功能,我们旨在与Kapitan Reclass兼容。

当前实现支持以下Kapicorp Reclass功能

  • Reclass选项nodes_pathclasses_path
  • Reclass选项ignore_class_notfound
  • Reclass选项ignore_class_notfound_regexp
  • 转义参数引用
  • 合并引用的列表和字典
  • 常量参数
  • 嵌套引用
  • 类名中的引用
  • 以相对名称加载类
  • reclass-config.yaml加载Reclass配置选项
  • Reclass选项componse_node_name
    • reclass-rs为componse_node_name提供了一个不兼容的模式,该模式保留节点名称中的字面点

以下Kapicorp Reclass功能不受支持

  • 忽略覆盖的缺失引用
  • 库存查询
  • Reclass选项allow_none_override不能设置为False
  • 重新分类 yaml_gitmixed 存储类型
  • 在此处或上述内容中未明确提到的任何重新分类选项

原始重新分类的文档可以在 https://reclass.pantsfullofunix.net/ 找到。有关 Kapicorp 重新分类分支中引入的重新分类扩展的文档可以在 https://github.com/kapicorp/reclass/blob/develop/README-extensions.rst 找到。

先决条件

  • Python >= 3.8
  • Rust >= 1.56(我们建议使用 rustup 安装最新的稳定工具链)

为 Python 绑定设置本地开发环境

  1. 创建一个用于运行 Python 测试的本地虚拟环境并安装 maturin 和 pytest
python -m venv .venv
source .venv/bin/activate
pip install maturin pytest
  1. 构建 reclass-rs Python 库并在虚拟环境中安装它
maturin develop
  1. 运行 Python 测试
pytest

Rust 开发

如果您已设置 Rust 工具链,您应该能够通过 Cargo 运行 Rust 测试

cargo test

代码审查和格式化

  • 使用 cargo fmt 格式化代码
  • 使用 cargo check 检查代码是否编译
  • 使用 cargo clippy 检查代码问题

基准测试

您可以使用以下方式运行 Reclass::render_inventory() 的基准测试

cargo bench -F bench

基准测试是用 criterion 实现的。

在 Kapitan 中测试 reclass-rs

如果您正在使用 Kapitan,您可以通过在 Kapitan 虚拟环境中安装 reclass-rs 来测试 reclass-rs

  1. 在您的 Kapitan 虚拟环境中安装 reclass-rs
KAPITAN_VENV=/path/to/your/kapitan/virtualenv
source ${KAPITAN_VENV}/bin/activate
pip install reclass-rs
  1. 使用以下命令在虚拟环境中修补 Kapitan 软件包
patch -p1 -d $KAPITAN_VENV < hack/kapitan_0.32_reclass_rs.patch

请注意,我们仅在 PyPI 上发布的 Kapitan 0.32 版本上测试了修补程序。

自动包版本管理

在构建 Python 轮文件时,我们从最新的 Git 标签生成 reclass-rs 的包版本。为了确保这始终有效,我们将版本保留在提交的 Cargo.toml 中的 0.0.0

我们通过调用 git describe --tags --always --match=v* 从 Git 生成包版本。此命令生成类似 v0.1.1-61-g531ca91 的内容。我们始终删除前面的 v,因为 Cargo 和 maturin 都不支持以 v 开头的版本。如果我们正在构建分支或 PR,我们丢弃来自提交哈希的组件。对于上面的示例输出,分支或 PR 构建中的包版本将变为 0.1.1.post61。对于标签构建,命令输出将只是标签,因此包版本将与标签匹配。

在构建 Python 轮文件之前,使用 cargo-editcargo set-version 注入版本。

有关更多详细信息,请参阅 "Python" 工作流程

项目详情


下载文件

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

源分发

reclass_rs-0.4.0.tar.gz (76.8 kB 查看散列)

上传时间

构建分发

reclass_rs-0.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB 查看散列)

上传于 PyPy manylinux: glibc 2.17+ x86-64

reclass_rs-0.4.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.6 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ s390x

reclass_rs-0.4.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.5 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ppc64le

reclass_rs-0.4.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.2 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARMv7l

reclass_rs-0.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

reclass_rs-0.4.0-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (2.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.12+ i686

reclass_rs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

reclass_rs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.6 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ s390x

reclass_rs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.5 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ppc64le

reclass_rs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.2 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARMv7l

reclass_rs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

reclass_rs-0.4.0-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (2.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.12+ i686

reclass_rs-0.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

reclass_rs-0.4.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.6 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ s390x

reclass_rs-0.4.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.5 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ppc64le

reclass_rs-0.4.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.2 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARMv7l

reclass_rs-0.4.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

reclass_rs-0.4.0-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (2.3 MB 查看哈希值)

上传于 CPython 3.13 manylinux: glibc 2.12+ i686

reclass_rs-0.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.6 MB 查看哈希值)

上传于 CPython 3.13 manylinux: glibc 2.17+ s390x

reclass_rs-0.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.5 MB 查看哈希值)

上传于 CPython 3.13 manylinux: glibc 2.17+ ppc64le

reclass_rs-0.4.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.2 MB 查看哈希值)

上传于 CPython 3.13 manylinux: glibc 2.17+ ARMv7l

reclass_rs-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.13 manylinux: glibc 2.17+ ARM64

reclass_rs-0.4.0-cp312-none-win_amd64.whl (1.1 MB 查看哈希值)

上传于 CPython 3.12 Windows x86-64

reclass_rs-0.4.0-cp312-none-win32.whl (1.1 MB 查看哈希值)

上传于 CPython 3.12 Windows x86

reclass_rs-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ x86-64

reclass_rs-0.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.6 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ s390x

reclass_rs-0.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.5 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ppc64le

reclass_rs-0.4.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.2 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARMv7l

reclass_rs-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

reclass_rs-0.4.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl (2.3 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.12+ i686

reclass_rs-0.4.0-cp312-cp312-macosx_11_0_arm64.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.12 macOS 11.0+ ARM64

reclass_rs-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl (1.4 MB 查看哈希值)

上传时间 CPython 3.12 macOS 10.12+ x86-64

reclass_rs-0.4.0-cp311-none-win_amd64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.11 Windows x86-64

reclass_rs-0.4.0-cp311-none-win32.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.11 Windows x86

reclass_rs-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ x86-64

reclass_rs-0.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.6 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ s390x

reclass_rs-0.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.5 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ ppc64le

reclass_rs-0.4.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.2 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ ARMv7l

reclass_rs-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ ARM64

reclass_rs-0.4.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.12+ i686

reclass_rs-0.4.0-cp311-cp311-macosx_11_0_arm64.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.11 macOS 11.0+ ARM64

reclass_rs-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl (1.4 MB 查看哈希值)

上传时间 CPython 3.11 macOS 10.12+ x86-64

reclass_rs-0.4.0-cp310-none-win_amd64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.10 Windows x86-64

reclass_rs-0.4.0-cp310-none-win32.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.10 Windows x86

reclass_rs-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ x86-64

reclass_rs-0.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.6 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ s390x

reclass_rs-0.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.5 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ ppc64le

reclass_rs-0.4.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.2 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ ARMv7l

reclass_rs-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ ARM64

reclass_rs-0.4.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.12+ i686

reclass_rs-0.4.0-cp310-cp310-macosx_11_0_arm64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

reclass_rs-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl (1.4 MB 查看哈希值)

上传于 CPython 3.10 macOS 10.12+ x86-64

reclass_rs-0.4.0-cp39-none-win_amd64.whl (1.1 MB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

reclass_rs-0.4.0-cp39-none-win32.whl (1.1 MB 查看哈希值)

上传于 CPython 3.9 Windows x86

reclass_rs-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

reclass_rs-0.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.6 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ s390x

reclass_rs-0.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.5 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ppc64le

reclass_rs-0.4.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.2 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARMv7l

reclass_rs-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

reclass_rs-0.4.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl (2.3 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.12+ i686

reclass_rs-0.4.0-cp38-none-win_amd64.whl (1.1 MB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

reclass_rs-0.4.0-cp38-none-win32.whl (1.1 MB 查看哈希值)

上传于 CPython 3.8 Windows x86

reclass_rs-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

reclass_rs-0.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.6 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ s390x

reclass_rs-0.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.5 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ppc64le

reclass_rs-0.4.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.2 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARMv7l

reclass_rs-0.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

reclass_rs-0.4.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl (2.3 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.12+ i686

由以下支持