跳至主要内容

contextlib模块的后向兼容和增强

项目描述

Jazzband Tests Coverage Latest Docs

contextlib2是将标准库的contextlib模块向后兼容到更早Python版本的移植。

它有时也充当标准库版本未来增强的实际测试场。

许可

作为Python标准库软件的移植,本项目的实现、测试套件和其他支持文件均遵循CPython参考实现所使用的Python软件许可证进行分发。

唯一例外是包含的类型提示文件,该文件来自typeshed项目,因此遵循Apache License 2.0进行分发。

开发

contextlib2 无运行时依赖,但在构建时需要 setuptoolswheel 来生成通用 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 (43.8 kB 查看哈希值)

上传时间 源代码

构建发行版

contextlib2-21.6.0-py2.py3-none-any.whl (13.3 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者