条件进入上下文管理器
项目描述
包内容
- conditional(condition, contextmanager)
仅当条件为真时进入上下文管理器。
概述
当您始终想执行with块,但只想有条件地应用其上下文管理器时,条件上下文管理器非常有用。
如果您发现自己正在编写如下代码
if CONDITION:
with CONTEXTMANAGER():
BODY()
else:
BODY()
请考虑替换为
with conditional(CONDITION, CONTEXTMANAGER()):
BODY()
异步
条件语句 支持异步上下文管理器
async with conditional(CONDITION, ASYNCCONTEXTMANAGER()):
BODY()
类型
此包附带了类型注解。类型检查器和IDE可以使用此信息来实现类型安全和自动完成。
示例
假设我们想在页签应用程序处于前台时忽略信号,但在其他情况下不这么做
from conditional import conditional
with conditional(has_pager(cmd), ignoresignals()):
os.system(cmd)
文档
有关更多详细信息,请参阅API文档。
变更日志
2.0 - 2024-05-14
支持异步上下文管理器。感谢Dawid Wolski。[stefan]
要求Python >= 3.5。[stefan]
1.5 - 2023-09-14
向上下文管理器添加类型注解。[stefan]
更新tox.ini以使用最新的tox。[stefan]
添加GitHub CI工作流。[stefan]
添加.readthedocs.yaml文件。[stefan]
在docs extra中固定sphinx和sphinx-rtd-theme版本。[stefan]
添加mypy extra,该extra会安装mypy。[stefan]
1.4 - 2022-03-09
将tox.ini中的Python 3.8-3.10添加到。删除旧版本的Python。[stefan]
在tox.ini中替换已弃用的python setup.py test。[stefan]
从 setup.py 中移除已过时的 test_suite 和 tests_require。[stefan]
将元数据移动到 setup.cfg 并添加一个 pyproject.toml 文件。[stefan]
在 sdist 中包含测试,但在 wheel 中不包含。[stefan]
1.3 - 2019-01-28
添加 MANIFEST.in。[stefan]
以 wheel 格式发布。[stefan]
1.2 - 2017-02-05
支持 Python 2.6-3.6,无需 2to3。[stefan]
添加一个 LICENSE 文件。[stefan]
1.1 - 2014-04-19
由于不是必需的,从 install_requires 中移除 setuptools。[stefan]
1.0 - 2012-05-16
初始版本。[stefan]
项目详情
下载文件
下载适用于您平台文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。