[tests] Workaround Python 2 “narrow” builds
The so-called Python 2 “narrow” builds support UCS2 only, this is a workaround to allow unichr to work with any Unicode character in such builds. This fixes Travis-CI failure as it has narrow Python 2 builds. Copied from: https://github.com/behdad/fonttools/blob/master/Lib/fontTools/misc/py23.py
This commit is contained in:
parent
4b8de1ea80
commit
988350586f
|
@ -7,7 +7,43 @@ from itertools import *
|
||||||
diff_symbols = "-+=*&^%$#@!~/"
|
diff_symbols = "-+=*&^%$#@!~/"
|
||||||
diff_colors = ['red', 'green', 'blue']
|
diff_colors = ['red', 'green', 'blue']
|
||||||
|
|
||||||
if sys.version_info[0] >= 3:
|
try:
|
||||||
|
unichr = unichr
|
||||||
|
|
||||||
|
if sys.maxunicode < 0x10FFFF:
|
||||||
|
# workarounds for Python 2 "narrow" builds with UCS2-only support.
|
||||||
|
|
||||||
|
_narrow_unichr = unichr
|
||||||
|
|
||||||
|
def unichr(i):
|
||||||
|
"""
|
||||||
|
Return the unicode character whose Unicode code is the integer 'i'.
|
||||||
|
The valid range is 0 to 0x10FFFF inclusive.
|
||||||
|
|
||||||
|
>>> _narrow_unichr(0xFFFF + 1)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in ?
|
||||||
|
ValueError: unichr() arg not in range(0x10000) (narrow Python build)
|
||||||
|
>>> unichr(0xFFFF + 1) == u'\U00010000'
|
||||||
|
True
|
||||||
|
>>> unichr(1114111) == u'\U0010FFFF'
|
||||||
|
True
|
||||||
|
>>> unichr(0x10FFFF + 1)
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "<stdin>", line 1, in ?
|
||||||
|
ValueError: unichr() arg not in range(0x110000)
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
return _narrow_unichr(i)
|
||||||
|
except ValueError:
|
||||||
|
try:
|
||||||
|
padded_hex_str = hex(i)[2:].zfill(8)
|
||||||
|
escape_str = "\\U" + padded_hex_str
|
||||||
|
return escape_str.decode("unicode-escape")
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
raise ValueError('unichr() arg not in range(0x110000)')
|
||||||
|
|
||||||
|
except NameError:
|
||||||
unichr = chr
|
unichr = chr
|
||||||
|
|
||||||
class ColorFormatter:
|
class ColorFormatter:
|
||||||
|
|
Loading…
Reference in New Issue