跳转到主要内容

Unix风格扩展系统变量

项目描述

expandvars

Unix风格扩展系统变量

PyPI version codecov

灵感

此模块受GNU bash的变量扩展功能的启发。它可以作为Python的os.path.expandvars函数的替代品。

一个很好的用例是读取配置文件,并使用高级功能(如如果某些变量未定义则返回默认值)从环境变量中读取值。例如

[default]
my_secret_access_code = "${ACCESS_CODE:-default_access_code}"
my_important_variable = "${IMPORTANT_VARIABLE:?}"
my_updated_path = "$PATH:$HOME/.bin"
my_process_id = "$$"
my_nested_variable = "${!NESTED}"

注意:尽管此模块复制了bash的大部分常见行为,但它并不严格遵循bash。例如,它不与数组一起工作。

安装

Pip

pip install expandvars

Conda

conda install -c conda-forge expandvars

用法

from expandvars import expandvars

print(expandvars("$PATH:${HOME:?}/bin:${SOME_UNDEFINED_PATH:-/default/path}"))
# /bin:/sbin:/usr/bin:/usr/sbin:/home/you/bin:/default/path

示例

目前,请参考测试用例以查看其行为。

提示

nounset=True

如果您想默认启用严格解析(类似于bash中的set -u / set -o nounset),请传递nounset=True

# All the variables must be defined.
expandvars("$VAR1:${VAR2}:$VAR3", nounset=True)

# Raises UnboundVariable error.

注意:另一种方法是使用${VAR?}${VAR:?}语法。请参阅测试中的示例。

EXPANDVARS_RECOVER_NULL="foo"

如果您想暂时禁用对 nounset=True${VAR:?} 语法进行严格解析,请设置环境变量 EXPANDVARS_RECOVER_NULL=somevalue。这有助于某些使用场景,例如在测试环境中暂时禁用关键环境变量的严格解析,而不修改代码。

例如:

EXPANDVARS_RECOVER_NULL=foo myapp --config production.ini && echo "All fine."

警告:请尽量避免使用 export EXPANDVARS_RECOVER_NULL,因为这会永久禁用严格解析,直到您注销。

自定义

您可以通过使用更通用的 expand 函数来自定义用于扩展的变量符号和数据。

from expandvars import expand

print(expand("%PATH:$HOME/bin:%{SOME_UNDEFINED_PATH:-/default/path}", environ={"PATH": "/example"}, var_symbol="%"))
# /example:$HOME/bin:/default/path

贡献

要贡献,请按以下方式设置环境:

然后

# Clone repo
git clone https://github.com/sayanarijit/expandvars && cd expandvars

# Setup virtualenv
python -m venv .venv
source ./.venv/bin/activate

# Install as editable including test dependencies
pip install -e ".[tests]"
  • 遵循 通用 git 指南
  • 保持简单。运行 black .来自动格式化代码。
  • 通过运行 pytest 在本地测试您的更改(传递 --cov --cov-report html 以获取可浏览的覆盖率报告)。
  • 如果您熟悉 tox,您可能想使用它来在不同的 Python 版本中进行测试。

替代方案

  • environs - 简化环境变量解析。

项目详情


下载文件

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

源代码分发

expandvars-0.12.0.tar.gz (10.9 kB 查看散列值)

上传时间 源代码

构建分发

expandvars-0.12.0-py3-none-any.whl (7.3 kB 查看散列值)

上传时间 Python 3

由以下支持

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