pytype和mypy都没有抱怨类型错误?

时间:2019-02-06 16:38:31

标签: python

我有以下测试脚本,该脚本由于设计而失败。但是,pytype和mypy都没有警告我有关此问题的信息。为什么会这样?

import pandas as pd
import collections


def junkmerge(dfs: collections.abc.Sequence, *args, **kwargs) -> pd.DataFrame:
    print(dfs)
    return pd.concat(dfs, *args, **kwargs)

if __name__ == '__main__':
    pd1 = pd.DataFrame(data={'a': [1]})
    pd2 = pd.DataFrame(data={'a': [2]})
    junkmerge(pd1, pd2, join='outer')

注意:我专门检查了数据帧不是序列。

In [6]: isinstance(pd1, collections.abc.Sequence)                      
Out[6]: False

In [10]: issubclass(pd.DataFrame, collections.abc.Sequence)                                                                                                                                                        
Out[10]: False

1 个答案:

答案 0 :(得分:0)

mypy或pytype都不支持熊猫。因此,当将数据框作为函数参数传入时,两者都不执行检查。

在代码中删除了pandas依赖后,我能够从mypy和pytype都获取错误。

请参见下面复制的代码。

import collections

def junkmerge(dfs: collections.abc.Sequence[int], *args, **kwargs) -> pd.DataFrame:
    print(dfs)
    return

if __name__ == '__main__':
    junkmerge(1, 2, join='outer')