Python mypy 类型提示 shutil.copyfileobj() 具有不兼容的类型 "Union[HTTPResponse, BinaryIO]";预期 IO[任何]

标签 python type-hinting mypy

我收到以下代码的以下 mypy 错误。我如何才能正确转换响应对象,以便 mypy 满意我将其传递给 shutil.copyfileobj 方法?

错误:“copyfileobj”的参数 1 具有不兼容的类型“Union[HTTPResponse, BinaryIO]”;预期 IO[任何]

以下代码将 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)

最佳答案

这是 a bug in typeshed

HTTPResponse stub 没有从 BinaryIO 扩展,因此不被认为是采用 IO[bytes] 的函数的候选者 --这已被修复

这个修复应该会出现在 mypy 的下一个版本中(如果我猜对了他们的版本方案,应该是 0.620)。或者,您可以使用 --custom-typeshed-dir 运行 mypy 以更快地获取更改

关于Python mypy 类型提示 shutil.copyfileobj() 具有不兼容的类型 "Union[HTTPResponse, BinaryIO]";预期 IO[任何],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42234589/

相关文章:

Python 类型提示 Callable with one known positional type 然后是 *args 和 **kwargs

python - 如何在 python 库中使用非欧洲语言

python - 如何解析 django 模板并渲染特定标签

python - 使用哨兵值作为默认值的类型提示参数

python - 在类构造函数中表达兄弟嵌套类的类型提示

python - mypy 提示扩展基类的属性类型

python - 如何使用连接器/python驱动程序(MySQL)插入行后立即获取LAST_INSERT_ID()

python - 为列中的每个因子级别创建新的数据框

python - 类型提示在 pycharm 2018.1 中并不总是有效?

python - 键入一个带有可调用的函数