跳转到主要内容

条件进入上下文管理器

项目描述

包内容

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_suitetests_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]

项目详情


下载文件

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

源分发

conditional-2.0.tar.gz (8.0 kB 查看哈希值)

上传时间

构建分发

conditional-2.0-py3-none-any.whl (4.7 kB 查看哈希值)

上传时间 Python 3

支持者