Python mypy Type Hinting shutil.copyfileobj()具有不兼容的类型“Union [HTTPResponse,BinaryIO]”;预期IO [任意]

时间:2017-02-14 19:27:49

标签: python type-hinting mypy

我在下面的代码中遇到以下mypy错误。我如何正确地转换响应对象,以便mypy对我将它传递给shutil.copyfileobj方法感到满意?

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

以下代码将Web请求的响应流式传输到文件。

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 个答案:

答案 0 :(得分:0)

这是a bug in typeshed

HTTPResponse存根未从BinaryIO延伸,因此不被视为IO[bytes]功能的候选者 - 已修复

此修补程序应位于mypy的下一版本中(如果我正确猜测其版本方案,则应为0.620)。或者,您可以使用mypy运行--custom-typeshed-dir以更快地获得更改