diff -Nru matplotlib-1.3.0/debian/changelog matplotlib-1.3.0/debian/changelog --- matplotlib-1.3.0/debian/changelog 2013-08-05 22:16:36.000000000 +0200 +++ matplotlib-1.3.0/debian/changelog 2013-09-29 16:12:54.000000000 +0200 @@ -1,3 +1,12 @@ +matplotlib (1.3.0-1.1) unstable; urgency=low + + * Non-maintainer upload. + * Fix error in font_manager.py: UnicodeDecodeError when starting + ipython --pylab. (Closes: #719065) + * Fix AttributeError error where there are no writable directories. + + -- Anton Gladky Sun, 29 Sep 2013 16:10:15 +0200 + matplotlib (1.3.0-1) unstable; urgency=low [ Sandro Tosi ] diff -Nru matplotlib-1.3.0/debian/patches/60_deal_with_no_writable_dirs.patch matplotlib-1.3.0/debian/patches/60_deal_with_no_writable_dirs.patch --- matplotlib-1.3.0/debian/patches/60_deal_with_no_writable_dirs.patch 1970-01-01 01:00:00.000000000 +0100 +++ matplotlib-1.3.0/debian/patches/60_deal_with_no_writable_dirs.patch 2013-09-29 16:05:58.000000000 +0200 @@ -0,0 +1,111 @@ +Description: deal with the case where there are no writable directories. +Author: Michael Droettboom +Bug-Debian: http://bugs.debian.org/719384 +Origin: https://github.com/mdboom/matplotlib/commit/1e8d592ed0439ac6fe8fc08d5efe522799acf4fe +Reviewed-By: Anton Gladky +Last-Update: 2013-09-29 + +--- matplotlib-1.3.0.orig/lib/matplotlib/font_manager.py ++++ matplotlib-1.3.0/lib/matplotlib/font_manager.py +@@ -1324,6 +1324,8 @@ if USE_FONTCONFIG and sys.platform != 'w + return result + + else: ++ _fmcache = None ++ + if not 'TRAVIS' in os.environ: + cachedir = get_cachedir() + if cachedir is not None: +@@ -1331,8 +1333,6 @@ else: + _fmcache = os.path.join(cachedir, 'fontList.py3k.cache') + else: + _fmcache = os.path.join(cachedir, 'fontList.cache') +- else: +- _fmcache = None + + fontManager = None + +--- matplotlib-1.3.0.orig/lib/matplotlib/__init__.py ++++ matplotlib-1.3.0/lib/matplotlib/__init__.py +@@ -518,7 +518,11 @@ def _get_xdg_config_dir(): + base directory spec + `_. + """ +- return os.environ.get('XDG_CONFIG_HOME', os.path.join(get_home(), '.config')) ++ home = get_home() ++ if home is None: ++ return None ++ else: ++ return os.environ.get('XDG_CONFIG_HOME', os.path.join(home, '.config')) + + + def _get_xdg_cache_dir(): +@@ -527,7 +531,11 @@ def _get_xdg_cache_dir(): + base directory spec + `_. + """ +- return os.environ.get('XDG_CACHE_HOME', os.path.join(get_home(), '.cache')) ++ home = get_home() ++ if home is None: ++ return None ++ else: ++ return os.environ.get('XDG_CACHE_HOME', os.path.join(home, '.cache')) + + + def _get_config_or_cache_dir(xdg_base): +@@ -543,22 +551,28 @@ def _get_config_or_cache_dir(xdg_base): + return _create_tmp_config_dir() + return configdir + ++ p = None + h = get_home() +- p = os.path.join(h, '.matplotlib') +- if (sys.platform.startswith('linux') and +- not os.path.exists(p)): +- p = os.path.join(xdg_base, 'matplotlib') +- +- if os.path.exists(p): +- if not _is_writable_dir(p): +- return _create_tmp_config_dir() +- else: +- try: +- mkdirs(p) +- except OSError: +- return _create_tmp_config_dir() ++ if h is not None: ++ p = os.path.join(h, '.matplotlib') ++ if (sys.platform.startswith('linux') and ++ not os.path.exists(p) and ++ xdg_base is not None): ++ p = os.path.join(xdg_base, 'matplotlib') ++ ++ if p is not None: ++ if os.path.exists(p): ++ if _is_writable_dir(p): ++ return p ++ else: ++ try: ++ mkdirs(p) ++ except OSError: ++ pass ++ else: ++ return p + +- return p ++ return _create_tmp_config_dir() + + + def _get_configdir(): +@@ -716,9 +730,11 @@ def matplotlib_fname(): + if configdir is not None: + fname = os.path.join(configdir, 'matplotlibrc') + if os.path.exists(fname): ++ home = get_home() + if (sys.platform.startswith('linux') and ++ home is not None and + fname == os.path.join( +- get_home(), '.matplotlib', 'matplotlibrc')): ++ home, '.matplotlib', 'matplotlibrc')): + warnings.warn( + "Found matplotlib configuration in ~/.matplotlib/. " + "To conform with the XDG base directory standard, " diff -Nru matplotlib-1.3.0/debian/patches/70_fix_UnicodeDecodeError.patch matplotlib-1.3.0/debian/patches/70_fix_UnicodeDecodeError.patch --- matplotlib-1.3.0/debian/patches/70_fix_UnicodeDecodeError.patch 1970-01-01 01:00:00.000000000 +0100 +++ matplotlib-1.3.0/debian/patches/70_fix_UnicodeDecodeError.patch 2013-09-29 16:09:57.000000000 +0200 @@ -0,0 +1,78 @@ +Description: UnicodeDecodeError when starting ipython --pylab +Author: Michael Droettboom +Bug-Debian: http://bugs.debian.org/719065 +Origin: UnicodeDecodeError when starting ipython --pylab +Reviewed-By: Anton Gladky +Last-Update: 2013-09-29 + +--- matplotlib-1.3.0.orig/lib/matplotlib/font_manager.py ++++ matplotlib-1.3.0/lib/matplotlib/font_manager.py +@@ -391,11 +391,11 @@ def ttfFontProperty(font): + sfnt2 = sfnt.get((1,0,0,2)) + sfnt4 = sfnt.get((1,0,0,4)) + if sfnt2: +- sfnt2 = sfnt2.decode('ascii').lower() ++ sfnt2 = sfnt2.decode('macroman').lower() + else: + sfnt2 = '' + if sfnt4: +- sfnt4 = sfnt4.decode('ascii').lower() ++ sfnt4 = sfnt4.decode('macroman').lower() + else: + sfnt4 = '' + if sfnt4.find('oblique') >= 0: +--- matplotlib-1.3.0.orig/lib/matplotlib/texmanager.py ++++ matplotlib-1.3.0/lib/matplotlib/texmanager.py +@@ -169,7 +169,7 @@ Could not rename old TeX cache dir "%s": + ff = rcParams['font.family'] + if len(ff) == 1 and ff[0].lower() in self.font_families: + self.font_family = ff[0].lower() +- elif ff.lower() in self.font_families: ++ elif isinstance(ff, basestring) and ff.lower() in self.font_families: + self.font_family = ff.lower() + else: + mpl.verbose.report( +--- matplotlib-1.3.0.orig/lib/matplotlib/textpath.py ++++ matplotlib-1.3.0/lib/matplotlib/textpath.py +@@ -63,7 +63,7 @@ class TextToPath(object): + """ + sfnt = font.get_sfnt() + try: +- ps_name = sfnt[(1, 0, 0, 6)].decode('ascii') ++ ps_name = sfnt[(1, 0, 0, 6)].decode('macroman') + except KeyError: + ps_name = sfnt[(3, 1, 0x0409, 6)].decode('utf-16be') + char_id = urllib.quote('%s-%x' % (ps_name, ccode)) +--- matplotlib-1.3.0.orig/lib/matplotlib/backends/backend_ps.py ++++ matplotlib-1.3.0/lib/matplotlib/backends/backend_ps.py +@@ -750,10 +750,11 @@ grestore + self.set_color(*gc.get_rgb()) + sfnt = font.get_sfnt() + try: +- ps_name = sfnt[(1,0,0,6)] ++ ps_name = sfnt[(1,0,0,6)].decode('macroman') + except KeyError: + ps_name = sfnt[(3,1,0x0409,6)].decode( +- 'utf-16be').encode('ascii','replace') ++ 'utf-16be') ++ ps_name = ps_name.encode('ascii','replace') + self.set_font(ps_name, prop.get_size_in_points()) + + cmap = font.get_charmap() +--- matplotlib-1.3.0.orig/lib/matplotlib/backends/backend_pdf.py ++++ matplotlib-1.3.0/lib/matplotlib/backends/backend_pdf.py +@@ -1002,11 +1002,12 @@ end""" + # You are lost in a maze of TrueType tables, all different... + sfnt = font.get_sfnt() + try: +- ps_name = sfnt[(1,0,0,6)] # Macintosh scheme ++ ps_name = sfnt[(1,0,0,6)].decode('macroman') # Macintosh scheme + except KeyError: + # Microsoft scheme: +- ps_name = sfnt[(3,1,0x0409,6)].decode('utf-16be').encode('ascii','replace') ++ ps_name = sfnt[(3,1,0x0409,6)].decode('utf-16be') + # (see freetype/ttnameid.h) ++ ps_name = ps_name.encode('ascii', 'replace') + ps_name = Name(ps_name) + pclt = font.get_sfnt_table('pclt') \ + or { 'capHeight': 0, 'xHeight': 0 } diff -Nru matplotlib-1.3.0/debian/patches/series matplotlib-1.3.0/debian/patches/series --- matplotlib-1.3.0/debian/patches/series 2013-08-02 20:28:38.000000000 +0200 +++ matplotlib-1.3.0/debian/patches/series 2013-09-29 16:08:14.000000000 +0200 @@ -2,3 +2,5 @@ 20_matplotlibrc_path_search_fix.patch 40_bts608939_draw_markers_description.patch 50_bts608942_spaces_in_param_args.patch +60_deal_with_no_writable_dirs.patch +70_fix_UnicodeDecodeError.patch