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);
}