管理来自配置文件、环境变量、命令行参数、代码默认值或其他源的配置

layeredconfig的Python项目详细描述


https://badge.fury.io/py/layeredconfig.pnghttps://travis-ci.org/staffanm/layeredconfig.png?branch=masterhttps://ci.appveyor.com/api/projects/status/nnfqv9jhxh3afgn0/branch/masterhttps://coveralls.io/repos/staffanm/layeredconfig/badge.png?branch=masterCode Healthhttps://pypip.in/d/layeredconfig/badge.png

完整文档:https://layeredconfig.readthedocs.org/

layeredconfig从文件、环境中编译配置 变量、命令行参数、硬编码默认值或其他 后端,并以简单的方式将其提供给您的代码:

from layeredconfig import (LayeredConfig, Defaults, INIFile,
                           Environment, Commandline)

# This represents four different way of specifying the value of the
# configuration option "hello":

# 1. hard-coded defaults
defaults = {"hello": "is it me you're looking for?"}

# 2. INI configuration file
with open("myapp.ini", "w") as fp:
    fp.write("""
[__root__]
hello = kitty
""")

# 3. enironment variables
import os
os.environ['MYAPP_HELLO'] = 'goodbye'

# 4.command-line arguments
import sys
sys.argv = ['./myapp.py', '--hello=world']

# Create a config object that gets settings from these four
# sources.
config = LayeredConfig(Defaults(defaults),
                       INIFile("myapp.ini"),
                       Environment(prefix="MYAPP_"),
                       Commandline())

# Prints "Hello world!", i.e the value provided by command-line
# arguments. Latter sources take precedence over earlier sources.
print("Hello %s!" % config.hello)
    一个灵活的系统使指定资源成为可能。 配置信息,包括来源 优先。包括许多公共源的实现,并且 有一个api用于编写新的api。
  • 包括ini文件、yaml文件、json文件的配置源, plist文件,etcd存储(读写),python源文件, 硬编码默认值、命令行选项、环境变量 (只读)。
  • 配置可以包括子部分 (即config.downloading.refresh)如果 子节不包含请求的设置,它可以选择 从主配置获取(如果config.module.retry 缺少,config.retry可以改为使用)。
  • 您的代码可以更改配置设置(即更新 “lastmodified”设置或类似设置),并且更改可以持久化 (保存)到您选择的后端。
  • 已键入配置设置(即,如果设置应包含 日期,它作为 datetime.date对象,而不是str。如果 设置是从自身不提供的后端获取的 类型化数据(即环境变量,它们本身是 仅限字符串),类型强制系统使 指定应如何转换数据。

历史记录

0.3.2(2016-09-26)

  • 修复了错误9(自定义节分隔符导致值 检索为列表,而不是单个值)。感谢@numberut 报告这个!

0.3.1(2016-08-31)

  • 修正了错误8(用 定义的子节导致初始化崩溃。多亏了 @安山特报告这件事!
  • 用于etcdstore的默认uri已更改以反映该端口 应该使用2379而不是4001(这是etcd的默认值 1.*)。
  • 已放弃对Python3.2的支持。

0.3.0(2016-08-06)

  • 新的staticmethoddump,它返回传递的 配置对象为dict。它也用作可打印的 配置对象的表示(通过__repr__)。
  • 任何类型化设置的内部类型不能再是None。
  • 如果将layeredconfig子类化,则任何创建的子类都将是 子类的实例,而不是基本的layeredconfig类
  • 分层多个配置文件现在可以工作,即使以前 文件可能缺少后面的子部分。

以上都是由“绝地武士”完成的。非常感谢!

许多未报告的错误,主要与Unicode处理和 各种源中的类型转换也被修复。

0.2.2(2016-01-24)

  • 修复了在默认配置中使用类 自动强制,其中类的类型不是类型(如 “newint”和将来的其他类的情况 模块)。
  • 修复了从多个配置文件加载配置的错误 如果后面的配置缺少 早期的。感谢@badkapitan!

0.2.1(2014-11-26)

  • 使命令行源与“部分 已配置“ArgumentParser对象(已配置的分析器 一些,但不是全部,可能的论点)。

0.2.0(2014-11-22)

  • 与argparse集成:命令行源现在接受 可选的分析参数,它应该是 argparse.argumentparser对象。argparse的大多数特性,例如 指定参数类型和自动帮助文本
  • 用于读取的新源pyfile来自python源的ing配置 文件夹。
  • 另一个新的源etcdstore,用于从etcd读取配置 商店。

0.1.0(2014-11-03)

  • pypi上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用McClickListener单击了什么元素   Java时间戳在Oracle时间戳中不同情况下存储12 PM的奇怪行为   java无法使用事件总线对运行在不同机器上的垂直体进行通信   java Mockserver:收到请求后进行回调   java无法将Json字符串转换为Map<string,Object>   java如何按升序排列输出?   java视图行,带有oracle键。jbo。在SrCategoryParentIterator中找不到键[300100120394155]   javafxmysql连接示例   java正在等待加载完成   java是否可以将同一个有状态会话bean实例注入多个其他会话bean?   java无法让万向节检测离开或进入区域   使用JavaCV和OpenCV的java提供了dyld:lazy符号绑定失败:找不到符号:__sincos_stret   xml解析无法使用Java读取xml文档   java无法更改工具栏的颜色   javaapachesshd和JSCH   java无法在firebase存储中检索图像url   java问题与executeUpdate   同一应用程序中不同活动之间的java SharedReference