Skip to content

Commit 52a0f3b

Browse files
authored
Merge pull request RustPython#3954 from oow214/unicode_escape_decode
Fix escape codecs
2 parents 96839df + 7db813d commit 52a0f3b

File tree

7 files changed

+1304
-1134
lines changed

7 files changed

+1304
-1134
lines changed

Lib/_pycodecs.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,10 @@ def escape_encode( obj, errors='strict'):
9393
v = v.replace(b"'", b"\\'").replace(b'\\"', b'"')
9494
return v, len(obj)
9595

96-
def raw_unicode_escape_decode( data, errors='strict'):
96+
def raw_unicode_escape_decode( data, errors='strict', final=False):
9797
"""None
9898
"""
99-
res = PyUnicode_DecodeRawUnicodeEscape(data, len(data), errors)
99+
res = PyUnicode_DecodeRawUnicodeEscape(data, len(data), errors, final)
100100
res = ''.join(res)
101101
return res, len(data)
102102

@@ -131,10 +131,10 @@ def utf_16_decode( data, errors='strict', final=False):
131131
res = ''.join(res)
132132
return res, consumed
133133

134-
def unicode_escape_decode( data, errors='strict'):
134+
def unicode_escape_decode( data, errors='strict', final=False):
135135
"""None
136136
"""
137-
res = PyUnicode_DecodeUnicodeEscape(data, len(data), errors)
137+
res = PyUnicode_DecodeUnicodeEscape(data, len(data), errors, final)
138138
res = ''.join(res)
139139
return res, len(data)
140140

@@ -948,7 +948,7 @@ def hexescape(s, pos, digits, message, errors):
948948
res = p
949949
return res, pos
950950

951-
def PyUnicode_DecodeUnicodeEscape(s, size, errors):
951+
def PyUnicode_DecodeUnicodeEscape(s, size, errors, final):
952952

953953
if (size == 0):
954954
return ''
@@ -1159,7 +1159,7 @@ def PyUnicode_DecodeCharmap(s, size, mapping, errors):
11591159
inpos += 1
11601160
return p
11611161

1162-
def PyUnicode_DecodeRawUnicodeEscape(s, size, errors):
1162+
def PyUnicode_DecodeRawUnicodeEscape(s, size, errors, final):
11631163

11641164
if (size == 0):
11651165
return ''

Lib/encodings/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ def normalize_encoding(encoding):
6161
if c.isalnum() or c == '.':
6262
if punct and chars:
6363
chars.append('_')
64-
chars.append(c)
64+
if c.isascii():
65+
chars.append(c)
6566
punct = False
6667
else:
6768
punct = True

Lib/encodings/aliases.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,7 @@
450450

451451
# mac_latin2 codec
452452
'maccentraleurope' : 'mac_latin2',
453+
'mac_centeuro' : 'mac_latin2',
453454
'maclatin2' : 'mac_latin2',
454455

455456
# mac_roman codec
@@ -493,9 +494,6 @@
493494
'sjisx0213' : 'shift_jisx0213',
494495
's_jisx0213' : 'shift_jisx0213',
495496

496-
# tactis codec
497-
'tis260' : 'tactis',
498-
499497
# tis_620 codec
500498
'tis620' : 'tis_620',
501499
'tis_620_0' : 'tis_620',

Lib/encodings/raw_unicode_escape.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,16 @@ class IncrementalEncoder(codecs.IncrementalEncoder):
2121
def encode(self, input, final=False):
2222
return codecs.raw_unicode_escape_encode(input, self.errors)[0]
2323

24-
class IncrementalDecoder(codecs.IncrementalDecoder):
25-
def decode(self, input, final=False):
26-
return codecs.raw_unicode_escape_decode(input, self.errors)[0]
24+
class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
25+
def _buffer_decode(self, input, errors, final):
26+
return codecs.raw_unicode_escape_decode(input, errors, final)
2727

2828
class StreamWriter(Codec,codecs.StreamWriter):
2929
pass
3030

3131
class StreamReader(Codec,codecs.StreamReader):
32-
pass
32+
def decode(self, input, errors='strict'):
33+
return codecs.raw_unicode_escape_decode(input, errors, False)
3334

3435
### encodings module API
3536

Lib/encodings/unicode_escape.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,16 @@ class IncrementalEncoder(codecs.IncrementalEncoder):
2121
def encode(self, input, final=False):
2222
return codecs.unicode_escape_encode(input, self.errors)[0]
2323

24-
class IncrementalDecoder(codecs.IncrementalDecoder):
25-
def decode(self, input, final=False):
26-
return codecs.unicode_escape_decode(input, self.errors)[0]
24+
class IncrementalDecoder(codecs.BufferedIncrementalDecoder):
25+
def _buffer_decode(self, input, errors, final):
26+
return codecs.unicode_escape_decode(input, errors, final)
2727

2828
class StreamWriter(Codec,codecs.StreamWriter):
2929
pass
3030

3131
class StreamReader(Codec,codecs.StreamReader):
32-
pass
32+
def decode(self, input, errors='strict'):
33+
return codecs.unicode_escape_decode(input, errors, False)
3334

3435
### encodings module API
3536

0 commit comments

Comments
 (0)