忘掉configparser,YAML或JSON解析器。专注于配置。
项目描述
更新于2019-05-13:版本1.35及以上需要Python 3.6+。
更新于2018-10-20:我不再使用这个库。它试图做太多事情。它是用Python 2.7编写的,并使其与Python 3兼容。在Python 3.6+中,您可以使用类型提示、dataclasses和其他许多酷功能以更优雅的方式表达相同的内容。
不要让标准库的configparser驱动您的配置值访问设计。让它做它最擅长的事情——解析和写入配置文件。然后让configmanager做其余的事情。
主要功能
每个配置项都是一个具有类型、默认值、自定义值和其他元数据的对象
不需要部分
允许任何深度的部分
INI (ConfigParser)、JSON、YAML格式
click框架集成
文档
源代码和问题跟踪
快速入门
使用pip install configmanager从Python包索引安装。
声明您的配置、源文件,然后开始。请记住,每个配置项都是一个对象,而不仅仅是普通的配置值。如果您不需要配置项的丰富功能,请使用 configmanager.PlainConfig。
import warnings
from configmanager import Config
config = Config({
'uploads': {
'threads': 1,
'enabled': False,
'db': {
'user': 'root',
'password': {
'@default': 'root',
'@envvar': 'MY_UPLOADER_DB_PASSWORD',
},
}
}
}, load_sources=[
'/etc/my-uploader/config.ini',
'~/.config/my-uploader/config.json',
], auto_load=True)
if config.uploads.db.user.is_default:
warnings.warn('Using default db user!')
if config.uploads.enabled.get():
connect_to_database(
user=config.uploads.db.user.get(),
password=config.uploads.db.password.get(),
)