已合并
test: add torch.__getattribute__ API validation #41414
zhouzirui1234创建于 7月12日
test: add torch.__getattribute__ API validation #41414
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 zhouzirui1234 的贡献)7月12日 创建了 pull request,commit 3585138e
7月12日 关联了issue:【社区任务】7月社区任务第一期-Ascend for PyTorch API 一致性开发(12)
atomgit-bot
7月12日 评论:
7月12日 评论:
变更摘要
本 PR 新增 test/test_torch_getattribute_api.py 测试文件,补充 torch.__getattribute__ 在 torch-npu 环境下的 API 一致性验证用例。由于 PyTorch 官方社区未提供该 API 的独立专项测试,且 torch-npu 现有测试目录中也未覆盖,因此按规范在 test 目录下新增自写测试,覆盖正常属性读取、动态属性访问及异常路径三种场景。
主要改动
- 新增测试类
TestTorchGetattributeApi:继承自TestCase,对torch.__getattribute__进行专项验证,包含三个测试用例。 - 已有属性一致性验证 (
test_get_existing_attributes):对__config__、Tensor、nn、empty等模块属性,断言torch.__getattribute__与getattr返回结果一致。 - 动态属性可见性验证 (
test_get_dynamic_attribute):通过setattr在运行时注入临时属性,验证__getattribute__能正确读取,并在finally中清理,确保测试不污染torch模块。 - 缺失属性异常验证 (
test_get_missing_attribute_raises):对不存在的属性名,断言torch.__getattribute__抛出AttributeError,保持与 Python module 属性访问语义一致。


ascend-robot
7月12日 评论:
7月12日 评论:
atomgit-bot
7月12日 评论:
7月12日 评论:
代码审查
经过仔细审查,该测试文件 test/test_torch_getattribute_api.py 没有发现任何逻辑错误、安全漏洞、可靠性问题或破坏性变更。
审查结论:
- 文件:
test/test_torch_getattribute_api.py - 状态: 无问题
三个测试用例覆盖了 torch.__getattribute__ 的核心场景——已有属性读取、动态属性读写、缺失属性异常路径,测试结构清晰,try/finally 清理逻辑正确,assertIs 的使用符合 Python 模块属性访问的语义。该文件为纯 Python 测试,不涉及 NPU 特定逻辑,无需导入 torch_npu。
总结:
- 按优先级统计:P0: 0, P1: 0, P2: 0, P3: 0
- 整体风险判断:低风险,此变更为新增的 API 一致性测试用例,代码质量良好,无待修复问题。
⚠️ 已识别出整体风险,但无法提取行内评论,请参考整体评估。


此处折叠了56条消息 查看更多
li_jing_hw
26 天前 评论:
26 天前 评论:
/approve


26 天前 添加了label:approvedlgtm
26 天前 删除了label:ci-pipeline-passed
26 天前 合入了pull request
ascend-robot
26 天前 评论:
26 天前 评论:
流水线 pytorch_gitcode_PR_multiVersion#13061 [ commitID:f82900bd ] 已完成


【合入来源】
关联 issue:
【修改方案】
本 PR 新增
test/test_torch_getattribute_api.py,补充torch.__getattribute__在 torch-npu 环境下的 API 一致性验证用例。该 API 是 Python module 对象的属性访问入口,用于从
torchmodule 上按名称读取属性。经检查,PyTorch 官方未提供torch.__getattribute__的独立专项测试,torch-npu 当前test和test_upstream目录中也未发现该 API 的专项测试。按照指导规范,本场景属于“PyTorch 官方社区无用例”,因此在 torch-nputest目录补充自写测试。任务 API 功能、上游社区用例情况与本 PR 处理方式如下:
torch.__getattribute__torchmodule 上的属性。test/test_upstream目录中也未发现专项测试。test/test_torch_getattribute_api.py,验证已有属性读取、动态属性读取和异常路径。主要开发思路:
torch.__getattribute__在当前多版本 torch-npu 环境中存在,且基础行为与 Python module 属性访问语义一致。torch.__getattribute__的独立专项测试。test和test_upstream目录,未发现该 API 的现有专项测试。test_upstreampatch。torchmodule 属性访问能力,不属于npu、fx、nn等子模块,因此测试文件放在 torch-npu 根测试目录test/test_torch_getattribute_api.py。新增测试文件:
新增测试方法:
各测试核心验证点如下:
test_get_existing_attributestypes.ModuleType.__getattribute__(torch, "__dict__")获取模块字典作为独立 oracle,验证torch.__config__、torch.Tensor、torch.nn、torch.empty等已存在属性通过torch.__getattribute__读取时返回模块字典中的同一对象。test_get_dynamic_attributetorchmodule 上临时设置动态属性,验证torch.__getattribute__可读取该属性,且返回对象与模块字典中记录的对象一致;测试结束后清理动态属性。test_get_missing_attribute_raisesAttributeError。【资料变更】
不涉及资料 PR。
已检查 PyTorch 官方公开文档与 Ascend native API 文档,未发现
torch.__getattribute__独立条目。该 API 属于 Python module 固有属性访问机制,不是计算类公开 API,因此不新增docs.md,不提交资料 PR。【接口变更】
不涉及。
本 PR 不修改 API 实现,不改变现有接口行为,不新增 torch-npu 对外接口。
【功能验证】
运行环境:
分支验证环境:
执行命令:
cd /root python /workspace/a3-zzr-env/repos/pytorch-v2.7.1/test/test_torch_getattribute_api.py执行结果:
最终验证结论:
torch.__getattribute__的正常属性读取、动态属性读取和异常路径。【CheckList】