diff env/lib/python3.7/site-packages/bleach/utils.py @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/env/lib/python3.7/site-packages/bleach/utils.py	Sat May 02 07:14:21 2020 -0400
@@ -0,0 +1,44 @@
+from collections import OrderedDict
+
+import six
+
+
+def _attr_key(attr):
+    """Returns appropriate key for sorting attribute names
+
+    Attribute names are a tuple of ``(namespace, name)`` where namespace can be
+    ``None`` or a string. These can't be compared in Python 3, so we conver the
+    ``None`` to an empty string.
+
+    """
+    key = (attr[0][0] or ''), attr[0][1]
+    return key
+
+
+def alphabetize_attributes(attrs):
+    """Takes a dict of attributes (or None) and returns them alphabetized"""
+    if not attrs:
+        return attrs
+
+    return OrderedDict(
+        [(k, v) for k, v in sorted(attrs.items(), key=_attr_key)]
+    )
+
+
+def force_unicode(text):
+    """Takes a text (Python 2: str/unicode; Python 3: unicode) and converts to unicode
+
+    :arg str/unicode text: the text in question
+
+    :returns: text as unicode
+
+    :raises UnicodeDecodeError: if the text was a Python 2 str and isn't in
+        utf-8
+
+    """
+    # If it's already unicode, then return it
+    if isinstance(text, six.text_type):
+        return text
+
+    # If not, convert it
+    return six.text_type(text, 'utf-8', 'strict')