From 42c77be7c19567b1bc9e6f900b2e20527454622b Mon Sep 17 00:00:00 2001 From: Michael Droettboom Date: Tue, 17 Jan 2012 09:23:27 -0500 Subject: [PATCH 1/2] Make SVG work with a StringIO object on Python 2.x --- lib/matplotlib/backends/backend_svg.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/backends/backend_svg.py b/lib/matplotlib/backends/backend_svg.py index 6b15ad2f628c..29d88f83e864 100644 --- a/lib/matplotlib/backends/backend_svg.py +++ b/lib/matplotlib/backends/backend_svg.py @@ -1,6 +1,6 @@ from __future__ import division -import os, base64, tempfile, urllib, gzip, io, sys +import os, base64, tempfile, urllib, gzip, io, sys, codecs import numpy as np @@ -1064,7 +1064,11 @@ def print_svg(self, filename, *args, **kwargs): if is_string_like(filename): fh_to_close = svgwriter = io.open(filename, 'w', encoding='utf-8') elif is_writable_file_like(filename): - svgwriter = io.TextIOWrapper(filename, 'utf-8') + if not isinstance(filename, io.TextIOBase): + if sys.version_info[0] >= 3: + svgwriter = io.TextIOWrapper(filename, 'utf-8') + else: + svgwriter = codecs.EncodedFile(filename, 'utf-8') fh_to_close = None else: raise ValueError("filename must be a path or a file-like object") From a96754e71bf6f0945590cad7a405d27512c2a887 Mon Sep 17 00:00:00 2001 From: Michael Droettboom Date: Tue, 17 Jan 2012 11:23:46 -0500 Subject: [PATCH 2/2] Use codecs.getwriter instead. --- lib/matplotlib/backends/backend_svg.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/backends/backend_svg.py b/lib/matplotlib/backends/backend_svg.py index 29d88f83e864..83d59c2fd946 100644 --- a/lib/matplotlib/backends/backend_svg.py +++ b/lib/matplotlib/backends/backend_svg.py @@ -1068,7 +1068,7 @@ def print_svg(self, filename, *args, **kwargs): if sys.version_info[0] >= 3: svgwriter = io.TextIOWrapper(filename, 'utf-8') else: - svgwriter = codecs.EncodedFile(filename, 'utf-8') + svgwriter = codecs.getwriter('utf-8')(filename) fh_to_close = None else: raise ValueError("filename must be a path or a file-like object")