python类型推断器
pytype的Python项目详细描述
pytype-
pytype检查和推断python代码的类型-不需要类型 注解。pytype可以:
- lint普通python代码,标记常见错误,如属性拼写错误 名称、不正确的函数调用和更多 文件边界。
- 执行用户提供的类型注释。而注释是 对于pytype是可选的,它将检查并在出现的地方应用它们。
- 在独立文件中生成类型注释("pyi文件"), 它可以通过提供的 合并pyi工具。
pytype是一个静态分析器,这意味着它不执行它运行的代码。
google的数千个项目都依赖pytype来保存它们的python代码 打印良好且无错误。
有关详细信息,请参阅《用户指南》或《常见问题解答》。
pytype与其他类型的checker有何不同?
pytype使用推理而不是渐进式类型。这意味着它会 即使代码上没有类型提示,也可以推断代码上的类型。所以它可以 检测此类代码的问题,其他类型的检查程序将忽略这些问题:
deff():return"PyCon"defg():returnf()+2019# pytype: line 4, in g: unsupported operand type(s) for +: 'str'# and 'int' [unsupported-operands]
pytype是宽松的而不是严格的。这意味着它允许所有 在运行时成功且不与注释冲突的操作。为了 实例中,此代码将在pytype中安全传递,但在其他类型中失败。 检查程序,在初始化变量后立即将类型分配给它们:
fromtypingimportListdefget_list()->List[str]:lst=["PyCon"]lst.append(2019)return[str(x)forxinlst]# mypy: line 4: error: Argument 1 to "append" of "list" has# incompatible type "int"; expected "str"
< > >- pytype目前是在linux上开发和测试的,linux是主要支持的 站台。
- 在MacOSX上安装需要OSX 10.7或更高版本以及Xcode V8或更高版本。
- 当前不支持Windows,除非您使用wsl
-v,--python版本:目标代码的python版本(major.minor)。 默认为
3.6
-o,--output
:所有pytype输出进入的目录,包括 生成.pyi文件。默认为.pytype
-d,--禁用
。要忽略的错误名称的逗号分隔列表。详细的 pytype错误名称的解释见本文档。 默认为空。注释ast
,用于ast的进行中类型注释器。合并pyi
,用于将.pyi文件中的类型信息合并到 python文件。pytd
,用于.pyi文件的解析器。pytype single
,pytype开发人员的调试工具,它分析 单个python文件,假设已经为所有 其依赖关系。pyxref
,交叉引用生成器。- Windows支持
另请参见相应的faq条目
快速启动
要快速开始类型检查文件或目录,请运行 接下来,用您的输入替换文件或目录
pip install pytype
pytype file_or_directory
要在整个包上设置pytype,请将以下内容添加到set up.cfg
文件中
在包正上方的目录中,用
包裹名称:
[pytype]
inputs = package_name
现在可以运行no-argument命令pytype
来键入check包。它是
也很容易将pytype添加到自动化测试中;请参见
在travis上运行pytype的github项目的示例。
最后,pytype生成推断类型信息的文件,默认情况下位于
在.pytype/pyi
中。您可以使用此信息键入annotate
相应的源文件,用文件的导入路径替换module.py
merge-pyi -i module.py .pytype/pyi/module.pyi
要求
您需要一个python 2.7或3.5+解释器来运行pytype,以及
在$path
中为您正在分析的代码的python版本解释器。
平台支持:
安装
pytype可以通过pip安装。请注意,安装需要车轮
以及设置工具。(如果您在Virtualenv中工作,这两个包应该
已经存在。)
pip install pytype
或者从github上的源代码 您也可以运行 在 按照上面的步骤操作,但请确保首先拥有正确的库: 常用选项: 有关选项的完整列表,请运行 除上述内容外,还可以指示pytype使用自定义typeshed
通过设置 为了方便起见,可以将pytype配置保存在文件中。配置
文件是具有 首先生成一个示例配置文件: 现在根据本地设置自定义文件,只保留
需要。目录可能与配置文件的位置有关,即
如果您想作为项目的一部分签入配置文件,则此功能非常有用。 例如,假设您有以下目录结构,并希望
分析包 下面是填充的配置文件,它指示pytype进行类型检查
我们本可以发现 除了pytype本身之外,pytype还附带了一些脚本: 阿帕奇2.0 这不是谷歌的官方产品。git clone --recurse-submodules https://github.com/google/pytype.git
cd pytype
pip install -U .
git submodule init
git submodule update
pytype
目录中。安装在wsl上
sudo apt install build-essential python3-dev libpython3-dev
用法
deff():return"PyCon"defg():returnf()+2019# pytype: line 4, in g: unsupported operand type(s) for +: 'str'# and 'int' [unsupported-operands]
0
pytype--help
$typeshed\u home而不是自己的捆绑副本来安装
配置文件
[pytype]
节的ini样式文件;如果是显式配置文件
未提供,pytype将在第一个
setup.cfg
从当前工作目录向上移动找到的文件。deff():return"PyCon"defg():returnf()+2019# pytype: line 4, in g: unsupported operand type(s) for +: 'str'# and 'int' [unsupported-operands]
1
~/repo1/foo
,这取决于包~/repo2/bar
:deff():return"PyCon"defg():returnf()+2019# pytype: line 4, in g: unsupported operand type(s) for +: 'str'# and 'int' [unsupported-operands]
2
~/repo1/foo
作为python 3.6代码,在~/repo1
和~/repo2
中查找包,
忽略属性错误。请注意,包的路径不包括
包裹本身。deff():return"PyCon"defg():returnf()+2019# pytype: line 4, in g: unsupported operand type(s) for +: 'str'# and 'int' [unsupported-operands]
3
~/repo2
需要通过
运行pytype的断开依赖关系检查器:deff():return"PyCon"defg():returnf()+2019# pytype: line 4, in g: unsupported operand type(s) for +: 'str'# and 'int' [unsupported-operands]
4
小计
路线图
许可证
免责声明
推荐PyPI第三方库