summaryrefslogtreecommitdiffstats
path: root/Lib/xml/etree/ElementPath.py
diff options
context:
space:
mode:
authorEli Bendersky <eliben@gmail.com>2013-08-04 00:48:41 (GMT)
committerEli Bendersky <eliben@gmail.com>2013-08-04 00:48:41 (GMT)
commitb9b6ce6f2c687092dfc99c912e52cdc32ae44c3d (patch)
treea920ff74d5db314fc8e28707071e76c40b77b97e /Lib/xml/etree/ElementPath.py
parent739e75000f02dcf012d11c58e5995129293228a2 (diff)
parent2acc525a972b2b6b071eb5b9596ed1390d6d98e0 (diff)
downloadcpython-b9b6ce6f2c687092dfc99c912e52cdc32ae44c3d.zip
cpython-b9b6ce6f2c687092dfc99c912e52cdc32ae44c3d.tar.gz
cpython-b9b6ce6f2c687092dfc99c912e52cdc32ae44c3d.tar.bz2
Merge fix for Issue #17011 from 3.3
Diffstat (limited to 'Lib/xml/etree/ElementPath.py')
-rw-r--r--Lib/xml/etree/ElementPath.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/Lib/xml/etree/ElementPath.py b/Lib/xml/etree/ElementPath.py
index bf984b9..d914ddb 100644
--- a/Lib/xml/etree/ElementPath.py
+++ b/Lib/xml/etree/ElementPath.py
@@ -249,10 +249,12 @@ class _SelectorContext:
def iterfind(elem, path, namespaces=None):
# compile selector pattern
+ cache_key = (path, None if namespaces is None
+ else tuple(sorted(namespaces.items())))
if path[-1:] == "/":
path = path + "*" # implicit all (FIXME: keep this?)
try:
- selector = _cache[path]
+ selector = _cache[cache_key]
except KeyError:
if len(_cache) > 100:
_cache.clear()
@@ -272,7 +274,7 @@ def iterfind(elem, path, namespaces=None):
token = next()
except StopIteration:
break
- _cache[path] = selector
+ _cache[cache_key] = selector
# execute selector pattern
result = [elem]
context = _SelectorContext(elem)