diff options
| author | Remita Amine <remitamine@gmail.com> | 2017-01-29 16:03:39 +0100 | 
|---|---|---|
| committer | Remita Amine <remitamine@gmail.com> | 2017-01-29 16:03:39 +0100 | 
| commit | c2d9c25f818da2e0e622b475ffc714f35df0887c (patch) | |
| tree | a058d4046df9552d810df14f38affac84b03f274 | |
| parent | 4d2fdb07c47e2d9f96d58f5fbf3da8665a1144a7 (diff) | |
[compat] add compat_etree_register_namespace
| -rw-r--r-- | youtube_dl/compat.py | 18 | 
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 . !  | 
