github.com/munnerz/test-infra@v0.0.0-20190108210205-ce3d181dc989/gubernator/third_party/defusedxml/sax.py (about) 1 # defusedxml 2 # 3 # Copyright (c) 2013 by Christian Heimes <christian@python.org> 4 # Licensed to PSF under a Contributor Agreement. 5 # See http://www.python.org/psf/license for licensing details. 6 """Defused xml.sax 7 """ 8 from __future__ import print_function, absolute_import 9 10 from xml.sax import InputSource as _InputSource 11 from xml.sax import ErrorHandler as _ErrorHandler 12 13 from . import expatreader 14 15 __origin__ = "xml.sax" 16 17 def parse(source, handler, errorHandler=_ErrorHandler(), forbid_dtd=False, 18 forbid_entities=True, forbid_external=True): 19 parser = make_parser() 20 parser.setContentHandler(handler) 21 parser.setErrorHandler(errorHandler) 22 parser.forbid_dtd = forbid_dtd 23 parser.forbid_entities = forbid_entities 24 parser.forbid_external = forbid_external 25 parser.parse(source) 26 27 28 def parseString(string, handler, errorHandler=_ErrorHandler(), 29 forbid_dtd=False, forbid_entities=True, 30 forbid_external=True): 31 from io import BytesIO 32 33 if errorHandler is None: 34 errorHandler = _ErrorHandler() 35 parser = make_parser() 36 parser.setContentHandler(handler) 37 parser.setErrorHandler(errorHandler) 38 parser.forbid_dtd = forbid_dtd 39 parser.forbid_entities = forbid_entities 40 parser.forbid_external = forbid_external 41 42 inpsrc = _InputSource() 43 inpsrc.setByteStream(BytesIO(string)) 44 parser.parse(inpsrc) 45 46 def make_parser(parser_list=[]): 47 return expatreader.create_parser()