11

LXMLライブラリをmypy使用してXMLを解析するコードで型チェックを行うために使用しようとしています。

を使用する各行でetree.XPath、 から偽のエラーが発生しmypyます。たとえば、次の簡単なスクリプト

from lxml import etree    
NameXPath = etree.XPath("Name/text()")

エラーを生成します

test.py:3: error: "module" has no attribute "XPath"

しかし、スクリプトは正常に実行され、 myXPathは実行時に正しく動作します。

また、そのライブラリをタイプチェックしないように#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

現在mypy0.4.4を使用しています

4

1 に答える 1