From fa92b908c28186dd3fcfe50ada28c2f00c995e0d Mon Sep 17 00:00:00 2001 From: "Erik M. Bray" Date: Mon, 18 Dec 2017 12:45:42 +0000 Subject: [PATCH 1/4] Some minimal changes needed to make `python -c 'import matplotlib'` work when the home directory contains non-ASCII characters. This also went ahead and removed unicode_literals from most test modules, opting instead to only use unicode literals explicitly for string literals containing non-ASCII characters (naturally this only impacts Python 2; on Python 3 all strings are unicode literals by default). This has all tests passing still on Python 2/3 *without* non-ASCII home directory. --- lib/matplotlib/__init__.py | 12 +--- lib/matplotlib/cbook/__init__.py | 3 +- lib/matplotlib/finance.py | 47 ++++++------ lib/matplotlib/font_manager.py | 3 +- lib/matplotlib/rcsetup.py | 80 +++++++++++---------- lib/matplotlib/style/core.py | 3 +- lib/matplotlib/testing/compare.py | 3 +- lib/matplotlib/testing/decorators.py | 3 +- lib/matplotlib/tests/__init__.py | 3 +- lib/matplotlib/tests/conftest.py | 3 +- lib/matplotlib/tests/test_afm.py | 5 +- lib/matplotlib/tests/test_agg.py | 3 +- lib/matplotlib/tests/test_animation.py | 3 +- lib/matplotlib/tests/test_arrow_patches.py | 3 +- lib/matplotlib/tests/test_artist.py | 3 +- lib/matplotlib/tests/test_axes.py | 3 +- lib/matplotlib/tests/test_backend_pdf.py | 5 +- lib/matplotlib/tests/test_backend_pgf.py | 5 +- lib/matplotlib/tests/test_backend_ps.py | 5 +- lib/matplotlib/tests/test_backend_qt4.py | 3 +- lib/matplotlib/tests/test_backend_qt5.py | 3 +- lib/matplotlib/tests/test_backend_svg.py | 3 +- lib/matplotlib/tests/test_basic.py | 3 +- lib/matplotlib/tests/test_bbox_tight.py | 3 +- lib/matplotlib/tests/test_category.py | 9 ++- lib/matplotlib/tests/test_cbook.py | 3 +- lib/matplotlib/tests/test_collections.py | 3 +- lib/matplotlib/tests/test_colorbar.py | 3 +- lib/matplotlib/tests/test_colors.py | 3 +- lib/matplotlib/tests/test_compare_images.py | 3 +- lib/matplotlib/tests/test_container.py | 3 +- lib/matplotlib/tests/test_contour.py | 3 +- lib/matplotlib/tests/test_dates.py | 3 +- lib/matplotlib/tests/test_dviread.py | 3 +- lib/matplotlib/tests/test_figure.py | 3 +- lib/matplotlib/tests/test_font_manager.py | 3 +- lib/matplotlib/tests/test_image.py | 3 +- lib/matplotlib/tests/test_legend.py | 5 +- lib/matplotlib/tests/test_lines.py | 3 +- lib/matplotlib/tests/test_mathtext.py | 3 +- lib/matplotlib/tests/test_mlab.py | 3 +- lib/matplotlib/tests/test_offsetbox.py | 3 +- lib/matplotlib/tests/test_patches.py | 3 +- lib/matplotlib/tests/test_path.py | 3 +- lib/matplotlib/tests/test_patheffects.py | 3 +- lib/matplotlib/tests/test_pickle.py | 3 +- lib/matplotlib/tests/test_png.py | 3 +- lib/matplotlib/tests/test_rcparams.py | 24 +------ lib/matplotlib/tests/test_sankey.py | 3 +- lib/matplotlib/tests/test_simplification.py | 3 +- lib/matplotlib/tests/test_skew.py | 3 +- lib/matplotlib/tests/test_spines.py | 3 +- lib/matplotlib/tests/test_streamplot.py | 3 +- lib/matplotlib/tests/test_style.py | 3 +- lib/matplotlib/tests/test_subplots.py | 3 +- lib/matplotlib/tests/test_table.py | 3 +- lib/matplotlib/tests/test_texmanager.py | 3 +- lib/matplotlib/tests/test_text.py | 3 +- lib/matplotlib/tests/test_ticker.py | 5 +- lib/matplotlib/tests/test_tightlayout.py | 3 +- lib/matplotlib/tests/test_transforms.py | 3 +- lib/matplotlib/tests/test_triangulation.py | 3 +- lib/matplotlib/tests/test_ttconv.py | 3 +- lib/matplotlib/tests/test_type1font.py | 3 +- lib/matplotlib/tests/test_usetex.py | 3 +- lib/matplotlib/tests/test_widgets.py | 3 +- lib/matplotlib/texmanager.py | 3 +- lib/matplotlib/text.py | 3 +- lib/mpl_toolkits/tests/test_axes_grid1.py | 3 +- 69 files changed, 146 insertions(+), 230 deletions(-) diff --git a/lib/matplotlib/__init__.py b/lib/matplotlib/__init__.py index 846c08d1c32f..5437bd0357df 100644 --- a/lib/matplotlib/__init__.py +++ b/lib/matplotlib/__init__.py @@ -99,8 +99,7 @@ to MATLAB®, a registered trademark of The MathWorks, Inc. """ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six @@ -277,10 +276,7 @@ def _parse_commandline(): 'info', 'warning') for arg in sys.argv[1:]: - # cast to str because we are using unicode_literals, - # and argv is always str - - if arg.startswith(str('--verbose-')): + if arg.startswith('--verbose-'): level_str = arg[10:] # If it doesn't match one of ours, then don't even # bother noting it, we are just a 3rd-party library @@ -305,9 +301,7 @@ class Verbose(object): _commandLineVerbose = None for arg in sys.argv[1:]: - # cast to str because we are using unicode_literals, - # and argv is always str - if not arg.startswith(str('--verbose-')): + if not arg.startswith('--verbose-'): continue level_str = arg[10:] # If it doesn't match one of ours, then don't even diff --git a/lib/matplotlib/cbook/__init__.py b/lib/matplotlib/cbook/__init__.py index 0b6a4968b113..c7007dd80660 100644 --- a/lib/matplotlib/cbook/__init__.py +++ b/lib/matplotlib/cbook/__init__.py @@ -6,8 +6,7 @@ it imports matplotlib only at runtime. """ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six from six.moves import xrange, zip diff --git a/lib/matplotlib/finance.py b/lib/matplotlib/finance.py index 9121c41c87aa..d1afccc40dec 100644 --- a/lib/matplotlib/finance.py +++ b/lib/matplotlib/finance.py @@ -5,8 +5,7 @@ This module is deprecated in 2.0 and has been moved to a module called `mpl_finance`. """ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six from six.moves import xrange, zip @@ -57,31 +56,31 @@ def md5(x): stock_dt_ohlc = np.dtype([ - (str('date'), object), - (str('year'), np.int16), - (str('month'), np.int8), - (str('day'), np.int8), - (str('d'), float), # mpl datenum - (str('open'), float), - (str('high'), float), - (str('low'), float), - (str('close'), float), - (str('volume'), float), - (str('aclose'), float)]) + ('date', object), + ('year', np.int16), + ('month', np.int8), + ('day', np.int8), + ('d', float), # mpl datenum + ('open', float), + ('high', float), + ('low', float), + ('close', float), + ('volume', float), + ('aclose', float)]) stock_dt_ochl = np.dtype( - [(str('date'), object), - (str('year'), np.int16), - (str('month'), np.int8), - (str('day'), np.int8), - (str('d'), float), # mpl datenum - (str('open'), float), - (str('close'), float), - (str('high'), float), - (str('low'), float), - (str('volume'), float), - (str('aclose'), float)]) + [('date', object), + ('year', np.int16), + ('month', np.int8), + ('day', np.int8), + ('d', float), # mpl datenum + ('open', float), + ('close', float), + ('high', float), + ('low', float), + ('volume', float), + ('aclose', float)]) def parse_yahoo_historical_ochl(fh, adjusted=True, asobject=False): diff --git a/lib/matplotlib/font_manager.py b/lib/matplotlib/font_manager.py index bb0a056d284e..67d2a4f8bb1d 100644 --- a/lib/matplotlib/font_manager.py +++ b/lib/matplotlib/font_manager.py @@ -19,8 +19,7 @@ platforms, so if a font is installed, it is much more likely to be found. """ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six from six.moves import cPickle as pickle diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index 2b0833f215c9..3a104b953640 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -13,8 +13,7 @@ parameter set listed here should also be visited to the :file:`matplotlibrc.template` in matplotlib's root source directory. """ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six @@ -97,11 +96,10 @@ def f(s): else: raise ValueError("{!r} must be of type: string or non-dictionary " "iterable".format(s)) - # Cast `str` to keep Py2 happy despite `unicode_literals`. try: - f.__name__ = str("{}list".format(scalar_validator.__name__)) + f.__name__ = "{}list".format(scalar_validator.__name__) except AttributeError: # class instance. - f.__name__ = str("{}List".format(type(scalar_validator).__name__)) + f.__name__ = "{}List".format(type(scalar_validator).__name__) f.__doc__ = scalar_validator.__doc__ return f @@ -185,7 +183,7 @@ def validate_string_or_None(s): if s is None: return None try: - return six.text_type(s) + return validate_string(s) except ValueError: raise ValueError('Could not convert "%s" to string' % s) @@ -409,7 +407,15 @@ def deprecate_axes_colorcycle(value): validate_colorlist = _listify_validator(validate_color, allow_stringlist=True) validate_colorlist.__doc__ = 'return a list of colorspecs' -validate_stringlist = _listify_validator(six.text_type) +def validate_string(s): + if isinstance(s, str): # Always leave str as str + return s + elif isinstance(s, six.text_type): + return s + else: + return str(s) + +validate_stringlist = _listify_validator(str) validate_stringlist.__doc__ = 'return a list' validate_orientation = ValidateInStrings( @@ -483,7 +489,7 @@ def validate_whiskers(s): def update_savefig_format(value): # The old savefig.extension could also have a value of "auto", but # the new savefig.format does not. We need to fix this here. - value = six.text_type(value) + value = validate_string(value) if value == 'auto': value = 'png' return value @@ -962,17 +968,17 @@ def _validate_linestyle(ls): 'datapath': [None, validate_path_exists], # handled by # _get_data_path_cached 'interactive': [False, validate_bool], - 'timezone': ['UTC', six.text_type], + 'timezone': ['UTC', validate_string], # the verbosity setting 'verbose.level': ['silent', validate_verbose], - 'verbose.fileo': ['sys.stdout', six.text_type], + 'verbose.fileo': ['sys.stdout', validate_string], # line props 'lines.linewidth': [1.5, validate_float], # line width in points 'lines.linestyle': ['-', _validate_linestyle], # solid line 'lines.color': ['C0', validate_color], # first color in color cycle - 'lines.marker': ['None', six.text_type], # marker name + 'lines.marker': ['None', validate_string], # marker name 'lines.markeredgewidth': [1.0, validate_float], 'lines.markersize': [6, validate_float], # markersize, in points 'lines.antialiased': [True, validate_bool], # antialiased (no jaggies) @@ -1016,7 +1022,7 @@ def _validate_linestyle(ls): 'boxplot.meanline': [False, validate_bool], 'boxplot.flierprops.color': ['k', validate_color], - 'boxplot.flierprops.marker': ['o', six.text_type], + 'boxplot.flierprops.marker': ['o', validate_string], 'boxplot.flierprops.markerfacecolor': ['none', validate_color_or_auto], 'boxplot.flierprops.markeredgecolor': ['k', validate_color], 'boxplot.flierprops.markersize': [6, validate_float], @@ -1040,7 +1046,7 @@ def _validate_linestyle(ls): 'boxplot.medianprops.linestyle': ['-', _validate_linestyle], 'boxplot.meanprops.color': ['C2', validate_color], - 'boxplot.meanprops.marker': ['^', six.text_type], + 'boxplot.meanprops.marker': ['^', validate_string], 'boxplot.meanprops.markerfacecolor': ['C2', validate_color], 'boxplot.meanprops.markeredgecolor': ['C2', validate_color], 'boxplot.meanprops.markersize': [6, validate_float], @@ -1049,10 +1055,10 @@ def _validate_linestyle(ls): ## font props 'font.family': [['sans-serif'], validate_stringlist], # used by text object - 'font.style': ['normal', six.text_type], - 'font.variant': ['normal', six.text_type], - 'font.stretch': ['normal', six.text_type], - 'font.weight': ['normal', six.text_type], + 'font.style': ['normal', validate_string], + 'font.variant': ['normal', validate_string], + 'font.stretch': ['normal', validate_string], + 'font.weight': ['normal', validate_string], 'font.size': [10, validate_float], # Base font size in points 'font.serif': [['DejaVu Serif', 'Bitstream Vera Serif', 'Computer Modern Roman', @@ -1100,10 +1106,10 @@ def _validate_linestyle(ls): 'mathtext.fallback_to_cm': [True, validate_bool], 'image.aspect': ['equal', validate_aspect], # equal, auto, a number - 'image.interpolation': ['nearest', six.text_type], - 'image.cmap': ['viridis', six.text_type], # one of gray, jet, etc + 'image.interpolation': ['nearest', validate_string], + 'image.cmap': ['viridis', validate_string], # one of gray, jet, etc 'image.lut': [256, validate_int], # lookup table - 'image.origin': ['upper', six.text_type], # lookup table + 'image.origin': ['upper', validate_string], # lookup table 'image.resample': [True, validate_bool], # Specify whether vector graphics backends will combine all images on a # set of axes into a single composite image @@ -1130,7 +1136,7 @@ def _validate_linestyle(ls): 'axes.titlesize': ['large', validate_fontsize], # fontsize of the # axes title - 'axes.titleweight': ['normal', six.text_type], # font weight of axes title + 'axes.titleweight': ['normal', validate_string], # font weight of axes title 'axes.titlepad': [6.0, validate_float], # pad from axes top to title in points 'axes.grid': [False, validate_bool], # display grid or not 'axes.grid.which': ['major', validate_axis_locator], # set wether the gid are by @@ -1142,7 +1148,7 @@ def _validate_linestyle(ls): 'axes.labelsize': ['medium', validate_fontsize], # fontsize of the # x any y labels 'axes.labelpad': [4.0, validate_float], # space between label and axis - 'axes.labelweight': ['normal', six.text_type], # fontsize of the x any y labels + 'axes.labelweight': ['normal', validate_string], # fontsize of the x any y labels 'axes.labelcolor': ['k', validate_color], # color of axis label 'axes.formatter.limits': [[-7, 7], validate_nseq_int(2)], # use scientific notation if log10 @@ -1187,16 +1193,16 @@ def _validate_linestyle(ls): 'axes3d.grid': [True, validate_bool], # display 3d grid # scatter props - 'scatter.marker': ['o', six.text_type], + 'scatter.marker': ['o', validate_string], # TODO validate that these are valid datetime format strings - 'date.autoformatter.year': ['%Y', six.text_type], - 'date.autoformatter.month': ['%Y-%m', six.text_type], - 'date.autoformatter.day': ['%Y-%m-%d', six.text_type], - 'date.autoformatter.hour': ['%m-%d %H', six.text_type], - 'date.autoformatter.minute': ['%d %H:%M', six.text_type], - 'date.autoformatter.second': ['%H:%M:%S', six.text_type], - 'date.autoformatter.microsecond': ['%M:%S.%f', six.text_type], + 'date.autoformatter.year': ['%Y', validate_string], + 'date.autoformatter.month': ['%Y-%m', validate_string], + 'date.autoformatter.day': ['%Y-%m-%d', validate_string], + 'date.autoformatter.hour': ['%m-%d %H', validate_string], + 'date.autoformatter.minute': ['%d %H:%M', validate_string], + 'date.autoformatter.second': ['%H:%M:%S', validate_string], + 'date.autoformatter.microsecond': ['%M:%S.%f', validate_string], #legend properties 'legend.fancybox': [True, validate_bool], @@ -1249,7 +1255,7 @@ def _validate_linestyle(ls): # fontsize of the xtick labels 'xtick.labelsize': ['medium', validate_fontsize], - 'xtick.direction': ['out', six.text_type], # direction of xticks + 'xtick.direction': ['out', validate_string], # direction of xticks 'xtick.alignment': ["center", _validate_alignment], 'ytick.left': [True, validate_bool], # draw ticks on the left side @@ -1269,7 +1275,7 @@ def _validate_linestyle(ls): # fontsize of the ytick labels 'ytick.labelsize': ['medium', validate_fontsize], - 'ytick.direction': ['out', six.text_type], # direction of yticks + 'ytick.direction': ['out', validate_string], # direction of yticks 'ytick.alignment': ["center_baseline", _validate_alignment], @@ -1282,7 +1288,7 @@ def _validate_linestyle(ls): ## figure props # figure title 'figure.titlesize': ['large', validate_fontsize], - 'figure.titleweight': ['normal', six.text_type], + 'figure.titleweight': ['normal', validate_string], # figure size in inches: width by height 'figure.figsize': [[6.4, 4.8], validate_nseq_float(2)], @@ -1320,7 +1326,7 @@ def _validate_linestyle(ls): 'savefig.bbox': ['standard', validate_bbox], 'savefig.pad_inches': [0.1, validate_float], # default directory in savefig dialog box - 'savefig.directory': ['~', six.text_type], + 'savefig.directory': ['~', validate_string], 'savefig.transparent': [False, validate_bool], # Maintain shell focus for TkAgg @@ -1361,7 +1367,7 @@ def _validate_linestyle(ls): # set this when you want to generate hardcopy docstring 'docstring.hardcopy': [False, validate_bool], # where plugin directory is locate - 'plugins.directory': ['.matplotlib_plugins', six.text_type], + 'plugins.directory': ['.matplotlib_plugins', validate_string], 'path.simplify': [True, validate_bool], 'path.simplify_threshold': [1.0 / 9.0, ValidateInterval(0.0, 1.0)], @@ -1387,7 +1393,7 @@ def _validate_linestyle(ls): 'keymap.all_axes': [['a'], validate_stringlist], # sample data - 'examples.directory': ['', six.text_type], + 'examples.directory': ['', validate_string], # Animation settings 'animation.html': ['none', validate_movie_html_fmt], @@ -1395,7 +1401,7 @@ def _validate_linestyle(ls): # (i.e. IPython notebook) 'animation.embed_limit': [20, validate_float], 'animation.writer': ['ffmpeg', validate_movie_writer], - 'animation.codec': ['h264', six.text_type], + 'animation.codec': ['h264', validate_string], 'animation.bitrate': [-1, validate_int], # Controls image format when frames are written to disk 'animation.frame_format': ['png', validate_movie_frame_fmt], diff --git a/lib/matplotlib/style/core.py b/lib/matplotlib/style/core.py index 0d5fff2b7010..bd35f902eab2 100644 --- a/lib/matplotlib/style/core.py +++ b/lib/matplotlib/style/core.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/testing/compare.py b/lib/matplotlib/testing/compare.py index 841c3c50422b..c0b933ed6986 100644 --- a/lib/matplotlib/testing/compare.py +++ b/lib/matplotlib/testing/compare.py @@ -2,8 +2,7 @@ Provides a collection of utilities for comparing (image) results. """ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/testing/decorators.py b/lib/matplotlib/testing/decorators.py index c5e069b318ee..978f1abac005 100644 --- a/lib/matplotlib/testing/decorators.py +++ b/lib/matplotlib/testing/decorators.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/tests/__init__.py b/lib/matplotlib/tests/__init__.py index b15f7b0256d1..271e67ad6422 100644 --- a/lib/matplotlib/tests/__init__.py +++ b/lib/matplotlib/tests/__init__.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/tests/conftest.py b/lib/matplotlib/tests/conftest.py index 2971a4314146..b946c269bd18 100644 --- a/lib/matplotlib/tests/conftest.py +++ b/lib/matplotlib/tests/conftest.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function from matplotlib.testing.conftest import (mpl_test_settings, mpl_image_comparison_parameters, diff --git a/lib/matplotlib/tests/test_afm.py b/lib/matplotlib/tests/test_afm.py index c0de9abf01bf..d4cfce2c61e6 100644 --- a/lib/matplotlib/tests/test_afm.py +++ b/lib/matplotlib/tests/test_afm.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function from six import BytesIO import matplotlib.afm as afm @@ -34,7 +33,7 @@ def test_nonascii_str(): # This tests that we also decode bytes as utf-8 properly. # Else, font files with non ascii characters fail to load. - inp_str = "привет" + inp_str = u"привет" byte_str = inp_str.encode("utf8") ret = afm._to_str(byte_str) diff --git a/lib/matplotlib/tests/test_agg.py b/lib/matplotlib/tests/test_agg.py index de6ea2c93965..6dca4468d32b 100644 --- a/lib/matplotlib/tests/test_agg.py +++ b/lib/matplotlib/tests/test_agg.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import io diff --git a/lib/matplotlib/tests/test_animation.py b/lib/matplotlib/tests/test_animation.py index e3be83b7c80a..76d680660704 100644 --- a/lib/matplotlib/tests/test_animation.py +++ b/lib/matplotlib/tests/test_animation.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/tests/test_arrow_patches.py b/lib/matplotlib/tests/test_arrow_patches.py index 79bf9bb1b26a..44f87c5fe59a 100644 --- a/lib/matplotlib/tests/test_arrow_patches.py +++ b/lib/matplotlib/tests/test_arrow_patches.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import matplotlib.pyplot as plt from matplotlib.testing.decorators import image_comparison diff --git a/lib/matplotlib/tests/test_artist.py b/lib/matplotlib/tests/test_artist.py index 786d5090393d..d0ee42f96bdf 100644 --- a/lib/matplotlib/tests/test_artist.py +++ b/lib/matplotlib/tests/test_artist.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import io import warnings diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index f10bc90ceb9d..eb38f9f4d8b5 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six from six.moves import xrange diff --git a/lib/matplotlib/tests/test_backend_pdf.py b/lib/matplotlib/tests/test_backend_pdf.py index 76c9ee81cbbb..ded0af7f93c9 100644 --- a/lib/matplotlib/tests/test_backend_pdf.py +++ b/lib/matplotlib/tests/test_backend_pdf.py @@ -1,7 +1,6 @@ # -*- encoding: utf-8 -*- -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six @@ -35,7 +34,7 @@ def test_use14corefonts(): rcParams['font.sans-serif'] = ['Helvetica'] rcParams['pdf.compression'] = 0 - text = '''A three-line text positioned just above a blue line + text = u'''A three-line text positioned just above a blue line and containing some French characters and the euro symbol: "Merci pépé pour les 10 €"''' diff --git a/lib/matplotlib/tests/test_backend_pgf.py b/lib/matplotlib/tests/test_backend_pgf.py index 52151256f71a..3362edf9d44c 100644 --- a/lib/matplotlib/tests/test_backend_pgf.py +++ b/lib/matplotlib/tests/test_backend_pgf.py @@ -1,6 +1,5 @@ # -*- encoding: utf-8 -*- -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import os import shutil @@ -71,7 +70,7 @@ def create_figure(): # text and typesetting plt.plot([0.9], [0.5], "ro", markersize=3) - plt.text(0.9, 0.5, 'unicode (ü, °, µ) and math ($\\mu_i = x_i^2$)', + plt.text(0.9, 0.5, u'unicode (ü, °, µ) and math ($\\mu_i = x_i^2$)', ha='right', fontsize=20) plt.ylabel('sans-serif, blue, $\\frac{\\sqrt{x}}{y^2}$..', family='sans-serif', color='blue') diff --git a/lib/matplotlib/tests/test_backend_ps.py b/lib/matplotlib/tests/test_backend_ps.py index 17f58b6ee152..fcac2539424c 100644 --- a/lib/matplotlib/tests/test_backend_ps.py +++ b/lib/matplotlib/tests/test_backend_ps.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import io import re @@ -59,7 +58,7 @@ def test_savefig_to_stringio(format, use_log, rcParams): ax.set_yscale('log') ax.plot([1, 2], [1, 2]) - ax.set_title("Déjà vu") + ax.set_title(u"Déjà vu") for buffer in buffers: fig.savefig(buffer, format=format) diff --git a/lib/matplotlib/tests/test_backend_qt4.py b/lib/matplotlib/tests/test_backend_qt4.py index 6d3e1f534871..a621329772ed 100644 --- a/lib/matplotlib/tests/test_backend_qt4.py +++ b/lib/matplotlib/tests/test_backend_qt4.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function from matplotlib import pyplot as plt from matplotlib._pylab_helpers import Gcf diff --git a/lib/matplotlib/tests/test_backend_qt5.py b/lib/matplotlib/tests/test_backend_qt5.py index 2c2d7a02192b..81a23081ddbd 100644 --- a/lib/matplotlib/tests/test_backend_qt5.py +++ b/lib/matplotlib/tests/test_backend_qt5.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import copy diff --git a/lib/matplotlib/tests/test_backend_svg.py b/lib/matplotlib/tests/test_backend_svg.py index 055c220982a6..0facf2abd18f 100644 --- a/lib/matplotlib/tests/test_backend_svg.py +++ b/lib/matplotlib/tests/test_backend_svg.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/tests/test_basic.py b/lib/matplotlib/tests/test_basic.py index 945e78322b3d..ab84e44482f2 100644 --- a/lib/matplotlib/tests/test_basic.py +++ b/lib/matplotlib/tests/test_basic.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six import sys diff --git a/lib/matplotlib/tests/test_bbox_tight.py b/lib/matplotlib/tests/test_bbox_tight.py index b4f9bdf30f1f..5eb4b6b3ba2c 100644 --- a/lib/matplotlib/tests/test_bbox_tight.py +++ b/lib/matplotlib/tests/test_bbox_tight.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import numpy as np diff --git a/lib/matplotlib/tests/test_category.py b/lib/matplotlib/tests/test_category.py index 7156dc59933c..5411430a2e19 100644 --- a/lib/matplotlib/tests/test_category.py +++ b/lib/matplotlib/tests/test_category.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- """Catch all for categorical functions""" -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import pytest import numpy as np @@ -14,7 +13,7 @@ class TestUnitData(object): testdata = [("hello world", ["hello world"], [0]), - ("Здравствуйте мир", ["Здравствуйте мир"], [0]), + (u"Здравствуйте мир", [u"Здравствуйте мир"], [0]), (['A', 'A', np.nan, 'B', -np.inf, 3.14, np.inf], ['-inf', '3.14', 'A', 'B', 'inf', 'nan'], [-3.0, 0, 1, 2, -2.0, -1.0])] @@ -63,7 +62,7 @@ class TestStrCategoryConverter(object): ref: /pandas/tseries/tests/test_converter.py /pandas/tests/test_algos.py:TestFactorize """ - testdata = [("Здравствуйте мир", [("Здравствуйте мир", 42)], 42), + testdata = [(u"Здравствуйте мир", [(u"Здравствуйте мир", 42)], 42), ("hello world", [("hello world", 42)], 42), (['a', 'b', 'b', 'a', 'a', 'c', 'c', 'c'], [('a', 0), ('b', 1), ('c', 2)], @@ -163,7 +162,7 @@ def axis_test(self, axis, ticks, labels, unit_data): assert axis.unit_data.seq == unit_data.seq def test_plot_unicode(self): - words = ['Здравствуйте', 'привет'] + words = [u'Здравствуйте', u'привет'] locs = [0.0, 1.0] unit_data = MockUnitData(zip(words, locs)) diff --git a/lib/matplotlib/tests/test_cbook.py b/lib/matplotlib/tests/test_cbook.py index 4ff2cc52abb3..74fa67913eef 100644 --- a/lib/matplotlib/tests/test_cbook.py +++ b/lib/matplotlib/tests/test_cbook.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import itertools import pickle from weakref import ref diff --git a/lib/matplotlib/tests/test_collections.py b/lib/matplotlib/tests/test_collections.py index 03d5c80b38e9..abc49e2f1be4 100644 --- a/lib/matplotlib/tests/test_collections.py +++ b/lib/matplotlib/tests/test_collections.py @@ -1,8 +1,7 @@ """ Tests specific to the collections module. """ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import io diff --git a/lib/matplotlib/tests/test_colorbar.py b/lib/matplotlib/tests/test_colorbar.py index b75ba7e9f23d..d48e5e57c2f2 100644 --- a/lib/matplotlib/tests/test_colorbar.py +++ b/lib/matplotlib/tests/test_colorbar.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import numpy as np import pytest diff --git a/lib/matplotlib/tests/test_colors.py b/lib/matplotlib/tests/test_colors.py index 264d75ebe57a..d854437df44a 100644 --- a/lib/matplotlib/tests/test_colors.py +++ b/lib/matplotlib/tests/test_colors.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import copy import six diff --git a/lib/matplotlib/tests/test_compare_images.py b/lib/matplotlib/tests/test_compare_images.py index f5bb9dda84ce..5371156326b9 100644 --- a/lib/matplotlib/tests/test_compare_images.py +++ b/lib/matplotlib/tests/test_compare_images.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/tests/test_container.py b/lib/matplotlib/tests/test_container.py index f2d4edf4d7e3..2e1b24d4e424 100644 --- a/lib/matplotlib/tests/test_container.py +++ b/lib/matplotlib/tests/test_container.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six import matplotlib.pyplot as plt diff --git a/lib/matplotlib/tests/test_contour.py b/lib/matplotlib/tests/test_contour.py index cb1838f54f4d..110f981acdf5 100644 --- a/lib/matplotlib/tests/test_contour.py +++ b/lib/matplotlib/tests/test_contour.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import datetime diff --git a/lib/matplotlib/tests/test_dates.py b/lib/matplotlib/tests/test_dates.py index 91617b14da48..d7231e61ec47 100644 --- a/lib/matplotlib/tests/test_dates.py +++ b/lib/matplotlib/tests/test_dates.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function from six.moves import map diff --git a/lib/matplotlib/tests/test_dviread.py b/lib/matplotlib/tests/test_dviread.py index 9410de60c8d2..eb1bd10584ba 100644 --- a/lib/matplotlib/tests/test_dviread.py +++ b/lib/matplotlib/tests/test_dviread.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six from matplotlib.testing.decorators import skip_if_command_unavailable diff --git a/lib/matplotlib/tests/test_figure.py b/lib/matplotlib/tests/test_figure.py index 0c4ac248e381..89925aa7fa7c 100644 --- a/lib/matplotlib/tests/test_figure.py +++ b/lib/matplotlib/tests/test_figure.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function from matplotlib import rcParams from matplotlib.testing.decorators import image_comparison diff --git a/lib/matplotlib/tests/test_font_manager.py b/lib/matplotlib/tests/test_font_manager.py index 239757369838..56436cc392f4 100644 --- a/lib/matplotlib/tests/test_font_manager.py +++ b/lib/matplotlib/tests/test_font_manager.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/tests/test_image.py b/lib/matplotlib/tests/test_image.py index 9dc83efe27dc..c66f1f1eecad 100644 --- a/lib/matplotlib/tests/test_image.py +++ b/lib/matplotlib/tests/test_image.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/tests/test_legend.py b/lib/matplotlib/tests/test_legend.py index da9b072aeef0..61f5b29ad23a 100644 --- a/lib/matplotlib/tests/test_legend.py +++ b/lib/matplotlib/tests/test_legend.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function try: # mock in python 3.3+ @@ -89,7 +88,7 @@ def test_various_labels(): fig = plt.figure() ax = fig.add_subplot(121) ax.plot(np.arange(4), 'o', label=1) - ax.plot(np.linspace(4, 4.1), 'o', label='D\xe9velopp\xe9s') + ax.plot(np.linspace(4, 4.1), 'o', label=u'D\xe9velopp\xe9s') ax.plot(np.arange(4, 1, -1), 'o', label='__nolegend__') ax.legend(numpoints=1, loc=0) diff --git a/lib/matplotlib/tests/test_lines.py b/lib/matplotlib/tests/test_lines.py index 83939cfce0a7..e0b6258e9ba5 100644 --- a/lib/matplotlib/tests/test_lines.py +++ b/lib/matplotlib/tests/test_lines.py @@ -1,8 +1,7 @@ """ Tests specific to the lines module. """ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import itertools import matplotlib.lines as mlines diff --git a/lib/matplotlib/tests/test_mathtext.py b/lib/matplotlib/tests/test_mathtext.py index 7ef77ce6a5a7..cdc1093e1417 100644 --- a/lib/matplotlib/tests/test_mathtext.py +++ b/lib/matplotlib/tests/test_mathtext.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/tests/test_mlab.py b/lib/matplotlib/tests/test_mlab.py index ef36eaf0b702..7939411cf511 100644 --- a/lib/matplotlib/tests/test_mlab.py +++ b/lib/matplotlib/tests/test_mlab.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/tests/test_offsetbox.py b/lib/matplotlib/tests/test_offsetbox.py index 9e883ecf2fcc..f54a5fbc7236 100644 --- a/lib/matplotlib/tests/test_offsetbox.py +++ b/lib/matplotlib/tests/test_offsetbox.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function from matplotlib.testing.decorators import image_comparison import matplotlib.pyplot as plt diff --git a/lib/matplotlib/tests/test_patches.py b/lib/matplotlib/tests/test_patches.py index 2ea7af52e509..af75a13c7783 100644 --- a/lib/matplotlib/tests/test_patches.py +++ b/lib/matplotlib/tests/test_patches.py @@ -1,8 +1,7 @@ """ Tests specific to the patches module. """ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/tests/test_path.py b/lib/matplotlib/tests/test_path.py index ea2891bedf90..5bc499713ecc 100644 --- a/lib/matplotlib/tests/test_path.py +++ b/lib/matplotlib/tests/test_path.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import copy import numpy as np diff --git a/lib/matplotlib/tests/test_patheffects.py b/lib/matplotlib/tests/test_patheffects.py index 6a8aadaea997..fe7265957d26 100644 --- a/lib/matplotlib/tests/test_patheffects.py +++ b/lib/matplotlib/tests/test_patheffects.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import numpy as np import pytest diff --git a/lib/matplotlib/tests/test_pickle.py b/lib/matplotlib/tests/test_pickle.py index bd6ac6862063..89a5a512e7c7 100644 --- a/lib/matplotlib/tests/test_pickle.py +++ b/lib/matplotlib/tests/test_pickle.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function from six.moves import cPickle as pickle from six.moves import range diff --git a/lib/matplotlib/tests/test_png.py b/lib/matplotlib/tests/test_png.py index 9e5dfae06dae..b439dbe85aae 100644 --- a/lib/matplotlib/tests/test_png.py +++ b/lib/matplotlib/tests/test_png.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six from six import BytesIO diff --git a/lib/matplotlib/tests/test_rcparams.py b/lib/matplotlib/tests/test_rcparams.py index c8bc32e7441d..5185ac5b6464 100644 --- a/lib/matplotlib/tests/test_rcparams.py +++ b/lib/matplotlib/tests/test_rcparams.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six @@ -74,8 +73,7 @@ def test_RcParams_class(): 'font.weight': 'normal', 'font.size': 12}) - if six.PY3: - expected_repr = """ + expected_repr = """ RcParams({'font.cursive': ['Apple Chancery', 'Textile', 'Zapf Chancery', @@ -83,29 +81,13 @@ def test_RcParams_class(): 'font.family': ['sans-serif'], 'font.size': 12.0, 'font.weight': 'normal'})""".lstrip() - else: - expected_repr = """ -RcParams({u'font.cursive': [u'Apple Chancery', - u'Textile', - u'Zapf Chancery', - u'cursive'], - u'font.family': [u'sans-serif'], - u'font.size': 12.0, - u'font.weight': u'normal'})""".lstrip() assert expected_repr == repr(rc) - if six.PY3: - expected_str = """ + expected_str = """ font.cursive: ['Apple Chancery', 'Textile', 'Zapf Chancery', 'cursive'] font.family: ['sans-serif'] font.size: 12.0 -font.weight: normal""".lstrip() - else: - expected_str = """ -font.cursive: [u'Apple Chancery', u'Textile', u'Zapf Chancery', u'cursive'] -font.family: [u'sans-serif'] -font.size: 12.0 font.weight: normal""".lstrip() assert expected_str == str(rc) diff --git a/lib/matplotlib/tests/test_sankey.py b/lib/matplotlib/tests/test_sankey.py index d28b0b3e2d2c..7c8822c70df4 100644 --- a/lib/matplotlib/tests/test_sankey.py +++ b/lib/matplotlib/tests/test_sankey.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function from matplotlib.sankey import Sankey diff --git a/lib/matplotlib/tests/test_simplification.py b/lib/matplotlib/tests/test_simplification.py index 22c2f8ebaa33..fca140877bdc 100644 --- a/lib/matplotlib/tests/test_simplification.py +++ b/lib/matplotlib/tests/test_simplification.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import io diff --git a/lib/matplotlib/tests/test_skew.py b/lib/matplotlib/tests/test_skew.py index 79cb75c2c273..b884139ab10e 100644 --- a/lib/matplotlib/tests/test_skew.py +++ b/lib/matplotlib/tests/test_skew.py @@ -1,8 +1,7 @@ """ Testing that skewed axes properly work """ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import itertools diff --git a/lib/matplotlib/tests/test_spines.py b/lib/matplotlib/tests/test_spines.py index 1ac8f054f62e..f1b486b9b723 100644 --- a/lib/matplotlib/tests/test_spines.py +++ b/lib/matplotlib/tests/test_spines.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import numpy as np diff --git a/lib/matplotlib/tests/test_streamplot.py b/lib/matplotlib/tests/test_streamplot.py index ac997b2b2230..e59877574927 100644 --- a/lib/matplotlib/tests/test_streamplot.py +++ b/lib/matplotlib/tests/test_streamplot.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import numpy as np from numpy.testing import assert_array_almost_equal diff --git a/lib/matplotlib/tests/test_style.py b/lib/matplotlib/tests/test_style.py index 2addd1addfdc..8681a2a2a9f9 100644 --- a/lib/matplotlib/tests/test_style.py +++ b/lib/matplotlib/tests/test_style.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import os import shutil diff --git a/lib/matplotlib/tests/test_subplots.py b/lib/matplotlib/tests/test_subplots.py index 3546d8d66c7c..edfe5a5dfe85 100644 --- a/lib/matplotlib/tests/test_subplots.py +++ b/lib/matplotlib/tests/test_subplots.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import warnings diff --git a/lib/matplotlib/tests/test_table.py b/lib/matplotlib/tests/test_table.py index 071c3f1cb1d5..856e2e45d78c 100644 --- a/lib/matplotlib/tests/test_table.py +++ b/lib/matplotlib/tests/test_table.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/tests/test_texmanager.py b/lib/matplotlib/tests/test_texmanager.py index 1c525d5ed804..63dae2c4bd88 100644 --- a/lib/matplotlib/tests/test_texmanager.py +++ b/lib/matplotlib/tests/test_texmanager.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import matplotlib.pyplot as plt from matplotlib.texmanager import TexManager diff --git a/lib/matplotlib/tests/test_text.py b/lib/matplotlib/tests/test_text.py index 65306541faf1..32d3b468119d 100644 --- a/lib/matplotlib/tests/test_text.py +++ b/lib/matplotlib/tests/test_text.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/tests/test_ticker.py b/lib/matplotlib/tests/test_ticker.py index d2efd72015d3..32206a0c6168 100644 --- a/lib/matplotlib/tests/test_ticker.py +++ b/lib/matplotlib/tests/test_ticker.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function from numpy.testing import assert_almost_equal import numpy as np @@ -579,7 +578,7 @@ class TestEngFormatter(object): (-0.0, ('0', '0', '0.00')), (-0, ('0', '0', '0.00')), (0, ('0', '0', '0.00')), - (1.23456789e-6, ('1.23457 \u03bc', '1 \u03bc', '1.23 \u03bc')), + (1.23456789e-6, (u'1.23457 \u03bc', u'1 \u03bc', u'1.23 \u03bc')), (0.123456789, ('123.457 m', '123 m', '123.46 m')), (0.1, ('100 m', '100 m', '100.00 m')), (1, ('1', '1', '1.00')), diff --git a/lib/matplotlib/tests/test_tightlayout.py b/lib/matplotlib/tests/test_tightlayout.py index bc535ed88e1f..502e2b3015b4 100644 --- a/lib/matplotlib/tests/test_tightlayout.py +++ b/lib/matplotlib/tests/test_tightlayout.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six import warnings diff --git a/lib/matplotlib/tests/test_transforms.py b/lib/matplotlib/tests/test_transforms.py index 8f19a50f3b47..ef694e199de6 100644 --- a/lib/matplotlib/tests/test_transforms.py +++ b/lib/matplotlib/tests/test_transforms.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function from six.moves import zip diff --git a/lib/matplotlib/tests/test_triangulation.py b/lib/matplotlib/tests/test_triangulation.py index 2cab3932a84d..c1bf486230bd 100644 --- a/lib/matplotlib/tests/test_triangulation.py +++ b/lib/matplotlib/tests/test_triangulation.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import numpy as np import matplotlib.pyplot as plt diff --git a/lib/matplotlib/tests/test_ttconv.py b/lib/matplotlib/tests/test_ttconv.py index 63dd928144c2..de4c579d9033 100644 --- a/lib/matplotlib/tests/test_ttconv.py +++ b/lib/matplotlib/tests/test_ttconv.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/tests/test_type1font.py b/lib/matplotlib/tests/test_type1font.py index 013b7a6eb368..2f1f45240bba 100644 --- a/lib/matplotlib/tests/test_type1font.py +++ b/lib/matplotlib/tests/test_type1font.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/tests/test_usetex.py b/lib/matplotlib/tests/test_usetex.py index 790364c59b77..5d6a939e8a1a 100644 --- a/lib/matplotlib/tests/test_usetex.py +++ b/lib/matplotlib/tests/test_usetex.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import pytest diff --git a/lib/matplotlib/tests/test_widgets.py b/lib/matplotlib/tests/test_widgets.py index 345140dbdab1..b8a3efc2956d 100644 --- a/lib/matplotlib/tests/test_widgets.py +++ b/lib/matplotlib/tests/test_widgets.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function try: # mock in python 3.3+ diff --git a/lib/matplotlib/texmanager.py b/lib/matplotlib/texmanager.py index cafb56f93d9b..b156196f791b 100644 --- a/lib/matplotlib/texmanager.py +++ b/lib/matplotlib/texmanager.py @@ -33,8 +33,7 @@ """ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six diff --git a/lib/matplotlib/text.py b/lib/matplotlib/text.py index 9fef5760c734..84d7f1242155 100644 --- a/lib/matplotlib/text.py +++ b/lib/matplotlib/text.py @@ -1,8 +1,7 @@ """ Classes for including text in a figure. """ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six from six.moves import zip diff --git a/lib/mpl_toolkits/tests/test_axes_grid1.py b/lib/mpl_toolkits/tests/test_axes_grid1.py index 87ec59c719ba..7914ad397215 100644 --- a/lib/mpl_toolkits/tests/test_axes_grid1.py +++ b/lib/mpl_toolkits/tests/test_axes_grid1.py @@ -1,5 +1,4 @@ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six From e47ad44ee52ee3876375ed15c2431cbdd5bf7f33 Mon Sep 17 00:00:00 2001 From: "Erik M. Bray" Date: Tue, 19 Dec 2017 09:28:58 +0000 Subject: [PATCH 2/4] One more module I needed to fix in order for the tests to pass with my home directory set to a non-ASCII name --- lib/matplotlib/dviread.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/matplotlib/dviread.py b/lib/matplotlib/dviread.py index f3b55ddd532a..4bc254c79f3c 100644 --- a/lib/matplotlib/dviread.py +++ b/lib/matplotlib/dviread.py @@ -17,8 +17,7 @@ ... """ -from __future__ import (absolute_import, division, print_function, - unicode_literals) +from __future__ import absolute_import, division, print_function import six from six.moves import xrange @@ -764,13 +763,13 @@ def __init__(self, filename): with open(filename, 'rb') as file: header1 = file.read(24) lh, bc, ec, nw, nh, nd = \ - struct.unpack(str('!6H'), header1[2:14]) + struct.unpack('!6H', header1[2:14]) _log.debug( 'lh=%d, bc=%d, ec=%d, nw=%d, nh=%d, nd=%d' % ( lh, bc, ec, nw, nh, nd)) header2 = file.read(4*lh) self.checksum, self.design_size = \ - struct.unpack(str('!2I'), header2[:8]) + struct.unpack('!2I', header2[:8]) # there is also encoding information etc. char_info = file.read(4*(ec-bc+1)) widths = file.read(4*nw) @@ -779,7 +778,7 @@ def __init__(self, filename): self.width, self.height, self.depth = {}, {}, {} widths, heights, depths = \ - [struct.unpack(str('!%dI') % (len(x)/4), x) + [struct.unpack('!%dI' % (len(x)/4), x) for x in (widths, heights, depths)] for idx, char in enumerate(xrange(bc, ec+1)): byte0 = ord(char_info[4*idx]) @@ -1040,7 +1039,7 @@ def find_tex_file(filename, format=None): if isinstance(format, bytes): format = format.decode('utf-8', errors='replace') - cmd = [str('kpsewhich')] + cmd = ['kpsewhich'] if format is not None: cmd += ['--format=' + format] cmd += [filename] From 6fda2ab9898dc3518064f6030c2bc36ac10a80c5 Mon Sep 17 00:00:00 2001 From: "Erik M. Bray" Date: Tue, 19 Dec 2017 13:58:13 +0000 Subject: [PATCH 3/4] Only decode path strings if it is not already str (in other words, on Python 2 leave str as str instead of converting to unicode). --- lib/matplotlib/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/__init__.py b/lib/matplotlib/__init__.py index 5437bd0357df..eacd541b9c81 100644 --- a/lib/matplotlib/__init__.py +++ b/lib/matplotlib/__init__.py @@ -710,7 +710,7 @@ def _get_cachedir(): def _decode_filesystem_path(path): - if isinstance(path, bytes): + if not isinstance(path, str): return path.decode(sys.getfilesystemencoding()) else: return path From 461ae120b86cfb1759d37fb0e18ed90de82ca845 Mon Sep 17 00:00:00 2001 From: "Erik M. Bray" Date: Thu, 21 Dec 2017 09:37:33 +0000 Subject: [PATCH 4/4] Minor stylistic tweak --- lib/matplotlib/rcsetup.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index 3a104b953640..95d9df7dbc87 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -408,9 +408,8 @@ def deprecate_axes_colorcycle(value): validate_colorlist.__doc__ = 'return a list of colorspecs' def validate_string(s): - if isinstance(s, str): # Always leave str as str - return s - elif isinstance(s, six.text_type): + if isinstance(s, (str, six.text_type)): + # Always leave str as str and unicode as unicode return s else: return str(s)