Unix风格扩展系统变量
项目描述
expandvars
Unix风格扩展系统变量
灵感
此模块受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 查看散列值)
关闭
expandvars-0.12.0.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 7d1adfa55728cf4b5d812ece3d087703faea953e0c0a1a78415de9df5024d844 |
|
MD5 | 8091f578a547e2b4b9df59100a179266 |
|
BLAKE2b-256 | 2ba546d1f58edcae1d632fafdfee313e378240e002ae45d26502bac938bd8751 |
关闭
expandvars-0.12.0-py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 7432c1c2ae50c671a8146583177d60020dd210ada7d940e52af91f1f84f753b2 |
|
MD5 | 29470eefb7ef23104a97f9803bce0e1b |
|
BLAKE2b-256 | dfb3072c28eace372ba7630ea187b7efd7f09cc8bcebf847a96b5e03e9cc0828 |