我正在尝试mypy
在一些使用LXML库解析 XML 的代码中进行类型检查。
在我使用etree.XPath
的每一行上,我都从mypy
. 例如,以下简单的脚本
from lxml import etree
NameXPath = etree.XPath("Name/text()")
产生错误
test.py:3: error: "module" has no attribute "XPath"
但是脚本运行良好,并且我XPath
的 ' 在运行时正常工作。
我还尝试#type:ignore
了导入,我认为这可能会告诉mypy
不要对该库进行类型检查,但这并没有抑制错误。
from lxml import etree # type:ignore
NameXPath = etree.XPath("Name/text()")
etree.XPath
通过将调用移动到没有任何类型注释的单独函数中, 我确实在抑制一些错误方面取得了一些成功,但这似乎是一种黑客行为,并迫使我以尴尬的方式安排我的代码。
我想知道是否有办法完全抑制这些虚假错误,或者可能暗示该etree.XPath
功能确实存在,因为它似乎无法自行解决。
需要明确的是,我实际上并不关心知道从库mypy
中出来的结构的正确类型。lxml
我更关心将类型信息放在我自己的类中,我将解析的信息推入其中,所以我想要有类型检查函数,用于etree.XPath
执行查询、查找数据,然后将它们推入类型-在我的脚本中定义的带注释的类。
mypy
中的其他功能似乎没有困难etree
,例如我的调用没问题etree.parse
我目前正在使用mypy
0.4.4