Avoid calling __dict_replace() if we don't need to -- the call is much
more expensive than just doing to work needed, and these things seem
to always turn into a bottleneck eventually.
diff --git a/Lib/xml/sax/saxutils.py b/Lib/xml/sax/saxutils.py
index c369f98..049e09c 100644
--- a/Lib/xml/sax/saxutils.py
+++ b/Lib/xml/sax/saxutils.py
@@ -28,10 +28,11 @@
# must do ampersand first
data = data.replace("&", "&")
- data = __dict_replace(data, {"<" : "<",
- ">" : ">",
- })
- return __dict_replace(data, entities)
+ data = data.replace(">", ">")
+ data = data.replace("<", "<")
+ if entities:
+ data = __dict_replace(data, entities)
+ return data
def unescape(data, entities={}):
"""Unescape &, <, and > in a string of data.
@@ -40,12 +41,13 @@
the optional entities parameter. The keys and values must all be
strings; each key will be replaced with its corresponding value.
"""
- data = __dict_replace(data, {"<" : "<",
- ">" : ">",
- })
+ data = data.replace("<", "<")
+ data = data.replace(">", ">")
# must do ampersand last
data = data.replace("&", "&")
- return __dict_replace(data, entities)
+ if entities:
+ data = __dict_replace(data, entities)
+ return data
def quoteattr(data, entities={}):
"""Escape and quote an attribute value.