fix serious bug in import HTMLParser in Python > 3.4
authorOrakaro <nhatminh_179@hotmail.com>
Sat, 26 Jul 2014 03:25:18 +0000 (12:25 +0900)
committerOrakaro <nhatminh_179@hotmail.com>
Sat, 26 Jul 2014 03:25:18 +0000 (12:25 +0900)
rainbowstream/py3patch.py

index 0dd6be5f3b7c85a77fb56ea6f98e647848e6cb1d..adfbff281ebe64f1bb52b1b6fa7aa792cfddba48 100644 (file)
@@ -10,15 +10,19 @@ except:
     from io import StringIO, BytesIO
 
 # HTMLParser module
     from io import StringIO, BytesIO
 
 # HTMLParser module
-try:
+if sys.version[0] == "2":
     from HTMLParser import HTMLParser
     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
 
 # raw_input and map function behaviour
-if sys.version[0] == "3":
+if sys.version[0] == "2":
+    lmap = lambda f, a: map(f, a)
+else:
     raw_input = input
     lmap = lambda f, a: list(map(f, a))
     raw_input = input
     lmap = lambda f, a: list(map(f, a))
-else:
-    lmap = lambda f, a: map(f, a)