面向所有人的组件化配置!
项目描述
关键特性
灵活配置: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 |