Python机器学习库的类型存根

data-science-types的Python项目详细描述


用于numpy、pandas和matplotlib的Mypy型存根

Join the chat at https://gitter.im/data-science-types/community

这是一个仅与PEP-561兼容的存根包 它提供matplotlibnumpypandas的类型信息。 通过安装这个包,mypy类型检查器(或pytype或PyCharm)可以recognize这些包中的类型。在

注意:这是一项正在进行的工作

很多函数已经被类型化了,但是仍然缺少一个lot(numpy和pandas是juge库)。 很可能你会看到一条来自Mypy的消息,声明函数实际上并不存在。 如果您遇到功能缺失,我们将非常乐意为您发送公关。 如果您不确定如何键入函数,我们可以讨论它。在

安装

您可以从Pypi获得此包:

pip install data-science-types

要获取最新版本,请直接从GitHub安装:

^{pr2}$

或者在某处克隆存储库并执行pip install -e .。在

示例

以下是可以检查的内容:

数组创建

importnumpyasnparr1:np.ndarray[np.int64]=np.array([3,7,39,-3])# OKarr2:np.ndarray[np.int32]=np.array([3,7,39,-3])# Type errorarr3:np.ndarray[np.int32]=np.array([3,7,39,-3],dtype=np.int32)# OKarr4:np.ndarray[float]=np.array([3,7,39,-3],dtype=float)# Type error: the type of ndarray can not be just "float"arr5:np.ndarray[np.float64]=np.array([3,7,39,-3],dtype=float)# OK

运行

importnumpyasnparr1:np.ndarray[np.int64]=np.array([3,7,39,-3])arr2:np.ndarray[np.int64]=np.array([4,12,9,-1])result1:np.ndarray[np.int64]=np.divide(arr1,arr2)# Type errorresult2:np.ndarray[np.float64]=np.divide(arr1,arr2)# OKcompare:np.ndarray[np.bool_]=(arr1==arr2)

降低

importnumpyasnparr:np.ndarray[np.float64]=np.array([[1.3,0.7],[-43.0,5.6]])sum1:int=np.sum(arr)# Type errorsum2:np.float64=np.sum(arr)# OKsum3:float=np.sum(arr)# Also OK: np.float64 is a subclass of floatsum4:np.ndarray[np.float64]=np.sum(arr,axis=0)# OK# the same works with np.max, np.min and np.prod

哲学

我们的目标不是精确地重新创建api。 主要目标是对代码进行有用的检查。 通常,库中的实际api比存根中的类型签名更为宽松; 但这(通常)是一个特性,而不是一个bug。在

贡献

我们总是欢迎捐款。 所有请求都要经过CI检查。 我们检查是否符合Mypy,文件格式是否符合Black规范。在

您可以通过

pip install -e '.[dev]'

这也将安装numpy、pandas和matplotlib来运行测试。在

在本地运行CI(推荐)

我们包含了一个脚本,该脚本将在打开PR时运行CI检查。 要在本地测试这些,您需要在您的环境中安装类型存根。 通常,你会用

pip install -e .

{cd2>然后使用

./check_all.sh

下面我们将介绍如何单独进行各种检查, 但是check_all.sh应该更容易使用。在

检查是否符合Mypy

Mypy的设置在存储库中的mypy.ini文件中指定。 只是跑步

mypy tests

从基目录中应该考虑这些设置。 我们强制执行0个mypy错误。在

用黑色

格式化

我们使用Black来格式化存根文件。 首先安装black,然后运行

black .

从基目录。在

Pytest

python -m pytest -vv tests/

薄片8

flake8 *-stubs

许可证

Apache 2.0

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Leetcode移动零:我的bug在哪里?   Selenium WebDriver中隐式等待()中的java错误   macos如何从Java中访问资源文件。在OS X和Java 7上运行的应用程序包?   java setSelectionBackGround()不在jTable中设置颜色   java使用URL加载图像   JAVA在不删除空格的情况下拆分   java在Android上将Google+配置文件图片从Uri转换为位图   java我无法访问JSP页面中的modelmap值   javaaspose数据集。readXml生成更复杂的结构   java是否有任何方法可以查询用户是否存在于基于SAML的身份提供程序中?   java如何在每次添加文本时在listview一侧永久添加标题?   JavaJSP:我能呈现出比当前编写器输出更高的stringwriter吗?   JDK 8中的java Javadoc:无效的“不允许自关闭元素”