semvec/pypi-packages huggingface dataset:
conditional 2.0
Conditionally enter a context manager
License: BSD-2-Clause
Requires Python: >=3.5
Keywords: conditional, context manager, contextmanager, with, async, async with, enter, exit

===========
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
----------------

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