mypy (typeshed) отклоняет csv.excel как возможное значение для возврата csv.Sniffer.sniff - PullRequest
0 голосов
/ 14 мая 2019

Использование 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.excel является действительным возвращением для функции sniff, поэтомуконечно, они должны иметь одинаковый тип.

Python 3.7.3, mypy 0.701

1 Ответ

0 голосов
/ 14 мая 2019

Я думаю, что это ошибка в typeshed: я поднял проблему

Согласно typeshed, Sniffer.sniff возвращает значение типа csv.Dialect, тогда как фактически оно возвращает значение типа Type[csv.Dialect]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...