diff options
Diffstat (limited to 'defusedxml/expatbuilder.py')
-rw-r--r-- | defusedxml/expatbuilder.py | 47 |
1 files changed, 22 insertions, 25 deletions
diff --git a/defusedxml/expatbuilder.py b/defusedxml/expatbuilder.py index ffe4f7d..ab743d2 100644 --- a/defusedxml/expatbuilder.py +++ b/defusedxml/expatbuilder.py @@ -10,8 +10,7 @@ from __future__ import print_function, absolute_import from xml.dom.expatbuilder import ExpatBuilder as _ExpatBuilder from xml.dom.expatbuilder import Namespaces as _Namespaces -from .common import (DTDForbidden, EntitiesForbidden, - ExternalReferenceForbidden) +from .common import DTDForbidden, EntitiesForbidden, ExternalReferenceForbidden __origin__ = "xml.dom.expatbuilder" @@ -19,28 +18,27 @@ __origin__ = "xml.dom.expatbuilder" class DefusedExpatBuilder(_ExpatBuilder): """Defused document builder""" - def __init__(self, options=None, forbid_dtd=False, forbid_entities=True, - forbid_external=True): + def __init__( + self, options=None, forbid_dtd=False, forbid_entities=True, forbid_external=True + ): _ExpatBuilder.__init__(self, options) self.forbid_dtd = forbid_dtd self.forbid_entities = forbid_entities self.forbid_external = forbid_external - def defused_start_doctype_decl(self, name, sysid, pubid, - has_internal_subset): + def defused_start_doctype_decl(self, name, sysid, pubid, has_internal_subset): raise DTDForbidden(name, sysid, pubid) - def defused_entity_decl(self, name, is_parameter_entity, value, base, - sysid, pubid, notation_name): + def defused_entity_decl( + self, name, is_parameter_entity, value, base, sysid, pubid, notation_name + ): raise EntitiesForbidden(name, value, base, sysid, pubid, notation_name) - def defused_unparsed_entity_decl(self, name, base, sysid, pubid, - notation_name): + def defused_unparsed_entity_decl(self, name, base, sysid, pubid, notation_name): # expat 1.2 raise EntitiesForbidden(name, None, base, sysid, pubid, notation_name) - def defused_external_entity_ref_handler(self, context, base, sysid, - pubid): + def defused_external_entity_ref_handler(self, context, base, sysid, pubid): raise ExternalReferenceForbidden(context, base, sysid, pubid) def install(self, parser): @@ -62,16 +60,14 @@ class DefusedExpatBuilderNS(_Namespaces, DefusedExpatBuilder): def install(self, parser): DefusedExpatBuilder.install(self, parser) if self._options.namespace_declarations: - parser.StartNamespaceDeclHandler = ( - self.start_namespace_decl_handler) + parser.StartNamespaceDeclHandler = self.start_namespace_decl_handler def reset(self): DefusedExpatBuilder.reset(self) self._initNamespaces() -def parse(file, namespaces=True, forbid_dtd=False, forbid_entities=True, - forbid_external=True): +def parse(file, namespaces=True, forbid_dtd=False, forbid_entities=True, forbid_external=True): """Parse a document, returning the resulting Document node. 'file' may be either a file name or an open file object. @@ -80,12 +76,12 @@ def parse(file, namespaces=True, forbid_dtd=False, forbid_entities=True, build_builder = DefusedExpatBuilderNS else: build_builder = DefusedExpatBuilder - builder = build_builder(forbid_dtd=forbid_dtd, - forbid_entities=forbid_entities, - forbid_external=forbid_external) + builder = build_builder( + forbid_dtd=forbid_dtd, forbid_entities=forbid_entities, forbid_external=forbid_external + ) if isinstance(file, str): - fp = open(file, 'rb') + fp = open(file, "rb") try: result = builder.parseFile(fp) finally: @@ -95,8 +91,9 @@ def parse(file, namespaces=True, forbid_dtd=False, forbid_entities=True, return result -def parseString(string, namespaces=True, forbid_dtd=False, - forbid_entities=True, forbid_external=True): +def parseString( + string, namespaces=True, forbid_dtd=False, forbid_entities=True, forbid_external=True +): """Parse a document from a string, returning the resulting Document node. """ @@ -104,7 +101,7 @@ def parseString(string, namespaces=True, forbid_dtd=False, build_builder = DefusedExpatBuilderNS else: build_builder = DefusedExpatBuilder - builder = build_builder(forbid_dtd=forbid_dtd, - forbid_entities=forbid_entities, - forbid_external=forbid_external) + builder = build_builder( + forbid_dtd=forbid_dtd, forbid_entities=forbid_entities, forbid_external=forbid_external + ) return builder.parseString(string) |