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
чтобы получить изменения раньше