You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dependabot更新pytest-asyncio后触发contextlib冻结异常问题

问题:pytest-asyncio 1.2更新后,MinIO S3Error触发FrozenInstanceError

问题场景

Dependabot将pytest-asyncio更新至1.2版本后,pytest测试出现异常:
当代码尝试访问不存在的MinIO Bucket时,会触发minio.error.S3Error,但此时contextlib尝试修改该异常的__traceback__字段,直接抛出dataclasses.FrozenInstanceError。
注:本次仅更新了pytest-asyncio,MinIO客户端版本及Python版本均无变更。

临时修复方案

提前创建测试所需的MinIO Bucket,避免触发S3Error,即可绕过该问题。

可能的原因分析

  1. S3Error的冻结特性:MinIO的S3Error大概率是通过@dataclasses.dataclass(frozen=True)装饰的冻结数据类,这类实例的属性不允许被修改。
  2. pytest-asyncio 1.2的逻辑变更:该版本可能调整了异步测试中的异常追踪处理逻辑,在捕获异常后会尝试设置__traceback__属性(用于生成更清晰的测试报错信息),而旧版本的pytest-asyncio没有这个操作,因此之前未触发该问题。

进一步排查方向

  • 查阅pytest-asyncio 1.2的官方发布说明,确认是否有异常处理相关的代码变更。
  • 直接查看MinIO客户端源码中S3Error的定义,验证其是否为冻结数据类。
  • 若需临时绕过且无法提前创建Bucket,可尝试捕获S3Error后,创建一个非冻结的自定义异常实例并抛出,替代原异常。

内容的提问来源于stack exchange,提问作者A. Rabus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 02:29:50