Mar*_*tin 4 python dnspython mypy
我在 Ubuntu 22.10 下使用“pip install dnspython”安装了“dnspython”包,并制作了以下简短脚本:
#!/usr/bin/env python3
import dns.zone
import dns.query
zone = dns.zone.Zone("example.net")
dns.query.inbound_xfr("10.0.0.1", zone)
for (name, ttl, rdata) in zone.iterate_rdatas("SOA"):
serial_nr = rdata.serial
Run Code Online (Sandbox Code Playgroud)
当我使用 mypy(版本 0.990)检查此代码片段时,它会报告第error: Module has no attribute "inbound_xfr" [attr-defined]7 行。
根据mypy 文档,如果 Python 文件和存根文件都存在于搜索路径上的同一目录中,则仅使用存根文件。对于“dnspython”,存根文件query.pyi存在于dns包中,并且存根文件确实没有属性“inbound_xfr”。当我重命名或删除存根文件时,将query.py使用 Python 文件而不是存根文件,并且 mypy 不再抱怨缺少属性。
我猜这是一个“dnspython”错误?有没有办法告诉 mypy 对于query模块,应该忽略存根文件?
我建议仅忽略特定的错误行,而不是整个模块。
dns.query.inbound_xfr("10.0.0.1", zone) # type: ignore[attr-defined]
Run Code Online (Sandbox Code Playgroud)
这将抑制attr-defined该行生成的错误消息。如果您打算采用这种方法,我还建议使用该--warn-unused-ignores标志运行 mypy,它将报告任何冗余和未使用的# type: ignore语句(例如,更新库后)。
| 归档时间: |
|
| 查看次数: |
1908 次 |
| 最近记录: |