Agreed. I've seen this a couple of times but never reproduced it so
elegantly. Would you mind opening up an issue on github - this is
definitely a bug (http://matplotlib.org/faq/troubleshooting_faq.html).

Thanks!


P.S. Welcome to the mailinglist :-)


On 31 May 2013 16:02, Skip Montanaro <s...@pobox.com> wrote:

> I'm not sure of the correct protocol (I just subscribed to report this
> problem), but the documentation said to report bugs here, and I saw no
> mention of this in Google searches of the list archives.
>
> The exception_to_str() function was changed between mpl 1.1 and 1.2.
> In my installation I show it going from this:
>
> def exception_to_str(s = None):
>
>     sh = StringIO.StringIO()
>     if s is not None: print >>sh, s
>     traceback.print_exc(file=sh)
>     return sh.getvalue()
>
> to this:
>
> def exception_to_str(s=None):
>
>     sh = io.StringIO()
>     if s is not None:
>         print(s, file=sh)
>     traceback.print_exc(file=sh)
>     return sh.getvalue()
>
> At first glance, the change seems innocuous enough, but I think it
> introduced an error.  (It appears that mpl 1.2 is supposed to work on
> Python 2.7 and 3.x.) From a thread I started on comp.lang.python
> (http://thread.gmane.org/gmane.comp.python.general/733938), it appears
> that io.StringIO instances only accept Unicode strings as input.
> Unless v 1.2 is only supposed to run on Python 3 (that doesn't seem to
> be the case), you need to do something to convert the traceback
> module's output to Unicode before feeding to the io.StringIO object.
>
> Here's a simple demonstration of the problem:
>
> % python2.7
> Python 2.7.5+ (2.7:93eb15779050, May 30 2013, 15:27:39)
> [GCC 4.4.6 [TWW]] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import traceback, StringIO, io
> >>> s1 = StringIO.StringIO()
> >>> traceback.print_stack(file=s1)
> >>> print repr(s1.getvalue())
> '  File "<stdin>", line 1, in <module>\n'
> >>>
> >>> s2 = io.StringIO()
> >>> traceback.print_stack(file=s2)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "/home/skipm/x86_64-linux3.1/lib/python2.7/traceback.py", line
> 269, in print_stack
>     print_list(extract_stack(f, limit), file)
>   File "/home/skipm/x86_64-linux3.1/lib/python2.7/traceback.py", line
> 23, in print_list
>     '  File "%s", line %d, in %s' % (filename,lineno,name))
>   File "/home/skipm/x86_64-linux3.1/lib/python2.7/traceback.py", line
> 13, in _print
>     file.write(str+terminator)
> TypeError: unicode argument expected, got 'str'
>
> Skip Montanaro
> s...@pobox.com
>
>
> ------------------------------------------------------------------------------
> Get 100% visibility into Java/.NET code with AppDynamics Lite
> It's a free troubleshooting tool designed for production
> Get down to code-level detail for bottlenecks, with <2% overhead.
> Download for free and get started troubleshooting in minutes.
> http://p.sf.net/sfu/appdyn_d2d_ap2
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite
It's a free troubleshooting tool designed for production
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://p.sf.net/sfu/appdyn_d2d_ap2
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to