跳转到主要内容

面向所有人的组件化配置!

项目描述

关键特性

  1. 灵活配置:noconf 允许您使用使用Python语法的配置文件来配置您的Python应用程序。

  2. 多个配置文件:noconf 允许您将配置拆分到多个文件中,使您在应用程序增长时更容易管理和更新配置。

  3. 配置引用:noconf 允许您从您的配置中引用其他部分,避免重复,并保持配置DRY(不要重复)。

  4. 组件化编程:noconf 允许您使用配置初始化类,使您能够轻松地将更小的、可重用的组件组合成复杂的系统。这促进了代码重用和可维护性。

用法

至少,noconf 允许我们读取存储在具有Python语法的文件中的配置,其中文件包含一个顶级字典。

让我们先写一个非常简单的配置文件

>>> config1_fname = folder / "config1.py"
>>> config1_fname.write_text("""
... {'key1': 'value1', 'key2': ['value2']}
... """)
40
>>> from noconf import load
>>> load(config1_fname)
{'key1': 'value1', 'key2': ['value2']}

我们还可以链接配置文件,即加载多个配置文件并将它们合并,其中在文件列表中更后面的文件的内容将具有优先级

>>> config2_fname = folder / "config2.py"
>>> config2_fname.write_text("""
... {'key1': 'new', 'key3': {'__copy__': 'key2'}}
... """)
47
>>> load((config1_fname, config2_fname))  # a tuple of config files
{'key1': 'new', 'key2': ['value2'], 'key3': ['value2']}

注意,在上面的示例中,我们还使用了 ‘__copy__’ 功能,该功能允许我们引用配置中的其他部分,并避免重复。

我们还可以直接从配置中实例化类。让我们创建一个配置文件来实例化Python logging FileHandler类。我们还将使用环境变量传递的文件名来配置FileHandler。我们使用noconf中的特殊 environ 变量来访问环境变量

>>> setenv("LOGFILE", str(folder / "mylogfile.txt"))
>>> config3_fname = folder / "config3.py"
>>> config3_fname.write_text("""
... {
...     'handlers': [
...         {
...             '!': 'logging.FileHandler',
...             'filename': environ['LOGFILE'],
...         },
...     ],
... }
... """)
135
>>> config = load(config3_fname)
>>> filehandler = config['handlers'][0]
>>> from pathlib import Path
>>> Path(filehandler.baseFilename).parts[-1]
'mylogfile.txt'

项目详情


下载文件

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

源代码分发

noconf-1.0.tar.gz (8.1 kB 查看哈希值)

上传时间 源代码

支持