
Security News
MCP Community Begins Work on Official MCP Metaregistry
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
.. image:: https://jazzband.co/static/img/badge.svg :target: https://jazzband.co/ :alt: Jazzband
.. image:: https://github.com/jazzband/contextlib2/workflows/Test/badge.svg :target: https://github.com/jazzband/contextlib2/actions :alt: Tests
.. image:: https://codecov.io/gh/jazzband/contextlib2/branch/master/graph/badge.svg :target: https://codecov.io/gh/jazzband/contextlib2 :alt: Coverage
.. image:: https://readthedocs.org/projects/contextlib2/badge/?version=latest :target: https://contextlib2.readthedocs.org/ :alt: Latest Docs
contextlib2 is a backport of the standard library's contextlib module <https://docs.python.org/3/library/contextlib.html>
_ to
earlier Python versions.
It also sometimes serves as a real world proving ground for possible future enhancements to the standard library version.
As a backport of Python standard library software, the implementation, test suite and other supporting files for this project are distributed under the Python Software License used for the CPython reference implementation.
The one exception is the included type hints file, which comes from the
typeshed
project, and is hence distributed under the Apache License 2.0.
contextlib2 has no runtime dependencies, but requires setuptools
and
wheel
at build time to generate universal wheel archives.
Local testing is a matter of running::
python3 -m unittest discover -t . -s test
You can test against multiple versions of Python with
tox <https://tox.testrun.org/>
_::
pip install tox
tox
Versions currently tested in both tox and GitHub Actions are:
Updating to a new stdlib reference version ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
As of Python 3.10, 4 files needed to be copied from the CPython reference implementation to contextlib2:
Doc/contextlib.rst
-> docs/contextlib2.rst
Lib/contextlib.py
-> contextlib2/__init__.py
Lib/test/test_contextlib.py
-> test/test_contextlib.py
Lib/test/test_contextlib_async.py
-> test/test_contextlib_async.py
The corresponding version of contextlib2/__init__.pyi
also needs to be
retrieved from the typeshed
project::
wget https://raw.githubusercontent.com/python/typeshed/master/stdlib/contextlib.pyi
For the 3.10 sync, the only changes needed to the test files were to import from
contextlib2
rather than contextlib
. The test directory is laid out so
that the test suite's imports from test.support
work the same way they do in
the main CPython test suite.
The following patch files are saved in the dev
directory:
contextlib2/__init__.py
to get it to run on the older
versions (and to add back in the deprecated APIs that never graduated to
the standard library version)contextlib2/__init__.pyi
to make the Python version
guards unconditional (since the contextlib2
API is the same on all
supported versions)docs/contextlib2.rst
to use contextlib2
version
numbers in the version added/changed notes and to integrate the module
documentation with the rest of the project documentationFAQs
Backports and enhancements for the contextlib module
We found that contextlib2 demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
Research
Security News
Socket uncovers an npm Trojan stealing crypto wallets and BullX credentials via obfuscated code and Telegram exfiltration.
Research
Security News
Malicious npm packages posing as developer tools target macOS Cursor IDE users, stealing credentials and modifying files to gain persistent backdoor access.