diff --git a/doc/_templates/index.html b/doc/_templates/index.html index 4d235eb8b456..0343730ec5c1 100644 --- a/doc/_templates/index.html +++ b/doc/_templates/index.html @@ -147,9 +147,7 @@

Need help?

To keep up to date with what's going on in matplotlib, see the what's new -page, the more detailed changelog or browse -the source +page or browse the source code. Anything that could require changes to your existing code is logged in the api changes file.

diff --git a/lib/matplotlib/artist.py b/lib/matplotlib/artist.py index ecad896004cf..2b3909a664ec 100644 --- a/lib/matplotlib/artist.py +++ b/lib/matplotlib/artist.py @@ -214,7 +214,8 @@ def set_axes(self, axes): ACCEPTS: an :class:`~matplotlib.axes.Axes` instance """ - warnings.warn(_get_axes_msg, mplDeprecation, stacklevel=1) + warnings.warn(_get_axes_msg.format('set_axes'), mplDeprecation, + stacklevel=1) self.axes = axes def get_axes(self): @@ -225,7 +226,8 @@ def get_axes(self): This has been deprecated in mpl 1.5, please use the axes property. Will be removed in 1.7 or 2.0. """ - warnings.warn(_get_axes_msg, mplDeprecation, stacklevel=1) + warnings.warn(_get_axes_msg.format('get_axes'), mplDeprecation, + stacklevel=1) return self.axes @property @@ -1580,5 +1582,5 @@ def kwdoc(a): docstring.interpd.update(Artist=kwdoc(Artist)) -_get_axes_msg = """This has been deprecated in mpl 1.5, please use the +_get_axes_msg = """{} has been deprecated in mpl 1.5, please use the axes property. A removal date has not been set.""" diff --git a/lib/matplotlib/dviread.py b/lib/matplotlib/dviread.py index db6e9764679d..1141f6aa08e1 100644 --- a/lib/matplotlib/dviread.py +++ b/lib/matplotlib/dviread.py @@ -841,7 +841,7 @@ def find_tex_file(filename, format=None): """ Call :program:`kpsewhich` to find a file in the texmf tree. If *format* is not None, it is used as the value for the - :option:`--format` option. + `--format` option. Apparently most existing TeX distributions on Unix-like systems use kpathsea. I hear MikTeX (a popular distribution on Windows) diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 9993cd5f1f73..1eee2088a490 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -2843,12 +2843,15 @@ def subsuper(self, s, loc, toks): sub = None super = None - # Pick all of the apostrophe's out + # Pick all of the apostrophes out, including first apostrophes that have + # been parsed as characters napostrophes = 0 new_toks = [] for tok in toks[0]: if isinstance(tok, six.string_types) and tok not in ('^', '_'): napostrophes += len(tok) + elif isinstance(tok, Char) and tok.c == "'": + napostrophes += 1 else: new_toks.append(tok) toks = new_toks @@ -2903,6 +2906,9 @@ def subsuper(self, s, loc, toks): super = Hlist([]) for i in range(napostrophes): super.children.extend(self.symbol(s, loc, ['\prime'])) + # kern() and hpack() needed to get the metrics right after extending + super.kern() + super.hpack() # Handle over/under symbols, such as sum or integral if self.is_overunder(nucleus): diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index 666b8954ebd2..d864ccf32770 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -3011,15 +3011,21 @@ class Bar(_Base): def __init__(self, armA=0., armB=0., fraction=0.3, angle=None): """ - *armA* : minimum length of armA + Parameters + ---------- + armA : float + minimum length of armA - *armB* : minimum length of armB + armB : float + minimum length of armB - *fraction* : a fraction of the distance between two points that - will be added to armA and armB. + fraction : float + a fraction of the distance between two points that + will be added to armA and armB. - *angle* : angle of the connecting line (if None, parallel to A - and B) + angle : float or None + angle of the connecting line (if None, parallel + to A and B) """ self.armA = armA self.armB = armB diff --git a/lib/matplotlib/quiver.py b/lib/matplotlib/quiver.py index 4b4cd9c53962..dd92676aa142 100644 --- a/lib/matplotlib/quiver.py +++ b/lib/matplotlib/quiver.py @@ -228,7 +228,7 @@ class QuiverKey(martist.Artist): """ Labelled arrow for use as a quiver plot scale key.""" halign = {'N': 'center', 'S': 'center', 'E': 'left', 'W': 'right'} valign = {'N': 'bottom', 'S': 'top', 'E': 'center', 'W': 'center'} - pivot = {'N': 'mid', 'S': 'mid', 'E': 'tip', 'W': 'tail'} + pivot = {'N': 'middle', 'S': 'middle', 'E': 'tip', 'W': 'tail'} def __init__(self, Q, X, Y, U, label, **kw): martist.Artist.__init__(self) @@ -708,6 +708,10 @@ def _h_arrows(self, length): X = X - X[:, 3, np.newaxis] # numpy bug? using -= does not # work here unless we multiply # by a float first, as with 'mid'. + elif self.pivot != 'tail': + raise ValueError(("Quiver.pivot must have value in {{'middle', " + "'tip', 'tail'}} not {}").format(self.pivot)) + tooshort = length < self.minlength if tooshort.any(): # Use a heptagonal dot: diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_31.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_31.pdf index ee8cc7b4cc2d..532b5cefcfad 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_31.pdf and b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_31.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_31.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_31.png index b7f10201a37a..37bc5f8118e4 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_31.png and b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_31.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_31.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_31.svg index 25ef4a4827f9..455a228221b1 100644 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_31.svg +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_31.svg @@ -18,21 +18,8 @@ z " style="fill:#ffffff;"/> - + - + + + + + + + - - - + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_31.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_31.pdf index 806868686888..1504434b1791 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_31.pdf and b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_31.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_31.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_31.png index 844329c0af2d..11a901df8f39 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_31.png and b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_31.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_31.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_31.svg index cedbd925cd50..9f2e2e7f77d1 100644 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_31.svg +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_31.svg @@ -18,21 +18,8 @@ z " style="fill:#ffffff;"/> - + - + + + + + + + - - - + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_31.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_31.pdf index 651d833d5f68..02c6365d6900 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_31.pdf and b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_31.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_31.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_31.png index bcfaa755f644..6e0fb8c17492 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_31.png and b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_31.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_31.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_31.svg index d2803b0b22ec..08a0c804eed2 100644 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_31.svg +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_31.svg @@ -18,21 +18,8 @@ z " style="fill:#ffffff;"/> - + - + + + + + + + - - - + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_31.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_31.pdf index bb9f86148c82..945fc7cb66fa 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_31.pdf and b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_31.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_31.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_31.png index ad3a90304fa1..a8917d146f31 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_31.png and b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_31.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_31.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_31.svg index 3f7b682991c1..b0828cb09b48 100644 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_31.svg +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_31.svg @@ -18,7 +18,7 @@ z " style="fill:#ffffff;"/> - + + + + + + + - - - + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_31.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_31.pdf index 77f734b5d9fe..c03e8a6b1904 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_31.pdf and b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_31.pdf differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_31.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_31.png index e57c157014a9..175cd3c5ec15 100644 Binary files a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_31.png and b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_31.png differ diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_31.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_31.svg index 38dde5b18cd8..635a911ad6f5 100644 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_31.svg +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_31.svg @@ -18,7 +18,7 @@ z " style="fill:#ffffff;"/> - + + + + + + + - - - + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_quiver/quiver_key_pivot.png b/lib/matplotlib/tests/baseline_images/test_quiver/quiver_key_pivot.png new file mode 100644 index 000000000000..4763bd26d841 Binary files /dev/null and b/lib/matplotlib/tests/baseline_images/test_quiver/quiver_key_pivot.png differ diff --git a/lib/matplotlib/tests/test_image.py b/lib/matplotlib/tests/test_image.py index c9282eec6853..11097eb4e460 100644 --- a/lib/matplotlib/tests/test_image.py +++ b/lib/matplotlib/tests/test_image.py @@ -6,6 +6,8 @@ import io import os +from nose.plugins.attrib import attr + import numpy as np from matplotlib.testing.decorators import (image_comparison, @@ -499,6 +501,13 @@ def test_minimized_rasterized(): assert False +@attr('network') +def test_load_from_url(): + req = six.moves.urllib.request.urlopen( + "http://matplotlib.org/_static/logo_sidebar_horiz.png") + Z = plt.imread(req) + + if __name__=='__main__': import nose nose.runmodule(argv=['-s','--with-doctest'], exit=False) diff --git a/lib/matplotlib/tests/test_mathtext.py b/lib/matplotlib/tests/test_mathtext.py index eeac74ad3878..4486e2d22f00 100644 --- a/lib/matplotlib/tests/test_mathtext.py +++ b/lib/matplotlib/tests/test_mathtext.py @@ -43,7 +43,7 @@ r"$\gamma = \frac{x=\frac{6}{8}}{y} \delta$", r'$\limsup_{x\to\infty}$', r'$\oint^\infty_0$', - r"$f'$", + r"$f'\quad f'''(x)\quad ''/\mathrm{yr}$", r'$\frac{x_2888}{y}$', r"$\sqrt[3]{\frac{X_2}{Y}}=5$", r"$\sqrt[5]{\prod^\frac{x}{2\pi^2}_\infty}$", diff --git a/src/_png.cpp b/src/_png.cpp index abba1ab53b67..e15456023f09 100644 --- a/src/_png.cpp +++ b/src/_png.cpp @@ -131,7 +131,15 @@ static PyObject *Py_write_png(PyObject *self, PyObject *args, PyObject *kwds) py_file = filein; } - if ((fp = mpl_PyFile_Dup(py_file, (char *)"wb", &offset))) { + #if PY3K + if (close_file) { + #else + if (close_file || PyFile_Check(py_file)) { + #endif + fp = mpl_PyFile_Dup(py_file, (char *)"wb", &offset); + } + + if (fp) { close_dup_file = true; } else { PyErr_Clear(); @@ -287,10 +295,23 @@ static PyObject *_read_png(PyObject *filein, bool float_result) py_file = filein; } - if ((fp = mpl_PyFile_Dup(py_file, (char *)"rb", &offset))) { + #if PY3K + if (close_file) { + #else + if (close_file || PyFile_Check(py_file)) { + #endif + fp = mpl_PyFile_Dup(py_file, (char *)"rb", &offset); + } + + if (fp) { close_dup_file = true; + if (fread(header, 1, 8, fp) != 8) { + PyErr_SetString(PyExc_IOError, "error reading PNG header"); + goto exit; + } } else { PyErr_Clear(); + PyObject *read_method = PyObject_GetAttrString(py_file, "read"); if (!(read_method && PyCallable_Check(read_method))) { Py_XDECREF(read_method); @@ -300,14 +321,6 @@ static PyObject *_read_png(PyObject *filein, bool float_result) goto exit; } Py_XDECREF(read_method); - } - - if (fp) { - if (fread(header, 1, 8, fp) != 8) { - PyErr_SetString(PyExc_IOError, "error reading PNG header"); - goto exit; - } - } else { _read_png_data(py_file, header, 8); }