跳转到主要内容

将 __future__ 注释回退到 python<3.7

项目描述

Build Status Azure DevOps coverage

future-annotations

将 __future__ 注释回退到 python<3.7。

安装

pip install future-annotations

使用

在文件的顶部包含以下编码cookie(如果已经存在 utf-8 cookie,则替换它)

# -*- coding: future_annotations -*-

然后像往常一样编写 python3.7+ 前向注释代码!

# -*- coding: future_annotations -*-
class C:
    @classmethod
    def make(cls) -> C:
        return cls()

print(C.make())
$ python3.6 main.py
<__main__.C object at 0x7fb50825dd90>
$ mypy main.py
Success: no issues found in 1 source file

显示转换后的源代码

future-annotations 还包括一个命令行界面来显示转换后的源代码。

$ future-annotations-show main.py
# ****************************** -*-
class C:
    @classmethod
    def make(cls) -> 'C':
        return cls()

print(C.make())

这是如何工作的?

future-annotations 有两个部分

  1. 一个与 UTF-8 兼容的 codec,它执行源操作
    • codec 首先使用 UTF-8 编码解码源字节
    • 然后该 codec 利用 tokenize-rt 重写注释。
  2. 一个 .pth 文件,它在解释器启动时注册一个编码器。

如果你不使用正常的 site 注册

在设置(如 aws lambda)中,你使用 PYTHONPATHsys.path 而不是真正安装的包,上面的 .pth 魔法将不起作用。

在这种情况下,你需要在非注释包装器中手动初始化 future-annotations。例如

import future_annotations

future_annotations.register()

from actual_main import main

if __name__ == '__main__':
    exit(main())

你可能还喜欢

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

future_annotations-1.0.0.tar.gz (5.6 kB 查看哈希值)

上传时间

构建分发

future_annotations-1.0.0-py2.py3-none-any.whl (5.6 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下机构支持