mypy(已排版)拒绝csv.excel作为返回csv.Sniffer.sniff

时间:2019-05-14 14:20:32

标签: python-3.x csv mypy typeshed

使用mypy静态检查我的一些代码,然后出现此问题。代码示例:

import csv

d: csv.Dialect = csv.excel
d = csv.Sniffer().sniff("a")

但是mypy在第一次分配给d时给出了此错误:

error: Incompatible types in assignment (expression has type "Type[excel]", variable has type "Dialect")

因此,自然的解决方法是更改​​变量的类型。

from typing import Type

import csv

d: Type[csv.Dialect] = csv.excel
d = csv.Sniffer().sniff("a")

但是现在我在第二次分配给d时遇到此错误:

error: Incompatible types in assignment (expression has type "Dialect", variable has type "Type[Dialect]")

但这很奇怪,因为csv.excelsniff函数的有效返回值,因此请确保它们必须具有相同的类型。

Python 3.7.3,mypy 0.701

1 个答案:

答案 0 :(得分:0)

我认为这是typeshed中的错误:我提出了issue

根据typeshedSniffer.sniff返回类型为csv.Dialect的值,而实际上返回类型为Type[csv.Dialect]的值