docs: def decode_entities(html):
      """
      Remove HTML entities from a string.
      Adapted from http://effbot.org/zone/re-sub.htm#unescape-html
      """
      def decode(m):
          html = m.group(0)
          if html[:2] == "&#":
              try:
                  if html[:3] == "&#x":
                      return chr(int(html[3:-1], 16))
                  else:
                      return chr(int(html[2:-1]))
              except ValueError:
                  pass
          else:
              try:
                  html = chr(name2codepoint[html[1:-1]])
              except KeyError:
                  pass
          return html
      return re.sub("&#?\w+;", decode, html.replace("&amp;", "&"))