diff options
author | Christian Heimes <christian@python.org> | 2021-03-04 11:03:34 +0100 |
---|---|---|
committer | Christian Heimes <christian@python.org> | 2021-03-04 11:26:20 +0100 |
commit | 62634db29bc2ed05a8504cf022ba101f2e720f2f (patch) | |
tree | 4d36e3e156a37dd84a7bedd4fa25372276478889 /defusedxml/ElementTree.py | |
parent | 96cd3476b2b3e0e0c95357370392bf13b3e89f7d (diff) | |
download | defusedxml-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>
Diffstat (limited to 'defusedxml/ElementTree.py')
-rw-r--r-- | defusedxml/ElementTree.py | 51 |
1 files changed, 42 insertions, 9 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 |