From 4be54d032ef93d2be4612fca5026ca6251d3040f Mon Sep 17 00:00:00 2001 From: Denis Kasak Date: Mon, 19 Mar 2018 11:00:05 +0100 Subject: [PATCH] Implement MatrixHtmlParser.unescape shim. This is for Python 2/3 compatibility, since Python 3 deprecates the instance method and Python 2 doesn't have html.unescape. --- matrix/colors.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/matrix/colors.py b/matrix/colors.py index 247c8f0..fc6d3bb 100644 --- a/matrix/colors.py +++ b/matrix/colors.py @@ -32,6 +32,7 @@ try: except ImportError: from html.parser import HTMLParser +import html from html.entities import name2codepoint FormattedString = namedtuple('FormattedString', ['text', 'attributes']) @@ -316,6 +317,17 @@ class MatrixHtmlParser(HTMLParser): self.substrings = [] # type: List[FormattedString] self.attributes = DEFAULT_ATRIBUTES.copy() + def unescape(self, text): + """Shim to unescape HTML in both Python 2 and 3. + + The instance method was deprecated in Python 3 and html.unescape + doesn't exist in Python 2 so this is needed. + """ + try: + return html.unescape(text) + except AttributeError: + return HTMLParser.unescape(self, text) + def feed(self, text): text = self.unescape(text) return HTMLParser.feed(self, text)