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 | |
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>
-rw-r--r-- | defusedxml/ElementTree.py | 51 | ||||
-rw-r--r-- | defusedxml/common.py | 44 |
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 |