aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRemita Amine <remitamine@gmail.com>2017-01-29 16:03:39 +0100
committerRemita Amine <remitamine@gmail.com>2017-01-29 16:03:39 +0100
commitc2d9c25f818da2e0e622b475ffc714f35df0887c (patch)
treea058d4046df9552d810df14f38affac84b03f274
parent4d2fdb07c47e2d9f96d58f5fbf3da8665a1144a7 (diff)
downloadyoutube-dl-c2d9c25f818da2e0e622b475ffc714f35df0887c.tar.xz
[compat] add compat_etree_register_namespace
-rw-r--r--youtube_dl/compat.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/youtube_dl/compat.py b/youtube_dl/compat.py
index 02abf8c1e..49e3c90e2 100644
--- a/youtube_dl/compat.py
+++ b/youtube_dl/compat.py
@@ -2529,6 +2529,24 @@ else:
el.text = el.text.decode('utf-8')
return doc
+if hasattr(etree, 'register_namespace'):
+ compat_etree_register_namespace = etree.register_namespace
+else:
+ def compat_etree_register_namespace(prefix, uri):
+ """Register a namespace prefix.
+ The registry is global, and any existing mapping for either the
+ given prefix or the namespace URI will be removed.
+ *prefix* is the namespace prefix, *uri* is a namespace uri. Tags and
+ attributes in this namespace will be serialized with prefix if possible.
+ ValueError is raised if prefix is reserved or is invalid.
+ """
+ if re.match(r"ns\d+$", prefix):
+ raise ValueError("Prefix format reserved for internal use")
+ for k, v in list(etree._namespace_map.items()):
+ if k == uri or v == prefix:
+ del etree._namespace_map[k]
+ etree._namespace_map[uri] = prefix
+
if sys.version_info < (2, 7):
# Here comes the crazy part: In 2.6, if the xpath is a unicode,
# .//node does not match if a node is a direct child of . !