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()