lambda *args: None
[rainbowstream.git] / rainbowstream / py3patch.py
index 0dd6be5f3b7c85a77fb56ea6f98e647848e6cb1d..4ba959110dd8a202f8c410cda9064317c5e3822b 100644 (file)
@@ -1,8 +1,6 @@
-"""
-  Python 3 supports
-"""
 import sys
 
+# Library compatibility
 # StringIO module
 try:
     from StringIO import StringIO, BytesIO
@@ -10,15 +8,25 @@ except:
     from io import StringIO, BytesIO
 
 # HTMLParser module
-try:
+if sys.version[0] == "2":
     from HTMLParser import HTMLParser
-    unescape = HTMLParser().unescape
-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 function 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