跳转到主要内容

简单的Python应用程序配置文件助手

项目描述

pyflexconfig


  • 你更喜欢使用直接Python文件来为你的Python应用程序提供配置数据,只因为你可以在配置文件中提供你喜欢的任何对象类型。

  • 你希望将自定义配置文件放置在任何你喜欢的位置,例如传统的/etc或其他你喜欢的位置。

  • 你希望你的应用程序为某些或所有配置数据提供一些默认值。

  • 但如果你不希望是Python文件(YAML、JSON、XML等),只需提供你自己的解析器。

pyflexconfig只是配置/选项/配置数据管理游戏中众多角色之一,满足这些要求。

功能

  • 以程序方式提供默认配置,使用包中的默认文件或通过环境变量。

  • 使用自定义配置文件覆盖默认配置选项。你可以覆盖一个、两个或所有默认配置选项。

  • 如果你不喜欢Python配置文件,即使是在沙箱中执行,也没有关系。好吧,提供你自己的解析器。

  • 配置容器只是一个全局对象,你可以在其上添加属性。我建议使用types.SimpleNamespace对象,但任何东西都可以完成任务。

  • 您可以通过传统位置(例如 /etc/my_custom_config.py)、专门的命令行选项或环境变量来提供自定义配置文件。

  • 默认过滤器仅保留不以下划线开头的大写选项。这允许您在配置文件中使用小写命名的临时变量,这些变量在生成的配置对象中不可见。如果您想提供其他规则或添加其他规则到默认规则中,可以提供自己的过滤器。

  • 如果需要检查某些或所有配置选项的类型/值,您最终可以提供验证器。

安装

使用pyflexconfig

pyflexconfig需要Python 3.6或更高版本。使用pip安装它,就像平常一样。

pip install pyflexconfig

请注意,pyflexconfig在任何操作系统上都可以运行,不需要stdlib之外的包。

在pyflexconfig的分支上开发

当然,提供一个带有Python 3.6或更高版本的专用虚拟环境,然后fork pyflexconfig,接着

git clone <your fork URL>
cd pyflexconfig
pip install -e .[dev]

请从develop分支开始工作,该分支应包含最新的已验证开发。

请在向原始Git仓库的develop分支发出pull / merge请求之前,将您的fork重新基于develop分支并修复单元测试(运行pytest)。

当然,提交一个说明您更改的问题。

使用pyflexconfig

基本用法

您的默认配置文件 defaultsettings.py

# Warning: do not import here somethong that's not in the stdlib
ONE = 1
TWO = 2
# ...

同一目录下的 settings.py 模块

import pathlib
from types import SimpleNamespace
from pyflexconfig import bootstrap

config = SimpleNamespace(
    # "hardcoded" default options
    THREE = 3,
    # ...
)

# Load the default config that ships in the package
_default_config_path = pathlib.Path(__file__).resolve().parent / "defaultsettings.py"
bootstrap(config, default_path=_default_config_path)

以及您的主应用程序

from .settings import config

def main():
    print(config.ONE)
    print(config.TWO)
    print(config.THREE)

if __name__ == "__main__":
    main()

有关更多示例,请浏览存储库的demo/目录以及tests.py模块。

在控制台中查看完整的API输出

python -c "import pyflexconfig; help(pyflexconfig)"

许可

本软件根据MIT许可条款提供。请参阅Git仓库中的LICENSE文件或这里

作者

本软件来自Gilles Lenfant的受损大脑。

pyflexconfig的开发由Caisse des Depots赞助。

链接

历史

1.0.2 - 2020/7/5

  • 修复:接受pathlib.Path对象以及str路径。

1.0.1 - 2020/6/19

  • 从需求中删除了python-dotenv(未使用)
  • README.md中的一些错误
  • 历史文件

1.0.0 - 2020/6/18

  • 初始版本

项目详情


下载文件

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

源分发

pyflexconfig-1.0.2.tar.gz (6.2 KB 查看哈希值

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面