Conditionally enter a context manager
Project description
Package Contents
- conditional(condition, contextmanager)
Enter contextmanager only if condition is true.
Overview
The conditional context manager comes handy when you always want to execute a with-block but only conditionally want to apply its context manager.
If you find yourself writing code like this:
if CONDITION:
with CONTEXTMANAGER():
BODY()
else:
BODY()
Consider replacing it with:
with conditional(CONDITION, CONTEXTMANAGER()):
BODY()
Async
conditional supports asynchronous context managers:
async with conditional(CONDITION, ASYNCCONTEXTMANAGER()):
BODY()
Typing
The package ships with type annotations. Type checkers and IDEs can use this information to implement type safety and auto completion.
Examples
Say we want to ignore signals when a pager application is in the foreground, but not otherwise:
from conditional import conditional
with conditional(has_pager(cmd), ignoresignals()):
os.system(cmd)
Documentation
For further details please refer to the API Documentation.
Changelog
2.0 - 2024-05-14
Support asynchronous context managers. Thanks to Dawid Wolski. [stefan]
Require Python >= 3.5. [stefan]
1.5 - 2023-09-14
Add type annotations to the context manager. [stefan]
Update tox.ini for latest tox. [stefan]
Add GitHub CI workflow. [stefan]
Add .readthedocs.yaml file. [stefan]
Pin sphinx and sphinx-rtd-theme versions in docs extra. [stefan]
Add mypy extra which installs mypy. [stefan]
1.4 - 2022-03-09
Add Python 3.8-3.10 to tox.ini. Remove old Python versions. [stefan]
Replace deprecated python setup.py test in tox.ini. [stefan]
Remove deprecated test_suite and tests_require from setup.py. [stefan]
Move metadata to setup.cfg and add a pyproject.toml file. [stefan]
Include tests in sdist but not in wheel. [stefan]
1.3 - 2019-01-28
Add MANIFEST.in. [stefan]
Release as wheel. [stefan]
1.2 - 2017-02-05
Support Python 2.6-3.6 without 2to3. [stefan]
Add a LICENSE file. [stefan]
1.1 - 2014-04-19
Remove setuptools from install_requires because it isn’t. [stefan]
1.0 - 2012-05-16
Initial release. [stefan]
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for conditional-2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c98299df54486f6e8db36ddfecbc441d0b0bda92d394f2e32b7dd10d63db7f3 |
|
MD5 | 954e636a9e9f0437ca507761b596ef76 |
|
BLAKE2b-256 | 673ae5cc2452e8447a5c6bb7cb329137677d2cce593eaa11be72a6548fb6e755 |