summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2009-06-04 08:58:32 (GMT)
committerGeorg Brandl <georg@python.org>2009-06-04 08:58:32 (GMT)
commite6632b47bbb0df00f67160b7497923e2f746d57b (patch)
treef1c3a6a3fa7bf0525a5c6a4f3b5fb15b8c824613 /Lib
parente616c53aecd539d2f1c6022a281c0fe4c5c336aa (diff)
downloadcpython-e6632b47bbb0df00f67160b7497923e2f746d57b.zip
cpython-e6632b47bbb0df00f67160b7497923e2f746d57b.tar.gz
cpython-e6632b47bbb0df00f67160b7497923e2f746d57b.tar.bz2
#5767: remove sgmlop support from xmlrpclib; the sgmlop parser does not do much validation and is no longer much faster than e.g. the cElementTree XMLParser.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/xmlrpclib.py58
1 files changed, 2 insertions, 56 deletions
diff --git a/Lib/xmlrpclib.py b/Lib/xmlrpclib.py
index 5714b0d..b58030f 100644
--- a/Lib/xmlrpclib.py
+++ b/Lib/xmlrpclib.py
@@ -526,56 +526,6 @@ try:
except (AttributeError, ImportError):
FastMarshaller = None
-#
-# the SGMLOP parser is about 15x faster than Python's builtin
-# XML parser. SGMLOP sources can be downloaded from:
-#
-# http://www.pythonware.com/products/xml/sgmlop.htm
-#
-
-try:
- import sgmlop
- if not hasattr(sgmlop, "XMLParser"):
- raise ImportError
-except ImportError:
- SgmlopParser = None # sgmlop accelerator not available
-else:
- class SgmlopParser:
- def __init__(self, target):
-
- # setup callbacks
- self.finish_starttag = target.start
- self.finish_endtag = target.end
- self.handle_data = target.data
- self.handle_xml = target.xml
-
- # 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_proc(self, tag, attr):
- m = re.search("encoding\s*=\s*['\"]([^\"']+)[\"']", attr)
- if m:
- self.handle_xml(m.group(1), 1)
-
- def handle_entityref(self, entity):
- # <string> entity
- try:
- self.handle_data(self.entity[entity])
- except KeyError:
- self.handle_data("&%s;" % entity)
-
try:
from xml.parsers import expat
if not hasattr(expat, "ParserCreate"):
@@ -584,8 +534,7 @@ except ImportError:
ExpatParser = None # expat not available
else:
class ExpatParser:
- # fast expat parser for Python 2.0 and later. this is about
- # 50% slower than sgmlop, on roundtrip testing
+ # fast expat parser for Python 2.0 and later.
def __init__(self, target):
self._parser = parser = expat.ParserCreate(None, None)
self._target = target
@@ -606,8 +555,7 @@ else:
class SlowParser:
"""Default XML parser (based on xmllib.XMLParser)."""
- # this is about 10 times slower than sgmlop, on roundtrip
- # testing.
+ # this is the slowest parser.
def __init__(self, target):
import xmllib # lazy subclassing (!)
if xmllib.XMLParser not in SlowParser.__bases__:
@@ -1069,8 +1017,6 @@ def getparser(use_datetime=0):
target = Unmarshaller(use_datetime=use_datetime)
if FastParser:
parser = FastParser(target)
- elif SgmlopParser:
- parser = SgmlopParser(target)
elif ExpatParser:
parser = ExpatParser(target)
else: