跳转到主要内容

pop项目的官方工具,允许创建和合并配置选项。

项目描述

Made with pop, a Python implementation of Plugin Oriented Programming Documentation is published with Sphinx on GitLab Pages via vmware.gitlab.io Made with Python

关于

Pop-config 是官方工具,允许为 pop 项目创建和合并配置选项。插件面向编程提供了一种将多个应用程序动态合并的方法。这种能力要求从编程范式内部管理这些应用程序的启动。由于这种情况,pop-config 成为 pop 的关键和硬性要求。

Pop-config 不仅能够与 pop 项目协同工作以简化应用程序合并,还设计用于使应用程序的启动更加简单,并尽可能使昂贵的启动和配置样板尽可能透明。在创建 pop 项目时,想法是项目以非常小的块开发,然后动态合并在一起。因此,这些可合并应用程序的创建需要快速且简单!

Pop-config 还解决了应用程序配置的问题,在创建新应用程序时,如果您想实现健壮的配置加载,您需要能够从命令行、环境变量和配置文件中获取选项。Pop-config 会为您完成所有这些,并按正确的顺序在幕后加载它们,使您的生活更加轻松。

安装

对于基本安装,运行

$ pip install pop-config

要启用异步日志记录,使用 async 扩展安装

$ pip install pop-config[async]

理解 conf.py

Pop 依赖于配置文件来管理如何合并应用程序,以及如何管理和合并配置数据。该文件中的数据以 4 个 Python 字典的形式呈现,并定义了配置加载的各个方面。

这 4 个字典分别称为 CONFIGCLI_CONFIGSUBCOMMANDSDYNE。每个字典都服务于特定的目的。在它们之间,您可以定义如何呈现 cli 参数、所有配置默认值、文档等。

该项目使用基于 Python 的 pop 实现 插件面向编程 (POP)。POP 力求以新的方式结合计算机历史中的概念和智慧来解决现代计算问题。

更多信息

CONFIG 字典

大部分配置将存在于 CONFIG 字典中。所有配置选项都在这里定义。大多数 CONFIG 字典条目都非常简单,仅公开最基本的值

CONFIG = {
    "name": {
        "default": "frank",
        "help": "Enter the name to use",
    },
}

这个简单的示例展示了配置值的文档以及默认值应该是什么。

垂直合并应用程序的项目可以向其父动态添加配置项,如下所示

CONFIG = {
    "new_item": {
        "type": int,
        "default": 1,
        "dyne": "idem",
    },
}

还可以使用更多选项,但它们将在参考文档中介绍。

CLI_CONFIG 字典

添加配置值不会使其出现在命令行上。每个应用程序都可以扩展以包括命令行选项。让我们扩展我们之前的示例,以公开“名称”选项作为命令行参数

CLI_CONFIG = {
    "name": {},
}
CONFIG = {
    "name": {
        "default": "frank",
        "help": "Enter the name to use",
    },
}

这就完成了!“名称”选项现在在命令行上可用,并可以按 --name bob 使用。

但如果我们想将其作为一个位置参数怎么办?很简单!只需将位置参数添加到 CLI_CONFIG

CLI_CONFIG = {
    "name": {
        "positional": True,
    },
}
CONFIG = {
    "name": {
        "default": "frank",
        "help": "Enter the name to use",
    },
}

您可以从前一个项目中继承 cli 参数。例如,如果您想以与 rend 完全相同的方式实现 --output 标志,您可以这样导入它

CLI_CONFIG = {
    "output": {
        "source": "rend",
    },
}

存在许多其他选项,允许您控制用户命令行体验的各个方面。

子命令字典

有时需要使用子命令。子命令可以让您的命令行界面(CLI)以类似 git cli 的方式工作,您可以从单个命令调用多个程序。

让我们在我们的示例中添加一些更多内容,以便我们可以使用子命令。

CLI_CONFIG = {
    "name": {
        "subcommands": ["test", "apply"],
    },
    "weight": {},
    "power": {
        "subcommands": ["apply"],
    },
}
CONFIG = {
    "name": {
        "default": "frank",
        "help": "Enter the name to use",
    },
    "weight": {
        "default": "150",
        "help": "Enter how heavy it should be",
    },
    "power": {
        "default": "100",
        "help": "Enter how powerful it should be",
    },
}

SUBCOMMANDS = {
    "test": {
        "help": "Used to test",
        "desc": "When running in test mode, things will be tested",
    },
    "apply": {
        "help": "Used to apply",
        "desc": "When running in apply mode, things will be applied",
    },
}

在这个示例中,我们可以看到选项 name 将在子命令 testapply 下可用。选项 power 只在子命令 apply 下可用,而选项 weight 是全局可用的。

DYNE 字典

DYNE 字典允许您控制应用程序向其他 pop 项目展示的动态名称。此名称不仅用于 pop-config 内部,也用于 pop 内部,以确定此应用程序合并的插件子系统。 DYNE 系统允许第三方代码扩展您的 CLI,使配置选项可以通过外部代码提供给您的应用程序。

DYNE 系统非常强大。但由于它对于开始使用 pop-config 不是关键,它将在另一份文档中详细介绍。

日志模块

在 pop-config 的日志模块中,有几个配置选项。

如果“log_plugin”设置为“rotating”,则可以将“log_handler_options”配置项设置为非默认值。

这两个选项是

  1. maxBytes 默认:1024*1024*100 此选项指定每个备份日志文件的最大大小。一旦日志文件接近此值,则“rotating”模块将保存文件并创建新的日志文件。

  2. backupCount 默认:5 此选项告诉“rotating”模块允许多少个备份日志文件。当该数量增加时,最旧的文件将被删除。

致谢

项目详情


下载文件

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

源分发

pop-config-12.0.4.tar.gz (29.4 kB 查看散列)

上传时间

构建分布版

pop_config-12.0.4-py3-none-any.whl (38.1 kB 查看哈希值)

上传时间 Python 3

支持者