Python机器学习库的类型存根
data-science-types的Python项目详细描述
用于numpy、pandas和matplotlib的Mypy型存根
这是一个仅与PEP-561兼容的存根包 它提供matplotlib、numpy和pandas的类型信息。 通过安装这个包,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>然后使用 下面我们将介绍如何单独进行各种检查,
但是 Mypy的设置在存储库中的 从基目录中应该考虑这些设置。
我们强制执行0个mypy错误。在 我们使用Black来格式化存根文件。
首先安装 从基目录。在 标签:./check_all.sh
check_all.sh
应该更容易使用。在检查是否符合Mypy
mypy.ini
文件中指定。
只是跑步mypy tests
用黑色
格式化
black
,然后运行black .
Pytest
python -m pytest -vv tests/
薄片8
flake8 *-stubs
许可证
推荐PyPI第三方库