fix: module 'defusedxml' has no attribute 'ElementTree' (#31429) (#31431)

Co-authored-by: Eugene Yurtsev <eugene@langchain.dev>
Co-authored-by: Christophe Bornet <cbornet@hotmail.com>
Co-authored-by: Eugene Yurtsev <eyurtsev@gmail.com>
This commit is contained in:
Sam Zhang 2025-06-03 02:09:22 +08:00 committed by GitHub
parent b93ed192bd
commit 2c4e0ab3bc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -51,7 +51,9 @@ class _StreamingParser:
""" """
if parser == "defusedxml": if parser == "defusedxml":
try: try:
import defusedxml # type: ignore[import-untyped] from defusedxml.ElementTree import ( # type: ignore[import-untyped]
XMLParser,
)
except ImportError as e: except ImportError as e:
msg = ( msg = (
"defusedxml is not installed. " "defusedxml is not installed. "
@ -59,7 +61,7 @@ class _StreamingParser:
"You can install it with `pip install defusedxml` " "You can install it with `pip install defusedxml` "
) )
raise ImportError(msg) from e raise ImportError(msg) from e
_parser = defusedxml.ElementTree.DefusedXMLParser(target=TreeBuilder()) _parser = XMLParser(target=TreeBuilder())
else: else:
_parser = None _parser = None
self.pull_parser = ET.XMLPullParser(["start", "end"], _parser=_parser) self.pull_parser = ET.XMLPullParser(["start", "end"], _parser=_parser)
@ -207,7 +209,7 @@ class XMLOutputParser(BaseTransformOutputParser):
# likely if you're reading this you can move them to the top of the file # likely if you're reading this you can move them to the top of the file
if self.parser == "defusedxml": if self.parser == "defusedxml":
try: try:
from defusedxml import ElementTree from defusedxml import ElementTree # type: ignore[import-untyped]
except ImportError as e: except ImportError as e:
msg = ( msg = (
"defusedxml is not installed. " "defusedxml is not installed. "