[compat] Work around in case folding for narrow Python build

Resolves #31324.
This commit is contained in:
dirkf 2022-11-02 11:56:26 +00:00 committed by GitHub
parent 087ddc2371
commit c4b19a8816
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1639,7 +1639,15 @@ FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z
1E921; C; 1E943; # ADLAM CAPITAL LETTER SHA
'''
_parse_unichr = lambda s: compat_chr(int(s, 16))
def _parse_unichr(s):
s = int(s, 16)
try:
return compat_chr(s)
except ValueError:
# work around "unichr() arg not in range(0x10000) (narrow Python build)"
return ('\\U%08x' % s).decode('unicode-escape')
_map = dict(
(_parse_unichr(from_), ''.join(map(_parse_unichr, to_.split(' '))))