跳转到主要内容

小巧、有观点且易于使用的配置库。

项目描述

NanoConf

NanoConf 是一个小巧、有观点且易于使用的 Python 配置库。它旨在用于小型到中型项目,在这些项目中,完整的配置库可能过于冗余。

安装

pip install nanoconf

使用方法

from nanoconf import NanoConf
# or if NanoConf if too long of a name
from nanoconf import NC

# Create a new configuration object
config = NanoConf("/path/to/config.nconf")

# Use the configuration object
print(config["key"])
# Since all values are also loaded as attributes, you can also do
print(config.key)

配置文件格式

NanoConf 使用简单的配置文件格式,易于阅读和编写。每个文件都是 YAML 格式,并包含一个顶级字典。尽管顶层必须是字典,但您可以嵌套字典和列表,深度不限。每个配置文件也必须具有 .nconf 扩展名。这确保了 NanoConf 只加载那些旨在成为配置文件的文件。

key: value
test: 1
overriden: false
things:
    - thing1
    - thing2
    - thing3
top:
    v1: 1
    middle:
        v2: 2
        inner:
            v3: 3
            deep:
                v4: 4

如果您要加载多个配置文件到单个配置对象中,可以将它们全部放在同一个目录下,并将该目录传递给 NanoConf。NanoConf 将自动将子文件放置在它们的文件名作为父文件的属性下。该文件的 内容将可以通过对应的文件名属性访问。

<project root>
conf_dir
  |__ cfg1.nconf
  |__ cfg2.nconf
  |__ cfg3.nconf
# load an entire directory
proj_config = NanoConf("/path/to/conf_dir")
print(proj_config.cfg1.test)

您还可以在任意配置文件中使用 _import 关键字导入额外的文件或目录。

# main.nconf
_import:
    - /path/to/project/more_config
key: value
test: 1
<project root>
main.nconf
more_config
  |__ subcfg1.nconf
  |__ subcfg2.nconf
  |__ subcfg3.nconf
# loading the main config file will also load the sub-configs
proj_config = NanoConf("/path/to/project/main.nconf")
print(proj_config.more_config.subcfg1.test)

注意目录结构也被保留在属性路径中。这使得更容易找到值来源的文件。

环境变量

NanoConf 支持环境变量,既可以作为现有值的覆盖,也可以作为加载配置的补充。环境变量按文件逐个评估,因此可以为不同的配置文件设置不同的环境变量。我们通过在配置文件中设置特殊的 _envar_prefix 键来管理这一点。注意: NanoConf 不会修改任何环境变量名称或值的字母大小写。确保大小写正确是您的责任。

_envar_prefix: myapp
key: value
overrideme: original
export myapp_overrideme=changed
config = NanoConf("/path/to/config.nconf")
print(config.overrideme)

您还可以将复杂数据结构作为 JSON 字符串传递给环境变量。

export myapp_abc='{"a": 1, "b": 2, "c": 3}'
config = NanoConf("/path/to/config.nconf")
print(config.abc.b)

项目详情


下载文件

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

源分发

nanoconf-1.0.0.tar.gz (6.9 kB 查看哈希值)

上传时间

构建分发

nanoconf-1.0.0-py3-none-any.whl (3.9 kB 查看哈希值)

上传时间 Python 3

由以下组织支持