[libvirt] [PATCHv2 2/8] python: Remove FastParser from generator.

Daniel P. Berrange berrange at redhat.com
Mon Oct 5 12:39:38 UTC 2009


On Fri, Oct 02, 2009 at 01:46:47PM -0400, Cole Robinson wrote:
> FastParser uses sgmlop, a non-standard python module meant as a replacement
> for xmllib (which is deprecated since python 2.0). Fedora doesn't even carry
> this module, and the generator doesn't have high performance requirements, so
> just rip the code out.
> 
> Signed-off-by: Cole Robinson <crobinso at redhat.com>
> ---
>  python/generator.py |   53 ++------------------------------------------------
>  1 files changed, 3 insertions(+), 50 deletions(-)
> 
> diff --git a/python/generator.py b/python/generator.py
> index 48ad14b..3d142e9 100755
> --- a/python/generator.py
> +++ b/python/generator.py
> @@ -26,52 +26,9 @@ else:
>  #######################################################################
>  import os
>  import xmllib
> -try:
> -    import sgmlop
> -except ImportError:
> -    sgmlop = None # accelerator not available
>  
>  debug = 0
>  
> -if sgmlop:
> -    class FastParser:
> -        """sgmlop based XML parser.  this is typically 15x faster
> -           than SlowParser..."""
> -
> -        def __init__(self, target):
> -
> -            # setup callbacks
> -            self.finish_starttag = target.start
> -            self.finish_endtag = target.end
> -            self.handle_data = target.data
> -            self.handle_cdata = target.cdata
> -
> -            # activate parser
> -            self.parser = sgmlop.XMLParser()
> -            self.parser.register(self)
> -            self.feed = self.parser.feed
> -            self.entity = {
> -                "amp": "&", "gt": ">", "lt": "<",
> -                "apos": "'", "quot": '"'
> -                }
> -
> -        def close(self):
> -            try:
> -                self.parser.close()
> -            finally:
> -                self.parser = self.feed = None # nuke circular reference
> -
> -        def handle_entityref(self, entity):
> -            # <string> entity
> -            try:
> -                self.handle_data(self.entity[entity])
> -            except KeyError:
> -                self.handle_data("&%s;" % entity)
> -
> -else:
> -    FastParser = None
> -
> -
>  class SlowParser(xmllib.XMLParser):
>      """slow but safe standard parser, based on the XML parser in
>         Python's standard library."""
> @@ -83,13 +40,9 @@ class SlowParser(xmllib.XMLParser):
>          self.unknown_endtag = target.end
>          xmllib.XMLParser.__init__(self)
>  
> -def getparser(target = None):
> -    # get the fastest available parser, and attach it to an
> -    # unmarshalling object.  return both objects.
> -    if target is None:
> -        target = docParser()
> -    if FastParser:
> -        return FastParser(target), target
> +def getparser():
> +    # Attach parser to an unmarshalling object. return both objects.
> +    target = docParser()
>      return SlowParser(target), target
>  
>  class docParser:

ACK


Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list