contextlib模块的后向兼容和增强
项目描述
contextlib2是将标准库的contextlib模块向后兼容到更早Python版本的移植。
它有时也充当标准库版本未来增强的实际测试场。
许可
作为Python标准库软件的移植,本项目的实现、测试套件和其他支持文件均遵循CPython参考实现所使用的Python软件许可证进行分发。
唯一例外是包含的类型提示文件,该文件来自typeshed项目,因此遵循Apache License 2.0进行分发。
开发
contextlib2 无运行时依赖,但在构建时需要 setuptools 和 wheel 来生成通用 wheel 存档。
本地测试只需运行
python3 -m unittest discover -t . -s test
您可以使用 tox 测试多个 Python 版本
pip install tox tox
目前 tox 和 GitHub Actions 中测试的版本有
CPython 3.6
CPython 3.7
CPython 3.8
CPython 3.9
CPython 3.10
PyPy3
更新到新的 stdlib 引用版本
截至 Python 3.10,需要从 CPython 引用实现复制 4 个文件到 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
还需要从 typeshed 项目中检索对应的 contextlib2/__init__.pyi 版本
wget https://raw.githubusercontent.com/python/typeshed/master/stdlib/contextlib.pyi
对于 3.10 同步,测试文件中唯一需要更改的是从 contextlib 导入改为从 contextlib2 导入。测试目录的布局使得测试套件的导入方式与主 CPython 测试套件的导入方式相同。
以下补丁文件保存在 dev 目录中
对 contextlib2/__init__.py 的更改,使其能在旧版本上运行(并重新添加了从未升级到标准库版本的弃用 API)
对 contextlib2/__init__.pyi 的更改,使 Python 版本保护无条件(因为 contextlib2 API 在所有支持的版本上都是相同的)
对 docs/contextlib2.rst 的更改,在版本添加/更改说明中使用 contextlib2 版本号,并将模块文档与项目其他文档集成
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源代码发行版
构建发行版
contextlib2-21.6.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ab1e2bfe1d01d968e1b7e8d9023bc51ef3509bba217bb730cee3827e1ee82869 |
|
MD5 | dcdca610617ab7fffc6fd99665567987 |
|
BLAKE2b-256 | c71337ea7805ae3057992e96ecb1cffa2fa35c2ef4498543b846f90dd2348d8f |
contextlib2-21.6.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3fbdb64466afd23abaf6c977627b75b6139a5a3e8ce38405c5b413aed7a0471f |
|
MD5 | 60a6b4ed6c8e75ba8d02f3d5562bc0e5 |
|
BLAKE2b-256 | 76566d6872f79d14c0cb02f1646cbb4592eef935857c0951a105874b7b62a0c3 |