File tree Expand file tree Collapse file tree 2 files changed +16
-8
lines changed Expand file tree Collapse file tree 2 files changed +16
-8
lines changed Original file line number Diff line number Diff line change 7
7
import types
8
8
import re
9
9
import functools
10
+ import codecs
10
11
11
12
import py
12
13
@@ -122,12 +123,24 @@ def isclass(object):
122
123
123
124
124
125
if _PY3 :
125
- import codecs
126
126
imap = map
127
127
izip = zip
128
128
STRING_TYPES = bytes , str
129
129
UNICODE_TYPES = str ,
130
130
131
+ if PY35 :
132
+ def _bytes_to_ascii (val ):
133
+ return val .decode ('ascii' , 'backslashreplace' )
134
+ else :
135
+ def _bytes_to_ascii (val ):
136
+ if val :
137
+ # source: http://goo.gl/bGsnwC
138
+ encoded_bytes , _ = codecs .escape_encode (val )
139
+ return encoded_bytes .decode ('ascii' )
140
+ else :
141
+ # empty bytes crashes codecs.escape_encode (#1087)
142
+ return ''
143
+
131
144
def _ascii_escaped (val ):
132
145
"""If val is pure ascii, returns it as a str(). Otherwise, escapes
133
146
bytes objects into a sequence of escaped bytes:
@@ -147,13 +160,7 @@ def _ascii_escaped(val):
147
160
148
161
"""
149
162
if isinstance (val , bytes ):
150
- if val :
151
- # source: http://goo.gl/bGsnwC
152
- encoded_bytes , _ = codecs .escape_encode (val )
153
- return encoded_bytes .decode ('ascii' )
154
- else :
155
- # empty bytes crashes codecs.escape_encode (#1087)
156
- return ''
163
+ return _bytes_to_ascii (val )
157
164
else :
158
165
return val .encode ('unicode_escape' ).decode ('ascii' )
159
166
else :
Original file line number Diff line number Diff line change
1
+ Internal refactor: simplify ascii string escaping by using the backslashreplace error handler in newer Python 3 versions.
You can’t perform that action at this time.
0 commit comments