Skip to content

Commit

Permalink
DEPS: Lazy import defusedxml only when necessary (#12362)
Browse files Browse the repository at this point in the history
The `defusedxml` dependency was added to `sphinx.testing` in sphinx 7.3,
but it is not part of the core sphinx dependencies, and not strictly necessary for the running of the pytest plugin.
This commit moves the import into the only function which uses it,
so that the pytest plugins can be used again without this dependency.
  • Loading branch information
mgorny committed May 11, 2024
1 parent 98f953e commit ce86026
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion sphinx/testing/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
from types import MappingProxyType
from typing import TYPE_CHECKING

from defusedxml.ElementTree import parse as xml_parse
from docutils import nodes
from docutils.parsers.rst import directives, roles

Expand Down Expand Up @@ -73,6 +72,8 @@ def assert_node(node: Node, cls: Any = None, xpath: str = "", **kwargs: Any) ->
# keep this to restrict the API usage and to have a correct return type
def etree_parse(path: str | os.PathLike[str]) -> ElementTree:
"""Parse a file into a (safe) XML element tree."""
from defusedxml.ElementTree import parse as xml_parse

return xml_parse(path)


Expand Down

0 comments on commit ce86026

Please sign in to comment.