CLI工具,用于自动为Python代码添加类型注解。
项目描述
infer-types
一个CLI工具,用于自动将类型注解添加到Python代码中。
使用该工具的主要场景是帮助您为大型旧代码库添加注解。它不能100%解决您的任务,但肯定会极大地帮助您,因为现实世界中的许多函数都有相当简单的返回类型,这些类型很容易自动推断。
特性
- 100%自动化,无需努力即可获得大量类型注解。
- 100%静态,所有类型都是在不运行代码的情况下推断的。
- 很多启发式和智能推断。
- 积极使用 typeshed 来查找未注解依赖项的注解。
示例
假设,你有一个以下方法
class Database:
def users_count(self):
return len(self.users)
由于 len
总是返回 int
,因此 infer-types
能够推断方法的返回类型。因此,在运行该工具后,代码将如下所示
class Database:
def users_count(self) -> int:
return len(self.users)
安装
python3 -m pip install infer-types
使用
python3 -m infer_types ./example/
该工具将添加新的导入语句,这些语句可以重复,并且位于文件顶部。要修复它,请运行 isort
python3 -m isort ./example/
infer-types 工具使用了 Python 3.10 中引入的新潮语法进行类型注解。因此,它将发出 str | None
而不是 Optional[str]
。如果你的代码应该在较旧的 Python 版本上运行,请在每个文件的开始处添加 from __future__ import annotations
。这将解决问题并使你的应用程序启动更快。你也可以使用 isort 来做到这一点。
python3 -m isort --add-import 'from __future__ import annotations' ./example/
有关更多帮助注解代码的工具,请参阅 awesome-python-typing。
工作原理
- 大部分启发式算法都在 astypes 包中。查看它以了解更多关于主要推理逻辑的信息。
- 如果在基类中定义了相同的方法,则从那里复制类型注解。
- 如果没有返回语句返回值,则返回类型为
None
。 - 如果有
yield
语句,则返回类型为typing.Iterator
。 - 在某些情况下,可以根据函数名称猜测返回类型。例如,假设
is_open
函数返回bool
,因为它以is_
开头。
你可以使用 --only
标志只运行特定的启发式算法。
项目详情
下载文件
下载适用于您平台的自定义文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。
源分布
infer_types-1.0.0.tar.gz (14.6 kB 查看哈希值)
构建分布
infer_types-1.0.0-py3-none-any.whl (11.2 kB 查看哈希值)
关闭
infer_types-1.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a7d09a87431bccf73c30983b7918803bf4fe066df053aecf35ab293aad9a0c2b |
|
MD5 | c09a9906057d6ea92bc19ad1065b9dff |
|
BLAKE2b-256 | ab00bce897ae055f60e805485ccf64a0b74767ed397195a48e9e220c63bfa41f |
关闭
infer_types-1.0.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 98ac8ff060061d56736e13238945b835c5c90eef7fc17f42adf9dded26b94f29 |
|
MD5 | b922fac369377e3d6d555a055ab0f8b0 |
|
BLAKE2b-256 | 3a299b412805f930bae4dd60babef9be5677a033e00f3c0b3b40e64e6f3224cb |