From 62634db29bc2ed05a8504cf022ba101f2e720f2f Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Thu, 4 Mar 2021 11:03:34 +0100 Subject: 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 --- defusedxml/ElementTree.py | 51 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 9 deletions(-) (limited to 'defusedxml/ElementTree.py') 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 -- cgit v1.2.1