关于python:115K-Star一个开源的-Python-静态类型检查库

5次阅读

共计 2016 个字符,预计需要花费 6 分钟才能阅读完成。

简介
Mypy 是 Python 的动态类型查看库,能够向 Python 程序增加类型注解,并用 mypy 对它们进行动态类型查看,无需运行代码即可发现程序中潜在的谬误。还能够退出到 git hook 中,实现在提交代码前主动查看。Mypy 具备弱小且易于应用的类型零碎,具备古代性能,如类型推断、泛型、可调用类型、元组类型、联结类型和构造子类型。

应用 Python 3 注解语法(PEP 484 和 PEP 526)或 Python 2 基于正文的注解,可能无效的正文代码并应用 mypy 查看代码中的常见谬误。

能够在程序中混合应用动静类型和动态类型,对于遗留代码,如果不方便使用动态类型,能够随时回退到动静类型。如:

from typing import Iterator

def fib(n: int) -> Iterator[int]:
    a, b = 0, 1
    while a < n:
        yield a
        a, b = b, a + b

对于 Python 2.7,规范注解写成正文:

def is_palindrome(s):
    # type: (str) -> bool
    return s == s[::-1]

我的项目地址:

https://github.com/python/mypy

疾速开始
应用 pip 进行装置:

$ python3 -m pip install -U mypy

如果要运行最新版本的代码,能够从 git 进行装置:

$ python3 -m pip install -U git+git://github.com/python/mypy.git

装置实现后,能够应用以下命令对应用程序的动态类型进行类型查看:

$ mypy PROGRAM
运行测试的根本办法:

$ pip3 install -r test-requirements.txt
$ python2 -m pip install -U typing
$ ./runtests.py

IDE 集成

  • Vim
    应用 Syntastic:在 ~/.vimrc 增加 let g:syntastic_python_checkers=[‘mypy’]
    应用 ALE:在 ~/vim/ftplugin/python.vim 中增加配置明确启用,let b:ale_linters = [‘mypy’]
  • Emas,应用 Flycheck 和 Flycheck-mypy
  • Sublime Text,应用 SublimeLinter-contrib-mypy
  • Autom,应用 linter-mypy
  • PyCharm,应用 mypy 插件
  • VS Code,已提供对 mypy 的集成
  • 能够退出到 git hook 中,实现在提交代码前主动查看

常用命令
对指定内容进行查看

$ mypy foo.py bar.py some_directory

该命令是递归查看的,会查看目录下对应的所有指定文件。Mypy 还容许以其余形式查看指定代码:

-m MODULE, --module MODULE:对提供的模块进行类型查看,不会递归地查看
-p PACKAGE, --package PACKAGE:对提供的包进行类型查看,会递归查看
-c PROGRAM_TEXT, --command PROGRAM_TEXT:将提供的字符串作为程序进行查看
--exclude:递归发现要查看的文件时疏忽指定的文件名、目录名和门路

配置文件

--config-file CONFIG_FILE:从给定文件读取配置。笼罩 mypy 的内置默认值

无类型定义和调用

--disallow-untyped-calls:有类型注解的函数调用没有注解定义的函数时报告谬误
--disallow-untyped-defs,没有类型注解的函数定义时报告谬误
--disallow-incomplete-defs,遇到局部注解不残缺的函数定义时报告谬误
--disallow-untyped-decorators,带有类型注解的函数用没有注解的装璜器装璜时报告谬误

配置错误信息

--show-error-context:在所有谬误之前带有解释谬误上下文的音讯
--show-column-numbers:显示行号
--show-error-codes:显示错误码
--pretty:格式化谬误音讯,主动换行、显示源代码片段和显示谬误地位标记等
--show-absolute-path:显示文件的绝对路径

错误信息生成

--any-exprs-report DIR:在指定目录中生成一个文本文件报告
--cobertura-xml-report DIR:在指定目录中生成 Cobertura XML 类型检查报告,必须装置 lxml 库能力生成此报告
--html-report / --xslt-html-report DIR:在指定目录中生成 HTML 类型检查报告,必须装置 lxml 库能力生成此报告
--lineprecision-report DIR:在指定目录中生成一个纯文本文件报告,其中蕴含每个模块的类型查看行数

最近整顿了几百 G 的 Python 学习材料,蕴含新手入门电子书、教程、源码等等,收费分享给大家!想要的返回“Python 编程学习圈”,发送“J”即可收费取得

正文完
 0