summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Heimes <christian@python.org>2021-03-04 11:03:34 +0100
committerChristian Heimes <christian@python.org>2021-03-04 11:26:20 +0100
commit62634db29bc2ed05a8504cf022ba101f2e720f2f (patch)
tree4d36e3e156a37dd84a7bedd4fa25372276478889
parent96cd3476b2b3e0e0c95357370392bf13b3e89f7d (diff)
downloaddefusedxml-git-62634db29bc2ed05a8504cf022ba101f2e720f2f.tar.gz
Simplify code, remove _generate_etree_functions
cElementTree is now a simple alias of ElementTree. The generate function is no longer needed. Signed-off-by: Christian Heimes <christian@python.org>
-rw-r--r--defusedxml/ElementTree.py51
-rw-r--r--defusedxml/common.py44
2 files changed, 42 insertions, 53 deletions
diff --git a/defusedxml/ElementTree.py b/defusedxml/ElementTree.py
index 441f0a4..f2f8d61 100644
--- a/defusedxml/ElementTree.py
+++ b/defusedxml/ElementTree.py
@@ -16,12 +16,7 @@ from xml.etree.ElementTree import tostring
import importlib
-from .common import (
- DTDForbidden,
- EntitiesForbidden,
- ExternalReferenceForbidden,
- _generate_etree_functions,
-)
+from .common import DTDForbidden, EntitiesForbidden, ExternalReferenceForbidden
__origin__ = "xml.etree.ElementTree"
@@ -121,9 +116,47 @@ class DefusedXMLParser(_XMLParser):
# XMLParse is a typo, keep it for backwards compatibility
XMLTreeBuilder = XMLParse = XMLParser = DefusedXMLParser
-parse, iterparse, fromstring = _generate_etree_functions(
- DefusedXMLParser, _TreeBuilder, _parse, _iterparse
-)
+
+def parse(source, parser=None, forbid_dtd=False, forbid_entities=True, forbid_external=True):
+ if parser is None:
+ parser = DefusedXMLParser(
+ target=_TreeBuilder(),
+ forbid_dtd=forbid_dtd,
+ forbid_entities=forbid_entities,
+ forbid_external=forbid_external,
+ )
+ return _parse(source, parser)
+
+
+def iterparse(
+ source,
+ events=None,
+ parser=None,
+ forbid_dtd=False,
+ forbid_entities=True,
+ forbid_external=True,
+):
+ if parser is None:
+ parser = DefusedXMLParser(
+ target=_TreeBuilder(),
+ forbid_dtd=forbid_dtd,
+ forbid_entities=forbid_entities,
+ forbid_external=forbid_external,
+ )
+ return _iterparse(source, events, parser)
+
+
+def fromstring(text, forbid_dtd=False, forbid_entities=True, forbid_external=True):
+ parser = DefusedXMLParser(
+ target=_TreeBuilder(),
+ forbid_dtd=forbid_dtd,
+ forbid_entities=forbid_entities,
+ forbid_external=forbid_external,
+ )
+ parser.feed(text)
+ return parser.close()
+
+
XML = fromstring
diff --git a/defusedxml/common.py b/defusedxml/common.py
index d286009..ad51094 100644
--- a/defusedxml/common.py
+++ b/defusedxml/common.py
@@ -83,47 +83,3 @@ def _apply_defusing(defused_mod):
continue
setattr(stdlib_mod, name, obj)
return stdlib_mod
-
-
-def _generate_etree_functions(DefusedXMLParser, _TreeBuilder, _parse, _iterparse):
- """Factory for functions needed by etree, dependent on whether
- cElementTree or ElementTree is used."""
-
- def parse(source, parser=None, forbid_dtd=False, forbid_entities=True, forbid_external=True):
- if parser is None:
- parser = DefusedXMLParser(
- target=_TreeBuilder(),
- forbid_dtd=forbid_dtd,
- forbid_entities=forbid_entities,
- forbid_external=forbid_external,
- )
- return _parse(source, parser)
-
- def iterparse(
- source,
- events=None,
- parser=None,
- forbid_dtd=False,
- forbid_entities=True,
- forbid_external=True,
- ):
- if parser is None:
- parser = DefusedXMLParser(
- target=_TreeBuilder(),
- forbid_dtd=forbid_dtd,
- forbid_entities=forbid_entities,
- forbid_external=forbid_external,
- )
- return _iterparse(source, events, parser)
-
- def fromstring(text, forbid_dtd=False, forbid_entities=True, forbid_external=True):
- parser = DefusedXMLParser(
- target=_TreeBuilder(),
- forbid_dtd=forbid_dtd,
- forbid_entities=forbid_entities,
- forbid_external=forbid_external,
- )
- parser.feed(text)
- return parser.close()
-
- return parse, iterparse, fromstring