===========
conditional
Conditionally enter a context manager
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:
.. code-block:: python
if CONDITION:
with CONTEXTMANAGER():
BODY()
else:
BODY()
Consider replacing it with:
.. code-block:: python
with conditional(CONDITION, CONTEXTMANAGER()):
BODY()
Async
conditional supports asynchronous context managers:
.. code-block:: python
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:
.. code-block:: python
from conditional import conditional
with conditional(has_pager(cmd), ignoresignals()):
os.system(cmd)
Documentation
For further details please refer to the API Documentation_.
.. _API Documentation: https://conditional.readthedocs.io/en/stable/
Changelog
2.0 - 2024-05-14
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
1.2 - 2017-02-05
1.1 - 2014-04-19
- Remove setuptools from install_requires because it isn't.
[stefan]
1.0 - 2012-05-16
- Initial release.
[stefan]