- conditional(condition, contextmanager)
- Enter contextmanager only if condition is true.
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()
conditional supports asynchronous context managers:
async with conditional(CONDITION, ASYNCCONTEXTMANAGER()):
BODY()
The package ships with type annotations. Type checkers and IDEs can use this information to implement type safety and auto completion.
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)
For further details please refer to the API Documentation.