Python mypy Тип Подсказка shutil.copyfileobj() имеет несовместимый тип "Union[HTTPResponse, BinaryIO]"; ожидаемый IO[любой]

Я получаю следующую ошибку mypy для кода ниже. Как я могу правильно привести объект ответа, чтобы mypy была счастлива, передав мне метод shutil.copyfileobj?

error:Argument 1 to "copyfileobj" has incompatible type "Union[HTTPResponse, BinaryIO]"; expected IO[Any]

Следующий код передает поток от веб-запроса в файл.

request = urllib.request.Request(get_file_url, headers=self.data_api_headers)

with urllib.request.urlopen(request) as response:
    with open(export_file_path, 'wb') as out_file:

        shutil.copyfileobj(response, out_file)

1 ответ

Это была ошибка в типе

HTTPResponse заглушка не простиралась от BinaryIO и, следовательно, не считается кандидатом на принятие функций IO[bytes] - это было исправлено

Это исправление должно появиться в следующем выпуске mypy (должно быть 0.620 если я угадываю их версию схемы правильно). Кроме того, вы можете запустить mypy с --custom-typeshed-dir чтобы получить изменения раньше

Другие вопросы по тегам