Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 05243f9

Browse files
committed
Fix a number of common bugs revealed by the regression tests.
1 parent eaab4c7 commit 05243f9

4 files changed

Lines changed: 26 additions & 5 deletions

File tree

lib/matplotlib/backends/backend_svg.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ def draw_path_collection(self, gc, master_transform, paths, all_transforms,
289289
transform = Affine2D(transform.get_matrix()).scale(1.0, -1.0)
290290
d = self._convert_path(path, transform, simplify=False)
291291
name = u'coll%x_%x_%s' % (self._path_collection_id, i,
292-
md5(d).hexdigest())
292+
md5(d.encode('ascii')).hexdigest())
293293
write(u'<path id="%s" d="%s"/>\n' % (name, d))
294294
path_codes.append(name)
295295
write(u'</defs>\n')
@@ -433,7 +433,7 @@ def draw_image(self, gc, x, y, im):
433433
_png.write_png(buffer, cols, rows, bytesio)
434434
im.flipud_out()
435435
self._svgwriter.write(
436-
base64.encodestring(bytesio.getvalue()).decode('ascii'))
436+
base64.encodebytes(bytesio.getvalue()).decode('ascii'))
437437
else:
438438
self._imaged[self.basename] = self._imaged.get(self.basename,0) + 1
439439
filename = '%s.image%d.png'%(self.basename, self._imaged[self.basename])

lib/matplotlib/cbook.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,20 @@
4040
except (ValueError, ImportError, AttributeError):
4141
preferredencoding = None
4242

43-
def unicode_safe(s):
44-
if preferredencoding is None: return unicode(s)
45-
else: return unicode(s, preferredencoding)
43+
if sys.version_info[0] >= 3:
44+
def unicode_safe(s):
45+
if isinstance(s, bytes):
46+
if preferredencoding is None:
47+
return unicode(s)
48+
else:
49+
# We say "unicode" and not "str" here so it passes through
50+
# 2to3 correctly.
51+
return unicode(s, preferredencoding)
52+
return s
53+
else:
54+
def unicode_safe(s):
55+
if preferredencoding is None: return unicode(s)
56+
else: return unicode(s, preferredencoding)
4657

4758

4859
class converter:

src/_image.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,13 @@ Image::as_rgba_str(const Py::Tuple& args, const Py::Dict& kwargs)
200200

201201
std::pair<agg::int8u*, bool> bufpair = _get_output_buffer();
202202

203+
#if PY3K
204+
Py::Object ret = Py::asObject(Py_BuildValue("lly#", rowsOut, colsOut,
205+
bufpair.first, colsOut * rowsOut * 4));
206+
#else
203207
Py::Object ret = Py::asObject(Py_BuildValue("lls#", rowsOut, colsOut,
204208
bufpair.first, colsOut * rowsOut * 4));
209+
#endif
205210

206211
if (bufpair.second) delete [] bufpair.first;
207212
return ret;

src/_png.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,13 @@ static void write_png_data(png_structp png_ptr, png_bytep data, png_size_t lengt
6767
PyObject* result = NULL;
6868
if (write_method)
6969
{
70+
#if PY3K
71+
result = PyObject_CallFunction(write_method, (char *)"y#", data,
72+
length);
73+
#else
7074
result = PyObject_CallFunction(write_method, (char *)"s#", data,
7175
length);
76+
#endif
7277
}
7378
Py_XDECREF(write_method);
7479
Py_XDECREF(result);

0 commit comments

Comments
 (0)