X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=rainbowstream%2Fpy3patch.py;h=4ba959110dd8a202f8c410cda9064317c5e3822b;hb=83be0cb608014c6c71f7c5e315f88acc96370414;hp=83e5f0a1845bc4d781d2192a10f66ba71c77e208;hpb=cd9ecfd554fafd9f1d485ce4dda8d716099725a0;p=rainbowstream.git diff --git a/rainbowstream/py3patch.py b/rainbowstream/py3patch.py index 83e5f0a..4ba9591 100644 --- a/rainbowstream/py3patch.py +++ b/rainbowstream/py3patch.py @@ -1,8 +1,6 @@ -""" - Python 3 supports -""" import sys +# Library compatibility # StringIO module try: from StringIO import StringIO, BytesIO @@ -10,18 +8,25 @@ except: from io import StringIO, BytesIO # HTMLParser module - -try: +if sys.version[0] == "2": from HTMLParser import HTMLParser - def unescape(s): - p = HTMLParser() - return p.unescape(s) -except: - from html import unescape +else: + from html.parser import HTMLParser +unescape = HTMLParser().unescape +# According to https://github.com/python/cpython/blob/master/Lib/html/parser.py#L547 , +# in python 3.5 maybe I should use +# from html import unescape +# but it is a far-future story:) + -# raw_input and map functiion behaviour -if sys.version[0] == "3": +# Function compatibility +# xrange, raw_input, map ,unicde +if sys.version[0] == "2": + lmap = lambda f, a: map(f, a) + str2u = lambda x: x.decode('utf-8') + u2str = lambda x: x.encode('utf-8') +else: + xrange = range raw_input = input lmap = lambda f, a: list(map(f, a)) -else: - lmap = lambda f, a: map(f, a) + str2u = u2str = lambda x: x