面向所有人的组件化配置!
项目描述
关键特性
灵活配置:noconf 允许您使用使用Python语法的配置文件来配置您的Python应用程序。
多个配置文件:noconf 允许您将配置拆分到多个文件中,使您在应用程序增长时更容易管理和更新配置。
配置引用:noconf 允许您从您的配置中引用其他部分,避免重复,并保持配置DRY(不要重复)。
组件化编程: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的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 138960fec7641fb854f229bc20b4bd96a017f4c15d90d9a1cf8bdf5b1954a00b |
|
| MD5 | 0c9e5ae3bc6160f53904aa3f8efb769f |
|
| BLAKE2b-256 | 2970eff04f7a719a2ff74bb5a1d66aa0a469878d6156fcdf78dc7cdab1ed1f89 |