From 29f2c5ef9354d7d2de7998c4b32298c069a01b8a Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 2 Mar 2020 20:30:20 -0500 Subject: [PATCH 01/42] ci: Exit early if 'Install dependencies' task fails. --- azure-pipelines.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a0dfea9c1ee0..a4ed83b5a752 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -53,6 +53,7 @@ steps: condition: and(succeeded(), eq(variables['python.version'], 'Pre')) - bash: | + set -e case "$(python -c 'import sys; print(sys.platform)')" in linux) sudo apt-get update From 1f8dbb9fa231a0c0df9da1a7a0b355e23d13702f Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 2 Mar 2020 20:42:41 -0500 Subject: [PATCH 02/42] ci: Install nuget on Azure for v3.2.x. --- azure-pipelines.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a4ed83b5a752..cc26f3b85831 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -52,6 +52,10 @@ steps: prerelease: true condition: and(succeeded(), eq(variables['python.version'], 'Pre')) +- task: NuGetToolInstaller@0 + displayName: 'Use latest available Nuget' + condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT')) + - bash: | set -e case "$(python -c 'import sys; print(sys.platform)')" in From 9bf0fef5d0654dd404cbfb88740b834fcbbe283f Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 2 Mar 2020 22:07:30 -0500 Subject: [PATCH 03/42] ci: Fix setting nuget search paths. Of course, in bash, the hash is a comment, so it needs to be quoted. --- azure-pipelines.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index cc26f3b85831..b5ccf41a788e 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -88,10 +88,10 @@ steps: win32) nuget install libpng-msvc14-x64 -ExcludeVersion -OutputDirectory "$(build.BinariesDirectory)" nuget install zlib-msvc14-x64 -ExcludeVersion -OutputDirectory "$(build.BinariesDirectory)" - echo ##vso[task.prependpath]$(build.BinariesDirectory)\libpng-msvc14-x64\build\native\bin_release - echo ##vso[task.prependpath]$(build.BinariesDirectory)\zlib-msvc14-x64\build\native\bin_release - echo ##vso[task.setvariable variable=CL]/I$(build.BinariesDirectory)\libpng-msvc14-x64\build\native\include /I$(build.BinariesDirectory)\zlib-msvc14-x64\build\native\include - echo ##vso[task.setvariable variable=LINK]/LIBPATH:$(build.BinariesDirectory)\libpng-msvc14-x64\build\native\lib_release /LIBPATH:$(build.BinariesDirectory)\zlib-msvc14-x64\build\native\lib_release + echo "##vso[task.prependpath]$(build.BinariesDirectory)\libpng-msvc14-x64\build\native\bin_release" + echo "##vso[task.prependpath]$(build.BinariesDirectory)\zlib-msvc14-x64\build\native\bin_release" + echo "##vso[task.setvariable variable=CL]/I$(build.BinariesDirectory)\libpng-msvc14-x64\build\native\include /I$(build.BinariesDirectory)\zlib-msvc14-x64\build\native\include" + echo "##vso[task.setvariable variable=LINK]/LIBPATH:$(build.BinariesDirectory)\libpng-msvc14-x64\build\native\lib_release /LIBPATH:$(build.BinariesDirectory)\zlib-msvc14-x64\build\native\lib_release" ;; *) exit 1 From 11892dd9df6b78260f8c5a047ad69a1510973659 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 3 Mar 2020 09:28:27 -0500 Subject: [PATCH 04/42] BLD: bump branch away from tag So the tarballs from github are stable From 2e95f54a1c9a46c0fc1bc35e27bd0150540ed262 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Tue, 3 Mar 2020 18:48:06 +0100 Subject: [PATCH 05/42] Backport PR #16649: Fix typo in docs --- lib/matplotlib/patches.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index 8223d15f4c8c..42affae91949 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -4317,7 +4317,7 @@ def __init__(self, xyA, xyB, coordsA, coordsB=None, 'figure fraction' 0, 0 is lower left of figure and 1, 1 is upper right 'axes points' points from lower left corner of axes 'axes pixels' pixels from lower left corner of axes - 'axes fraction' 0, 1 is lower left of axes and 1, 1 is upper right + 'axes fraction' 0, 0 is lower left of axes and 1, 1 is upper right 'data' use the coordinate system of the object being annotated (default) 'offset points' offset (in points) from the *xy* value From ac8344b3eb7c8276050825b41e735158a3d3af25 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Tue, 3 Mar 2020 16:22:33 -0500 Subject: [PATCH 06/42] Backport PR #16651: Docs: Change Python 2 note to past tense --- doc/_templates/sidebar_announcement.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/_templates/sidebar_announcement.html b/doc/_templates/sidebar_announcement.html index 57a0f225a3b6..f8fa4d8a5efb 100644 --- a/doc/_templates/sidebar_announcement.html +++ b/doc/_templates/sidebar_announcement.html @@ -1,5 +1,5 @@ From a171751ba5c0e9ca789a593834d807d0eda10a25 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Wed, 4 Mar 2020 13:47:34 -0800 Subject: [PATCH 07/42] Backport PR #16661: added Framework :: Matplotlib to setup --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 0a043672a3cd..e508cc42238d 100644 --- a/setup.py +++ b/setup.py @@ -76,6 +76,7 @@ classifiers = [ 'Development Status :: 5 - Production/Stable', + 'Framework :: Matplotlib', 'Intended Audience :: Science/Research', 'Intended Audience :: Education', 'License :: OSI Approved :: Python Software Foundation License', From 7b65f39008e9a894e7dad957aebe15f826290297 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Fri, 6 Mar 2020 00:13:02 +0100 Subject: [PATCH 08/42] Backport PR #16682: Avoid floating point rounding causing bezier.get_parallels to fail --- lib/matplotlib/bezier.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/matplotlib/bezier.py b/lib/matplotlib/bezier.py index 44c74c458982..d3e74afb4881 100644 --- a/lib/matplotlib/bezier.py +++ b/lib/matplotlib/bezier.py @@ -429,23 +429,23 @@ def get_parallels(bezier2, width): # find cm_left which is the intersecting point of a line through # c1_left with angle t1 and a line through c2_left with angle # t2. Same with cm_right. - if parallel_test != 0: - # a special case for a straight line, i.e., angle between two - # lines are smaller than some (arbitrary) value. - cmx_left, cmy_left = ( - 0.5 * (c1x_left + c2x_left), 0.5 * (c1y_left + c2y_left) - ) - cmx_right, cmy_right = ( - 0.5 * (c1x_right + c2x_right), 0.5 * (c1y_right + c2y_right) - ) - else: + try: cmx_left, cmy_left = get_intersection(c1x_left, c1y_left, cos_t1, sin_t1, c2x_left, c2y_left, cos_t2, sin_t2) - cmx_right, cmy_right = get_intersection(c1x_right, c1y_right, cos_t1, sin_t1, c2x_right, c2y_right, cos_t2, sin_t2) + except ValueError: + # Special case straight lines, i.e., angle between two lines is + # less than the threshold used by get_intersection (we don't use + # check_if_parallel as the threshold is not the same). + cmx_left, cmy_left = ( + 0.5 * (c1x_left + c2x_left), 0.5 * (c1y_left + c2y_left) + ) + cmx_right, cmy_right = ( + 0.5 * (c1x_right + c2x_right), 0.5 * (c1y_right + c2y_right) + ) # the parallel Bezier lines are created with control points of # [c1_left, cm_left, c2_left] and [c1_right, cm_right, c2_right] From 45472039bfb90b10a24287defe568e4e0494262f Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Sat, 7 Mar 2020 01:02:39 -0500 Subject: [PATCH 09/42] Backport PR #16656: Make test_imagegrid_cbar_mode_edge less flaky. --- lib/mpl_toolkits/tests/test_axes_grid.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/mpl_toolkits/tests/test_axes_grid.py b/lib/mpl_toolkits/tests/test_axes_grid.py index 58358b686651..0ff4f2b013b6 100644 --- a/lib/mpl_toolkits/tests/test_axes_grid.py +++ b/lib/mpl_toolkits/tests/test_axes_grid.py @@ -12,10 +12,16 @@ # The original version of this test relied on mpl_toolkits's slightly different # colorbar implementation; moving to matplotlib's own colorbar implementation # caused the small image comparison error. -@pytest.mark.parametrize("legacy_colorbar", [False, True]) -@image_comparison(['imagegrid_cbar_mode.png'], +@image_comparison(['imagegrid_cbar_mode.png', 'imagegrid_cbar_mode.png'], remove_text=True, style='mpl20', tol=0.3) -def test_imagegrid_cbar_mode_edge(legacy_colorbar): +def test_imagegrid_cbar_mode_edge(): + # Note, we don't use @pytest.mark.parametrize, because in parallel this + # might cause one process result to overwrite another's. + for legacy_colorbar in [False, True]: + _test_imagegrid_cbar_mode_edge(legacy_colorbar) + + +def _test_imagegrid_cbar_mode_edge(legacy_colorbar): mpl.rcParams["mpl_toolkits.legacy_colorbar"] = legacy_colorbar X, Y = np.meshgrid(np.linspace(0, 6, 30), np.linspace(0, 6, 30)) From 70b32cd7932df63b9c598be4ee52802d571135c4 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Wed, 18 Dec 2019 00:20:19 +0100 Subject: [PATCH 10/42] Restart pgf's latex instance after bad latex inputs. ... and also move the warning about pgf-to-stream not supporting raster images to when actually outputting a raster image (otherwise the warning is spurious, and affects e.g. test_tex_restart_after_error). --- lib/matplotlib/backends/backend_pgf.py | 19 ++++++++++++------- lib/matplotlib/tests/test_backend_pgf.py | 13 +++++++++++++ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index 178465d48ad7..6c8e7e06c8b3 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -252,6 +252,8 @@ def _cleanup_remaining_instances(): latex_manager._cleanup() def _stdin_writeln(self, s): + if self.latex is None: + self._setup_latex_process() self.latex_stdin_utf8.write(s) self.latex_stdin_utf8.write("\n") self.latex_stdin_utf8.flush() @@ -265,6 +267,8 @@ def _expect(self, s): if buf[-len(exp):] == exp: break if not len(b): + self.latex.kill() + self.latex = None raise LatexError("LaTeX process halted", buf.decode("utf8")) return buf.decode("utf8") @@ -301,6 +305,10 @@ def __init__(self): raise LatexError("LaTeX returned an error, probably missing font " "or error in preamble:\n%s" % stdout) + self.latex = None # Will be set up on first use. + self.str_cache = {} # cache for strings already processed + + def _setup_latex_process(self): # open LaTeX process for real work latex = subprocess.Popen([self.texcommand, "-halt-on-error"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, @@ -313,9 +321,6 @@ def __init__(self): self._expect("*pgf_backend_query_start") self._expect_prompt() - # cache for strings already processed - self.str_cache = {} - def _cleanup(self): if not self._os_path.isdir(self.tmpdir): return @@ -427,10 +432,10 @@ def __init__(self, figure, fh, dummy=False): else: # if fh does not belong to a filename, deactivate draw_image if not hasattr(fh, 'name') or not os.path.exists(fh.name): - cbook._warn_external("streamed pgf-code does not support " - "raster graphics, consider using the " - "pgf-to-pdf option", UserWarning) - self.__dict__["draw_image"] = lambda *args, **kwargs: None + self.__dict__["draw_image"] = \ + lambda *args, **kwargs: cbook._warn_external( + "streamed pgf-code does not support raster graphics, " + "consider using the pgf-to-pdf option") @cbook.deprecated("3.2") @property diff --git a/lib/matplotlib/tests/test_backend_pgf.py b/lib/matplotlib/tests/test_backend_pgf.py index 2b5b2060dc9a..269606c7feca 100644 --- a/lib/matplotlib/tests/test_backend_pgf.py +++ b/lib/matplotlib/tests/test_backend_pgf.py @@ -1,3 +1,4 @@ +from io import BytesIO import os from pathlib import Path import shutil @@ -269,3 +270,15 @@ def test_pdf_pages_lualatex(): pdf.savefig(fig) assert pdf.get_pagecount() == 2 + + +@needs_xelatex +def test_tex_restart_after_error(): + fig = plt.figure() + fig.suptitle(r"\oops") + with pytest.raises(ValueError): + fig.savefig(BytesIO(), format="pgf") + + fig = plt.figure() # start from scratch + fig.suptitle(r"this is ok") + fig.savefig(BytesIO(), format="pgf") From 566a7af54b1c6f29f4e2540f8a7cb23340b95902 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Sun, 8 Mar 2020 00:51:45 -0500 Subject: [PATCH 11/42] Fix saving PNGs to file objects in some places. --- lib/matplotlib/image.py | 2 +- lib/matplotlib/mathtext.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/image.py b/lib/matplotlib/image.py index 4fa365a696dd..734573595bc9 100644 --- a/lib/matplotlib/image.py +++ b/lib/matplotlib/image.py @@ -666,7 +666,7 @@ def write_png(self, fname): from matplotlib import _png im = self.to_rgba(self._A[::-1] if self.origin == 'lower' else self._A, bytes=True, norm=True) - with open(fname, "wb") as file: + with cbook.open_file_cm(fname, "wb") as file: _png.write_png(im, file) def set_data(self, A): diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 3c1ba5750cf4..b875516cf440 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -3433,7 +3433,7 @@ def to_png(self, filename, texstr, color='black', dpi=120, fontsize=14): from matplotlib import _png rgba, depth = self.to_rgba( texstr, color=color, dpi=dpi, fontsize=fontsize) - with open(filename, "wb") as file: + with cbook.open_file_cm(filename, "wb") as file: _png.write_png(rgba, file) return depth From 5484892c495c63ff41e23ae33c5e772c9e9691b9 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Sun, 8 Mar 2020 01:06:07 -0500 Subject: [PATCH 12/42] Add smoke test that saving MathText to PNG works. --- lib/matplotlib/tests/test_mathtext.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/matplotlib/tests/test_mathtext.py b/lib/matplotlib/tests/test_mathtext.py index fdf930184070..508e29fa0880 100644 --- a/lib/matplotlib/tests/test_mathtext.py +++ b/lib/matplotlib/tests/test_mathtext.py @@ -280,3 +280,14 @@ def test_single_minus_sign(): def test_spaces(fig_test, fig_ref): fig_test.subplots().set_title(r"$1\,2\>3\ 4$") fig_ref.subplots().set_title(r"$1\/2\:3~4$") + + +def test_math_to_image(tmpdir): + mathtext.math_to_image('$x^2$', str(tmpdir.join('example.png'))) + mathtext.math_to_image('$x^2$', io.BytesIO()) + + +def test_mathtext_to_png(tmpdir): + mt = mathtext.MathTextParser('bitmap') + mt.to_png(str(tmpdir.join('example.png')), '$x^2$') + mt.to_png(io.BytesIO(), '$x^2$') From 9b2293484f5897aef294030bc7887887b512f9d0 Mon Sep 17 00:00:00 2001 From: hannah Date: Mon, 9 Mar 2020 17:02:08 -0400 Subject: [PATCH 13/42] Backport PR #16671: Fix some readme bits --- README.rst | 13 ++++++------- setup.py | 6 +++--- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/README.rst b/README.rst index a4ff0e3e1914..186951c0baf0 100644 --- a/README.rst +++ b/README.rst @@ -23,20 +23,19 @@ .. _Gitter: https://gitter.im/matplotlib/matplotlib .. |NUMFocus| image:: https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat&colorA=E1523D&colorB=007D8A -.. _NUMFocus: http://www.numfocus.org - +.. _NUMFocus: https://www.numfocus.org .. |GitTutorial| image:: https://img.shields.io/badge/PR-Welcome-%23FF8300.svg? .. _GitTutorial: https://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project -.. image:: doc/_static/logo2.png +.. image:: https://matplotlib.org/_static/logo2.svg Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python. -Check out our `home page `_ for more information. +Check out our `home page `_ for more information. -.. image:: doc/_static/readme_preview.png +.. image:: https://matplotlib.org/_static/readme_preview.png Matplotlib produces publication-quality figures in a variety of hardcopy formats and interactive environments across platforms. Matplotlib can be used in Python scripts, @@ -48,7 +47,7 @@ Install ======= For installation instructions and requirements, see `INSTALL.rst `_ or the -`install `_ documentation. +`install `_ documentation. Test ==== @@ -67,7 +66,7 @@ You've worked out a way to fix it – even better! You want to tell us about it – best of all! -Start at the `contributing guide `_! +Start at the `contributing guide `_! Contact ======= diff --git a/setup.py b/setup.py index e508cc42238d..87b93a970b3a 100644 --- a/setup.py +++ b/setup.py @@ -225,9 +225,9 @@ def run(self): with open('lib/matplotlib/mpl-data/matplotlibrc', 'w') as fd: fd.write(''.join(template_lines)) - # Use Readme as long description - with open('README.rst') as fd: - long_description = fd.read() + # Use Readme as long description + with open('README.rst', encoding='utf-8') as fd: + long_description = fd.read() # Finally, pass this all along to distutils to do the heavy lifting. setup( From 26ab43ed3a807e97708cddeb350930f7092a05e0 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Sun, 8 Dec 2019 16:46:40 +0100 Subject: [PATCH 14/42] Deprecate rcParams["datapath"] in favor of mpl.get_data_path(). The rcParam cannot be meaningfully set by the end user from their matplotlibrc or Python code. (This is a manual backport to 3.2.x.) --- doc/api/matplotlib_configuration_api.rst | 2 ++ .../api_changes_3.2.0/deprecations.rst | 5 +++++ lib/matplotlib/__init__.py | 20 +++++++++---------- lib/matplotlib/cbook/__init__.py | 2 +- matplotlibrc.template | 4 ---- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/doc/api/matplotlib_configuration_api.rst b/doc/api/matplotlib_configuration_api.rst index e497d80b7c12..f786824b4c3c 100644 --- a/doc/api/matplotlib_configuration_api.rst +++ b/doc/api/matplotlib_configuration_api.rst @@ -43,6 +43,8 @@ Default values and styling .. autofunction:: matplotlib_fname +.. autofunction:: get_data_path + Logging ======= diff --git a/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst b/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst index c61c9cca3b03..0af02a5265e6 100644 --- a/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst +++ b/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst @@ -290,3 +290,8 @@ from the public API in future versions. ``style.core.is_style_file`` and ``style.core.iter_style_files`` are deprecated. + +The ``datapath`` rcParam +~~~~~~~~~~~~~~~~~~~~~~~~ +Use `.get_data_path` instead. (The rcParam is deprecated because it cannot be +meaningfully set by an end user.) This was deprecated only in 3.2.1. diff --git a/lib/matplotlib/__init__.py b/lib/matplotlib/__init__.py index c4dba5f29613..021331370981 100644 --- a/lib/matplotlib/__init__.py +++ b/lib/matplotlib/__init__.py @@ -619,8 +619,9 @@ def get_cachedir(): return _get_config_or_cache_dir(_get_xdg_cache_dir()) -def _get_data_path(): - """Return the path to matplotlib data.""" +@_logged_cached('matplotlib data path: %s') +def get_data_path(): + """Return the path to Matplotlib data.""" if 'MATPLOTLIBDATA' in os.environ: path = os.environ['MATPLOTLIBDATA'] @@ -633,6 +634,7 @@ def _get_data_path(): path = Path(__file__).with_name("mpl-data") if path.is_dir(): + defaultParams['datapath'][0] = str(path) return str(path) cbook.warn_deprecated( @@ -655,18 +657,12 @@ def get_candidate_paths(): for path in get_candidate_paths(): if path.is_dir(): + defaultParams['datapath'][0] = str(path) return str(path) raise RuntimeError('Could not find the matplotlib data files') -@_logged_cached('matplotlib data path: %s') -def get_data_path(): - if defaultParams['datapath'][0] is None: - defaultParams['datapath'][0] = _get_data_path() - return defaultParams['datapath'][0] - - @cbook.deprecated("3.1") def get_py2exe_datafiles(): data_path = Path(get_data_path()) @@ -736,6 +732,7 @@ def gen_candidates(): 'savefig.frameon': ('3.1',), 'verbose.fileo': ('3.1',), 'verbose.level': ('3.1',), + 'datapath': ('3.2.1',), } @@ -973,8 +970,9 @@ def rc_params_from_file(fname, fail_on_error=False, use_default_template=True): if key not in _all_deprecated]) config.update(config_from_file) - if config['datapath'] is None: - config['datapath'] = get_data_path() + with cbook._suppress_matplotlib_deprecation_warning(): + if config['datapath'] is None: + config['datapath'] = get_data_path() if "".join(config['text.latex.preamble']): _log.info(""" diff --git a/lib/matplotlib/cbook/__init__.py b/lib/matplotlib/cbook/__init__.py index 1b222f971878..8338982df401 100644 --- a/lib/matplotlib/cbook/__init__.py +++ b/lib/matplotlib/cbook/__init__.py @@ -439,7 +439,7 @@ def get_sample_data(fname, asfileobj=True): If the filename ends in .gz, the file is implicitly ungzipped. """ - path = Path(matplotlib._get_data_path(), 'sample_data', fname) + path = Path(matplotlib.get_data_path(), 'sample_data', fname) if asfileobj: suffix = path.suffix.lower() if suffix == '.gz': diff --git a/matplotlibrc.template b/matplotlibrc.template index 17f12a673ebc..16d9becaae93 100644 --- a/matplotlibrc.template +++ b/matplotlibrc.template @@ -103,10 +103,6 @@ #toolbar : toolbar2 ## {None, toolbar2} #timezone : UTC ## a pytz timezone string, e.g., US/Central or Europe/Paris -## Where your matplotlib data lives if you installed to a non-default -## location. This is where the matplotlib fonts, bitmaps, etc reside -#datapath : /home/jdhunter/mpldata - ## *************************************************************************** ## * LINES * From f13974d514b7751509867614853d0a498a1bd494 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Thu, 12 Mar 2020 09:25:37 -0700 Subject: [PATCH 15/42] Backport PR #16742: nbagg: Don't send events if manager is disconnected. --- lib/matplotlib/backends/backend_webagg_core.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/backends/backend_webagg_core.py b/lib/matplotlib/backends/backend_webagg_core.py index c000e537e136..d71766aea6cb 100644 --- a/lib/matplotlib/backends/backend_webagg_core.py +++ b/lib/matplotlib/backends/backend_webagg_core.py @@ -343,7 +343,8 @@ def handle_set_dpi_ratio(self, event): self.draw_idle() def send_event(self, event_type, **kwargs): - self.manager._send_event(event_type, **kwargs) + if self.manager: + self.manager._send_event(event_type, **kwargs) _JQUERY_ICON_CLASSES = { From 16c12fba90290161f163b05efaf2fe90518c6d23 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 12 Mar 2020 17:41:23 -0400 Subject: [PATCH 16/42] ci: Disallow pytest 5.4.0, which is crashing. --- requirements/testing/travis_all.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/testing/travis_all.txt b/requirements/testing/travis_all.txt index 7bf8db0dccf8..060c19517c7b 100644 --- a/requirements/testing/travis_all.txt +++ b/requirements/testing/travis_all.txt @@ -5,7 +5,7 @@ cycler numpy pillow pyparsing -pytest!=4.6.0,!=5.3.3 +pytest!=4.6.0,!=5.3.3,!=5.4.0 pytest-cov pytest-rerunfailures pytest-timeout From f456138850a9e4c092cad46df7c0fb5586cf48d1 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 13 Mar 2020 15:44:39 -0400 Subject: [PATCH 17/42] Backport PR #16735: Make test_stem less flaky. --- lib/matplotlib/tests/test_axes.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index 5edb4f24b44f..93548b2791ca 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -3227,10 +3227,15 @@ def test_hist_stacked_weighted(): ax.hist((d1, d2), weights=(w1, w2), histtype="stepfilled", stacked=True) -@pytest.mark.parametrize("use_line_collection", [True, False], - ids=['w/ line collection', 'w/o line collection']) -@image_comparison(['stem.png'], style='mpl20', remove_text=True) -def test_stem(use_line_collection): +@image_comparison(['stem.png', 'stem.png'], style='mpl20', remove_text=True) +def test_stem(): + # Note, we don't use @pytest.mark.parametrize, because in parallel this + # might cause one process result to overwrite another's. + for use_line_collection in [True, False]: + _test_stem(use_line_collection) + + +def _test_stem(use_line_collection): x = np.linspace(0.1, 2 * np.pi, 100) args = (x, np.cos(x)) # Label is a single space to force a legend to be drawn, but to avoid any From 7c13faebff06bc5e206c1d4bc30e21204aad93a8 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Fri, 13 Mar 2020 13:02:07 -0700 Subject: [PATCH 18/42] Backport PR #16745: Allow numbers to set uvc for all arrows in quiver.set_UVC, fixes #16743 --- lib/matplotlib/quiver.py | 2 +- lib/matplotlib/tests/test_quiver.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/quiver.py b/lib/matplotlib/quiver.py index 1d24072fc3ef..29dad2ad91fb 100644 --- a/lib/matplotlib/quiver.py +++ b/lib/matplotlib/quiver.py @@ -600,7 +600,7 @@ def set_UVC(self, U, V, C=None): if C is not None: C = ma.masked_invalid(C, copy=True).ravel() for name, var in zip(('U', 'V', 'C'), (U, V, C)): - if var is not None and var.size != self.N: + if not (var is None or var.size == self.N or var.size == 1): raise ValueError(f'Argument {name} has a size {var.size}' f' which does not match {self.N},' ' the number of arrow positions') diff --git a/lib/matplotlib/tests/test_quiver.py b/lib/matplotlib/tests/test_quiver.py index 68031bff2754..719c8fbc15b8 100644 --- a/lib/matplotlib/tests/test_quiver.py +++ b/lib/matplotlib/tests/test_quiver.py @@ -252,3 +252,15 @@ def test_quiverkey_angles(): # The arrows are only created when the key is drawn fig.canvas.draw() assert len(qk.verts) == 1 + + +def test_quiver_setuvc_numbers(): + """Check that it is possible to set all arrow UVC to the same numbers""" + + fig, ax = plt.subplots() + + X, Y = np.meshgrid(np.arange(2), np.arange(2)) + U = V = np.ones_like(X) + + q = ax.quiver(X, Y, U, V) + q.set_UVC(0, 1) From 6882b72b8a77f9825a89d107b32ad6e422cd61b2 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 13 Mar 2020 17:59:51 -0400 Subject: [PATCH 19/42] Backport PR #16648: Document filling of Poly3DCollection --- lib/mpl_toolkits/mplot3d/art3d.py | 34 +++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/lib/mpl_toolkits/mplot3d/art3d.py b/lib/mpl_toolkits/mplot3d/art3d.py index 8538b7d6f5da..42a8336b5b6b 100644 --- a/lib/mpl_toolkits/mplot3d/art3d.py +++ b/lib/mpl_toolkits/mplot3d/art3d.py @@ -580,17 +580,39 @@ def patch_collection_2d_to_3d(col, zs=0, zdir='z', depthshade=True): class Poly3DCollection(PolyCollection): """ A collection of 3D polygons. + + .. note:: + **Filling of 3D polygons** + + There is no simple definition of the enclosed surface of a 3D polygon + unless the polygon is planar. + + In practice, Matplotlib performs the filling on the 2D projection of + the polygon. This gives a correct filling appearance only for planar + polygons. For all other polygons, you'll find orientations in which + the edges of the polygon intersect in the projection. This will lead + to an incorrect visualization of the 3D area. + + If you need filled areas, it is recommended to create them via + `~mpl_toolkits.mplot3d.axes3d.Axes3D.plot_trisurf`, which creates a + triangulation and thus generates consistent surfaces. """ def __init__(self, verts, *args, zsort='average', **kwargs): """ - Create a Poly3DCollection. - - *verts* should contain 3D coordinates. - - Keyword arguments: - zsort, see set_zsort for options. + Parameters + ---------- + verts : list of array-like Nx3 + Each element describes a polygon as a sequnce of ``N_i`` points + ``(x, y, z)``. + zsort : {'average', 'min', 'max'}, default: 'average' + The calculation method for the z-order. + See `~.Poly3DCollection.set_zsort` for details. + *args, **kwargs + All other parameters are forwarded to `.PolyCollection`. + Notes + ----- Note that this class does a bit of magic with the _facecolors and _edgecolors properties. """ From 8ce2dc272989c08f8fb4e2ddf9fa806c49ec0743 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Fri, 6 Mar 2020 10:29:54 +0100 Subject: [PATCH 20/42] Backport PR #16672: Update CircleCI and add direct artifact link --- .circleci/config.yml | 9 +-------- .github/workflows/circleci.yml | 12 ++++++++++++ 2 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/circleci.yml diff --git a/.circleci/config.yml b/.circleci/config.yml index 5b2fc3cdd761..888978675fff 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,7 +1,7 @@ # Circle CI configuration file # https://circleci.com/docs/ -version: 2 +version: 2.1 ########################################### @@ -115,10 +115,6 @@ jobs: - store_artifacts: path: doc/build/html - - run: - name: "Built documentation is available at:" - command: echo "${CIRCLE_BUILD_URL}/artifacts/${CIRCLE_NODE_INDEX}/${CIRCLE_WORKING_DIRECTORY/#\~/$HOME}/doc/build/html/index.html" - docs-python37: docker: - image: circleci/python:3.7 @@ -141,9 +137,6 @@ jobs: - store_artifacts: path: doc/build/html - - run: - name: "Built documentation is available at:" - command: echo "${CIRCLE_BUILD_URL}/artifacts/${CIRCLE_NODE_INDEX}/${CIRCLE_WORKING_DIRECTORY/#\~/$HOME}/doc/build/html/index.html" - add_ssh_keys: fingerprints: diff --git a/.github/workflows/circleci.yml b/.github/workflows/circleci.yml new file mode 100644 index 000000000000..4bee5580800f --- /dev/null +++ b/.github/workflows/circleci.yml @@ -0,0 +1,12 @@ +on: [status] +jobs: + circleci_artifacts_redirector_job: + runs-on: ubuntu-latest + name: Run CircleCI artifacts redirector + steps: + - name: GitHub Action step + uses: larsoner/circleci-artifacts-redirector-action@master + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + artifact-path: 0/doc/build/html/index.html + circleci-jobs: docs-python36,docs-python37 From 3e0fc53521af493fad03c6365e99bad3adff425a Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 13 Mar 2020 20:35:30 -0400 Subject: [PATCH 21/42] Backport PR #16736: xpdf: Set AutoRotatePages to None, not false. --- lib/matplotlib/backends/backend_ps.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/backends/backend_ps.py b/lib/matplotlib/backends/backend_ps.py index 0eee04f07cf6..bcc015be516d 100644 --- a/lib/matplotlib/backends/backend_ps.py +++ b/lib/matplotlib/backends/backend_ps.py @@ -1321,7 +1321,7 @@ def xpdf_distill(tmpfile, eps=False, ptype='letter', bbox=None, rotated=False): ["ps2pdf", "-dAutoFilterColorImages#false", "-dAutoFilterGrayImages#false", - "-dAutoRotatePages#false", + "-sAutoRotatePages#None", "-sGrayImageFilter#FlateEncode", "-sColorImageFilter#FlateEncode", "-dEPSCrop" if eps else "-sPAPERSIZE#%s" % ptype, From a9b8b6e21d6ef1513bb977330892c847a7adc74c Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Fri, 13 Mar 2020 20:40:21 -0400 Subject: [PATCH 22/42] Backport PR #16734: Disable draw_foo methods on renderer used to estimate tight extents. --- lib/matplotlib/backend_bases.py | 20 ++++++++++++++++---- lib/matplotlib/tests/test_backend_pgf.py | 8 ++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index 0c85673b2b10..09dc3d6e8c42 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -1516,10 +1516,15 @@ def __init__(self, name, canvas, key, x=0, y=0, guiEvent=None): self.key = key -def _get_renderer(figure, print_method): +def _get_renderer(figure, print_method, *, draw_disabled=False): """ Get the renderer that would be used to save a `~.Figure`, and cache it on the figure. + + If *draw_disabled* is True, additionally replace draw_foo methods on + *renderer* by no-ops. This is used by the tight-bbox-saving renderer, + which needs to walk through the artist tree to compute the tight-bbox, but + for which the output file may be closed early. """ # This is implemented by triggering a draw, then immediately jumping out of # Figure.draw() by raising an exception. @@ -1533,8 +1538,14 @@ def _draw(renderer): raise Done(renderer) try: print_method(io.BytesIO()) except Done as exc: - figure._cachedRenderer, = exc.args - return figure._cachedRenderer + renderer, = figure._cachedRenderer, = exc.args + + if draw_disabled: + for meth_name in dir(RendererBase): + if meth_name.startswith("draw_"): + setattr(renderer, meth_name, lambda *args, **kwargs: None) + + return renderer def _is_non_interactive_terminal_ipython(ip): @@ -2063,7 +2074,8 @@ def print_figure(self, filename, dpi=None, facecolor=None, edgecolor=None, renderer = _get_renderer( self.figure, functools.partial( - print_method, dpi=dpi, orientation=orientation)) + print_method, dpi=dpi, orientation=orientation), + draw_disabled=True) self.figure.draw(renderer) bbox_artists = kwargs.pop("bbox_extra_artists", None) bbox_inches = self.figure.get_tightbbox(renderer, diff --git a/lib/matplotlib/tests/test_backend_pgf.py b/lib/matplotlib/tests/test_backend_pgf.py index 269606c7feca..7843b4101041 100644 --- a/lib/matplotlib/tests/test_backend_pgf.py +++ b/lib/matplotlib/tests/test_backend_pgf.py @@ -282,3 +282,11 @@ def test_tex_restart_after_error(): fig = plt.figure() # start from scratch fig.suptitle(r"this is ok") fig.savefig(BytesIO(), format="pgf") + + +@needs_xelatex +def test_bbox_inches_tight(tmpdir): + fig, ax = plt.subplots() + ax.imshow([[0, 1], [2, 3]]) + fig.savefig(os.path.join(tmpdir, "test.pdf"), backend="pgf", + bbox_inches="tight") From 6975ba8186e8e27ee4e70a55889b89b50ff6d2d0 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 13 Mar 2020 20:58:02 -0400 Subject: [PATCH 23/42] Backport PR #15685: Avoid a RuntimeError at animation shutdown with PySide2. --- lib/matplotlib/backends/backend_qt5.py | 9 ++++++++- lib/matplotlib/backends/qt_compat.py | 14 ++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/backends/backend_qt5.py b/lib/matplotlib/backends/backend_qt5.py index b2bd2d564a39..f3dcf1c513a8 100644 --- a/lib/matplotlib/backends/backend_qt5.py +++ b/lib/matplotlib/backends/backend_qt5.py @@ -17,7 +17,8 @@ from matplotlib.backend_managers import ToolManager from .qt_compat import ( - QtCore, QtGui, QtWidgets, _getSaveFileName, is_pyqt5, __version__, QT_API) + QtCore, QtGui, QtWidgets, _isdeleted, _getSaveFileName, + is_pyqt5, __version__, QT_API) backend_version = __version__ @@ -200,6 +201,12 @@ def __init__(self, *args, **kwargs): self._timer.timeout.connect(self._on_timer) self._timer_set_interval() + def __del__(self): + # The check for deletedness is needed to avoid an error at animation + # shutdown with PySide2. + if not _isdeleted(self._timer): + self._timer_stop() + def _timer_set_single_shot(self): self._timer.setSingleShot(self._single) diff --git a/lib/matplotlib/backends/qt_compat.py b/lib/matplotlib/backends/qt_compat.py index 6b52284fe7f4..b3367ea91010 100644 --- a/lib/matplotlib/backends/qt_compat.py +++ b/lib/matplotlib/backends/qt_compat.py @@ -63,16 +63,21 @@ def _setup_pyqt5(): - global QtCore, QtGui, QtWidgets, __version__, is_pyqt5, _getSaveFileName + global QtCore, QtGui, QtWidgets, __version__, is_pyqt5, \ + _isdeleted, _getSaveFileName if QT_API == QT_API_PYQT5: from PyQt5 import QtCore, QtGui, QtWidgets + import sip __version__ = QtCore.PYQT_VERSION_STR QtCore.Signal = QtCore.pyqtSignal QtCore.Slot = QtCore.pyqtSlot QtCore.Property = QtCore.pyqtProperty + _isdeleted = sip.isdeleted elif QT_API == QT_API_PYSIDE2: from PySide2 import QtCore, QtGui, QtWidgets, __version__ + import shiboken2 + def _isdeleted(obj): return not shiboken2.isValid(obj) else: raise ValueError("Unexpected value for the 'backend.qt5' rcparam") _getSaveFileName = QtWidgets.QFileDialog.getSaveFileName @@ -82,7 +87,8 @@ def is_pyqt5(): def _setup_pyqt4(): - global QtCore, QtGui, QtWidgets, __version__, is_pyqt5, _getSaveFileName + global QtCore, QtGui, QtWidgets, __version__, is_pyqt5, \ + _isdeleted, _getSaveFileName def _setup_pyqt4_internal(api): global QtCore, QtGui, QtWidgets, \ @@ -102,6 +108,7 @@ def _setup_pyqt4_internal(api): except ValueError: pass from PyQt4 import QtCore, QtGui + import sip # Always succeeds *after* importing PyQt4. __version__ = QtCore.PYQT_VERSION_STR # PyQt 4.6 introduced getSaveFileNameAndFilter: # https://riverbankcomputing.com/news/pyqt-46 @@ -110,16 +117,19 @@ def _setup_pyqt4_internal(api): QtCore.Signal = QtCore.pyqtSignal QtCore.Slot = QtCore.pyqtSlot QtCore.Property = QtCore.pyqtProperty + _isdeleted = sip.isdeleted _getSaveFileName = QtGui.QFileDialog.getSaveFileNameAndFilter if QT_API == QT_API_PYQTv2: _setup_pyqt4_internal(api=2) elif QT_API == QT_API_PYSIDE: from PySide import QtCore, QtGui, __version__, __version_info__ + import shiboken # PySide 1.0.3 fixed the following: # https://srinikom.github.io/pyside-bz-archive/809.html if __version_info__ < (1, 0, 3): raise ImportError("PySide<1.0.3 is not supported") + def _isdeleted(obj): return not shiboken.isValid(obj) _getSaveFileName = QtGui.QFileDialog.getSaveFileName elif QT_API == QT_API_PYQT: _setup_pyqt4_internal(api=1) From 1aeacba068a1276a822a71db3cec743fe16d345e Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Fri, 13 Mar 2020 21:50:16 -0400 Subject: [PATCH 24/42] Backport PR #16725: TST/CI: also try to run test_user_fonts_win32 on azure --- lib/matplotlib/tests/test_font_manager.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/matplotlib/tests/test_font_manager.py b/lib/matplotlib/tests/test_font_manager.py index f94fabd3764f..a2ff9893d78b 100644 --- a/lib/matplotlib/tests/test_font_manager.py +++ b/lib/matplotlib/tests/test_font_manager.py @@ -160,10 +160,11 @@ def test_user_fonts_linux(tmpdir, monkeypatch): @pytest.mark.skipif(sys.platform != 'win32', reason='Windows only') def test_user_fonts_win32(): - if not os.environ.get('APPVEYOR', False): - pytest.xfail("This test does only work on appveyor since user fonts " - "are Windows specific and the developer's font directory " - "should remain unchanged.") + if not (os.environ.get('APPVEYOR', False) or + os.environ.get('TF_BUILD', False)): + pytest.xfail("This test should only run on CI (appveyor or azure) " + "as the developer's font directory should remain " + "unchanged.") font_test_file = 'mpltest.ttf' From 46d3f65f2405b6ad593fd09e7cb52aac200c17ee Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Mon, 16 Mar 2020 16:57:48 +0100 Subject: [PATCH 25/42] Backport PR #16784: Update CircleCI URL for downloading humor-sans.ttf. --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5b2fc3cdd761..ae82464f7bbf 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -39,9 +39,9 @@ fonts-run: &fonts-install mkdir -p ~/.local/share/fonts wget -nc https://github.com/google/fonts/blob/master/ofl/felipa/Felipa-Regular.ttf?raw=true -O ~/.local/share/fonts/Felipa-Regular.ttf || true if [ ! -f ~/.local/share/fonts/Humor-Sans.ttf ]; then - wget https://mirrors.kernel.org/ubuntu/pool/universe/f/fonts-humor-sans/fonts-humor-sans_1.0-1_all.deb + wget http://http.us.debian.org/debian/pool/main/f/fonts-humor-sans/fonts-humor-sans_1.0-3_all.deb mkdir tmp - dpkg -x fonts-humor-sans_1.0-1_all.deb tmp + dpkg -x fonts-humor-sans_1.0-3_all.deb tmp cp tmp/usr/share/fonts/truetype/humor-sans/Humor-Sans.ttf ~/.local/share/fonts rm -rf tmp else From dc81103dec1cf80610011706753ba577092b99c9 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Mon, 16 Mar 2020 13:33:20 -0400 Subject: [PATCH 26/42] Backport PR #16770: Fix tuple markers --- lib/matplotlib/markers.py | 1 + lib/matplotlib/tests/test_marker.py | 107 ++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) diff --git a/lib/matplotlib/markers.py b/lib/matplotlib/markers.py index 3a8d0bc7a9ea..0695fdfe2e04 100644 --- a/lib/matplotlib/markers.py +++ b/lib/matplotlib/markers.py @@ -347,6 +347,7 @@ def _set_tuple_marker(self): self._joinstyle = 'bevel' else: raise ValueError(f"Unexpected tuple marker: {marker}") + self._transform = Affine2D().scale(0.5).rotate_deg(rotation) def _set_mathtext_path(self): """ diff --git a/lib/matplotlib/tests/test_marker.py b/lib/matplotlib/tests/test_marker.py index 1ef9c18c47fb..e50746165792 100644 --- a/lib/matplotlib/tests/test_marker.py +++ b/lib/matplotlib/tests/test_marker.py @@ -1,6 +1,8 @@ import numpy as np +import matplotlib.pyplot as plt from matplotlib import markers from matplotlib.path import Path +from matplotlib.testing.decorators import check_figures_equal import pytest @@ -26,3 +28,108 @@ def test_marker_path(): path = Path([[0, 0], [1, 0]], [Path.MOVETO, Path.LINETO]) # Checking this doesn't fail. marker_style.set_marker(path) + + +class UnsnappedMarkerStyle(markers.MarkerStyle): + """ + A MarkerStyle where the snap threshold is force-disabled. + + This is used to compare to polygon/star/asterisk markers which do not have + any snap threshold set. + """ + def _recache(self): + super()._recache() + self._snap_threshold = None + + +@check_figures_equal() +def test_poly_marker(fig_test, fig_ref): + ax_test = fig_test.add_subplot() + ax_ref = fig_ref.add_subplot() + + # Note, some reference sizes must be different because they have unit + # *length*, while polygon markers are inscribed in a circle of unit + # *radius*. This introduces a factor of np.sqrt(2), but since size is + # squared, that becomes 2. + size = 20**2 + + # Squares + ax_test.scatter([0], [0], marker=(4, 0, 45), s=size) + ax_ref.scatter([0], [0], marker='s', s=size/2) + + # Diamonds, with and without rotation argument + ax_test.scatter([1], [1], marker=(4, 0), s=size) + ax_ref.scatter([1], [1], marker=UnsnappedMarkerStyle('D'), s=size/2) + ax_test.scatter([1], [1.5], marker=(4, 0, 0), s=size) + ax_ref.scatter([1], [1.5], marker=UnsnappedMarkerStyle('D'), s=size/2) + + # Pentagon, with and without rotation argument + ax_test.scatter([2], [2], marker=(5, 0), s=size) + ax_ref.scatter([2], [2], marker=UnsnappedMarkerStyle('p'), s=size) + ax_test.scatter([2], [2.5], marker=(5, 0, 0), s=size) + ax_ref.scatter([2], [2.5], marker=UnsnappedMarkerStyle('p'), s=size) + + # Hexagon, with and without rotation argument + ax_test.scatter([3], [3], marker=(6, 0), s=size) + ax_ref.scatter([3], [3], marker='h', s=size) + ax_test.scatter([3], [3.5], marker=(6, 0, 0), s=size) + ax_ref.scatter([3], [3.5], marker='h', s=size) + + # Rotated hexagon + ax_test.scatter([4], [4], marker=(6, 0, 30), s=size) + ax_ref.scatter([4], [4], marker='H', s=size) + + # Octagons + ax_test.scatter([5], [5], marker=(8, 0, 22.5), s=size) + ax_ref.scatter([5], [5], marker=UnsnappedMarkerStyle('8'), s=size) + + ax_test.set(xlim=(-0.5, 5.5), ylim=(-0.5, 5.5)) + ax_ref.set(xlim=(-0.5, 5.5), ylim=(-0.5, 5.5)) + + +def test_star_marker(): + # We don't really have a strict equivalent to this marker, so we'll just do + # a smoke test. + size = 20**2 + + fig, ax = plt.subplots() + ax.scatter([0], [0], marker=(5, 1), s=size) + ax.scatter([1], [1], marker=(5, 1, 0), s=size) + ax.set(xlim=(-0.5, 0.5), ylim=(-0.5, 1.5)) + + +# The asterisk marker is really a star with 0-size inner circle, so the ends +# are corners and get a slight bevel. The reference markers are just singular +# lines without corners, so they have no bevel, and we need to add a slight +# tolerance. +@check_figures_equal(tol=1.45) +def test_asterisk_marker(fig_test, fig_ref, request): + ax_test = fig_test.add_subplot() + ax_ref = fig_ref.add_subplot() + + # Note, some reference sizes must be different because they have unit + # *length*, while asterisk markers are inscribed in a circle of unit + # *radius*. This introduces a factor of np.sqrt(2), but since size is + # squared, that becomes 2. + size = 20**2 + + def draw_ref_marker(y, style, size): + # As noted above, every line is doubled. Due to antialiasing, these + # doubled lines make a slight difference in the .png results. + ax_ref.scatter([y], [y], marker=UnsnappedMarkerStyle(style), s=size) + if request.getfixturevalue('ext') == 'png': + ax_ref.scatter([y], [y], marker=UnsnappedMarkerStyle(style), + s=size) + + # Plus + ax_test.scatter([0], [0], marker=(4, 2), s=size) + draw_ref_marker(0, '+', size) + ax_test.scatter([0.5], [0.5], marker=(4, 2, 0), s=size) + draw_ref_marker(0.5, '+', size) + + # Cross + ax_test.scatter([1], [1], marker=(4, 2, 45), s=size) + draw_ref_marker(1, 'x', size/2) + + ax_test.set(xlim=(-0.5, 1.5), ylim=(-0.5, 1.5)) + ax_ref.set(xlim=(-0.5, 1.5), ylim=(-0.5, 1.5)) From b3ae232c84300c53add5d29f4dd080d88e803df8 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Fri, 4 Oct 2019 11:48:01 +0200 Subject: [PATCH 27/42] Backport PR #15199: MNT/TST: generalize check_figures_equal to work with pytest.marks --- lib/matplotlib/testing/decorators.py | 59 ++++++++++++++-------------- lib/matplotlib/tests/test_testing.py | 14 ++++++- 2 files changed, 41 insertions(+), 32 deletions(-) diff --git a/lib/matplotlib/testing/decorators.py b/lib/matplotlib/testing/decorators.py index 7965d45e4f16..7e9621cb3b1d 100644 --- a/lib/matplotlib/testing/decorators.py +++ b/lib/matplotlib/testing/decorators.py @@ -381,41 +381,40 @@ def test_plot(fig_test, fig_ref): fig_test.subplots().plot([1, 3, 5]) fig_ref.subplots().plot([0, 1, 2], [1, 3, 5]) """ - + POSITIONAL_OR_KEYWORD = inspect.Parameter.POSITIONAL_OR_KEYWORD def decorator(func): import pytest _, result_dir = _image_directories(func) - if len(inspect.signature(func).parameters) == 2: - # Free-standing function. - @pytest.mark.parametrize("ext", extensions) - def wrapper(ext): - fig_test = plt.figure("test") - fig_ref = plt.figure("reference") - func(fig_test, fig_ref) - test_image_path = result_dir / (func.__name__ + "." + ext) - ref_image_path = ( - result_dir / (func.__name__ + "-expected." + ext)) - fig_test.savefig(test_image_path) - fig_ref.savefig(ref_image_path) - _raise_on_image_difference( - ref_image_path, test_image_path, tol=tol) - - elif len(inspect.signature(func).parameters) == 3: - # Method. - @pytest.mark.parametrize("ext", extensions) - def wrapper(self, ext): - fig_test = plt.figure("test") - fig_ref = plt.figure("reference") - func(self, fig_test, fig_ref) - test_image_path = result_dir / (func.__name__ + "." + ext) - ref_image_path = ( - result_dir / (func.__name__ + "-expected." + ext)) - fig_test.savefig(test_image_path) - fig_ref.savefig(ref_image_path) - _raise_on_image_difference( - ref_image_path, test_image_path, tol=tol) + @pytest.mark.parametrize("ext", extensions) + def wrapper(*args, ext, **kwargs): + fig_test = plt.figure("test") + fig_ref = plt.figure("reference") + func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs) + test_image_path = result_dir / (func.__name__ + "." + ext) + ref_image_path = result_dir / ( + func.__name__ + "-expected." + ext + ) + fig_test.savefig(test_image_path) + fig_ref.savefig(ref_image_path) + _raise_on_image_difference( + ref_image_path, test_image_path, tol=tol + ) + + sig = inspect.signature(func) + new_sig = sig.replace( + parameters=([param + for param in sig.parameters.values() + if param.name not in {"fig_test", "fig_ref"}] + + [inspect.Parameter("ext", POSITIONAL_OR_KEYWORD)]) + ) + wrapper.__signature__ = new_sig + + # reach a bit into pytest internals to hoist the marks from + # our wrapped function + new_marks = getattr(func, "pytestmark", []) + wrapper.pytestmark + wrapper.pytestmark = new_marks return wrapper diff --git a/lib/matplotlib/tests/test_testing.py b/lib/matplotlib/tests/test_testing.py index 55415abb6a04..d1273ec1ba46 100644 --- a/lib/matplotlib/tests/test_testing.py +++ b/lib/matplotlib/tests/test_testing.py @@ -1,7 +1,17 @@ import warnings import pytest +from matplotlib.testing.decorators import check_figures_equal -@pytest.mark.xfail(strict=True, - reason="testing that warnings fail tests") + +@pytest.mark.xfail( + strict=True, reason="testing that warnings fail tests" +) def test_warn_to_fail(): warnings.warn("This should fail the test") + + +@pytest.mark.parametrize("a", [1]) +@check_figures_equal(extensions=["png"]) +@pytest.mark.parametrize("b", [1]) +def test_parametrize_with_check_figure_equal(a, fig_ref, b, fig_test): + assert a == b From ecd95c49a38b3735d1cc193824670c755e2cff3e Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Fri, 13 Mar 2020 17:52:06 -0400 Subject: [PATCH 28/42] MNT: re-instate respecting datapath in matplotlibrc file Closes #16678 This does a bit of jiggery-pokery to respect the datapath set in the users matplotlibrc. This is going to have an expedited deprecation cycle as we don't think end-users should be setting this rcparam. --- lib/matplotlib/__init__.py | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/lib/matplotlib/__init__.py b/lib/matplotlib/__init__.py index 021331370981..fa1caecda148 100644 --- a/lib/matplotlib/__init__.py +++ b/lib/matplotlib/__init__.py @@ -132,6 +132,7 @@ import shutil import subprocess import tempfile +import warnings # cbook must import matplotlib only within function # definitions, so it is safe to import from it here. @@ -269,10 +270,10 @@ def func(): ... ret = None @functools.wraps(func) - def wrapper(): + def wrapper(**kwargs): nonlocal called, ret if not called: - ret = func() + ret = func(**kwargs) called = True _log.debug(fmt, ret) return ret @@ -620,9 +621,30 @@ def get_cachedir(): @_logged_cached('matplotlib data path: %s') -def get_data_path(): +def get_data_path(*, _from_rc=None): """Return the path to Matplotlib data.""" + if _from_rc is not None: + cbook.warn_deprecated( + "3.2", + message=("Setting the datapath via matplotlibrc is " + "deprecated %(since)s and will be removed in %(removal)s. " + ""), + removal='3.3') + path = Path(_from_rc) + if path.is_dir(): + defaultParams['datapath'][0] = str(path) + return str(path) + else: + warnings.warn(f"You passed datapath: {_from_rc!r} in your " + f"matplotribrc file ({matplotlib_fname()}). " + "However this path does not exist, falling back " + "to standard paths.") + + return _get_data_path() + +@_logged_cached('(private) matplotlib data path: %s') +def _get_data_path(): if 'MATPLOTLIBDATA' in os.environ: path = os.environ['MATPLOTLIBDATA'] if not os.path.isdir(path): @@ -704,7 +726,7 @@ def gen_candidates(): yield matplotlibrc yield os.path.join(matplotlibrc, 'matplotlibrc') yield os.path.join(get_configdir(), 'matplotlibrc') - yield os.path.join(get_data_path(), 'matplotlibrc') + yield os.path.join(_get_data_path(), 'matplotlibrc') for fname in gen_candidates(): if os.path.exists(fname) and not os.path.isdir(fname): @@ -972,7 +994,9 @@ def rc_params_from_file(fname, fail_on_error=False, use_default_template=True): with cbook._suppress_matplotlib_deprecation_warning(): if config['datapath'] is None: - config['datapath'] = get_data_path() + config['datapath'] = _get_data_path() + else: + config['datapath'] = get_data_path(_from_rc=config['datapath']) if "".join(config['text.latex.preamble']): _log.info(""" From c4ac8d11dee49501750aa73b8bbd6fa0b8743585 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Mon, 16 Mar 2020 18:31:19 -0400 Subject: [PATCH 29/42] DOC: extend deprecation docs a bit --- doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst b/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst index 0af02a5265e6..d1b98eb9c782 100644 --- a/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst +++ b/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst @@ -294,4 +294,6 @@ are deprecated. The ``datapath`` rcParam ~~~~~~~~~~~~~~~~~~~~~~~~ Use `.get_data_path` instead. (The rcParam is deprecated because it cannot be -meaningfully set by an end user.) This was deprecated only in 3.2.1. +meaningfully set by an end user.) The rcParam had no effect from 3.2.0, but +was deprecated only in 3.2.1. In 3.2.1+ if ``'datapath'`` is set in a +``matplotlibrc`` file it will be respected, but this behavior well be removed in 3.3. From 9211537b2f8ea0bcf66ab30e872a59e3a39c738e Mon Sep 17 00:00:00 2001 From: MarcoGorelli Date: Sat, 2 Nov 2019 11:09:58 +0000 Subject: [PATCH 30/42] Make sure that figures are closed when check_figures_equal finishes --- lib/matplotlib/testing/decorators.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/lib/matplotlib/testing/decorators.py b/lib/matplotlib/testing/decorators.py index 7e9621cb3b1d..c258574dca11 100644 --- a/lib/matplotlib/testing/decorators.py +++ b/lib/matplotlib/testing/decorators.py @@ -389,18 +389,22 @@ def decorator(func): @pytest.mark.parametrize("ext", extensions) def wrapper(*args, ext, **kwargs): - fig_test = plt.figure("test") - fig_ref = plt.figure("reference") - func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs) - test_image_path = result_dir / (func.__name__ + "." + ext) - ref_image_path = result_dir / ( - func.__name__ + "-expected." + ext - ) - fig_test.savefig(test_image_path) - fig_ref.savefig(ref_image_path) - _raise_on_image_difference( - ref_image_path, test_image_path, tol=tol - ) + try: + fig_test = plt.figure("test") + fig_ref = plt.figure("reference") + func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs) + test_image_path = result_dir / (func.__name__ + "." + ext) + ref_image_path = result_dir / ( + func.__name__ + "-expected." + ext + ) + fig_test.savefig(test_image_path) + fig_ref.savefig(ref_image_path) + _raise_on_image_difference( + ref_image_path, test_image_path, tol=tol + ) + finally: + plt.close(fig_test) + plt.close(fig_ref) sig = inspect.signature(func) new_sig = sig.replace( From 3d9b7dc0d529a440b6dc93455d55c4a92a95ce33 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 16 Mar 2020 18:43:19 -0400 Subject: [PATCH 31/42] Merge pull request #16693 from tacaswell/tst_better_compare_names TST: use pytest name in naming files for check_figures_equal --- lib/matplotlib/testing/decorators.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/matplotlib/testing/decorators.py b/lib/matplotlib/testing/decorators.py index c258574dca11..0a9e21bebcd9 100644 --- a/lib/matplotlib/testing/decorators.py +++ b/lib/matplotlib/testing/decorators.py @@ -5,6 +5,7 @@ import os from pathlib import Path import shutil +import string import sys import unittest import warnings @@ -17,7 +18,7 @@ from matplotlib import ft2font from matplotlib import pyplot as plt from matplotlib import ticker -from . import is_called_from_pytest + from .compare import comparable_formats, compare_images, make_test_filename from .exceptions import ImageComparisonFailure @@ -381,22 +382,23 @@ def test_plot(fig_test, fig_ref): fig_test.subplots().plot([1, 3, 5]) fig_ref.subplots().plot([0, 1, 2], [1, 3, 5]) """ - POSITIONAL_OR_KEYWORD = inspect.Parameter.POSITIONAL_OR_KEYWORD + ALLOWED_CHARS = set(string.digits + string.ascii_letters + '_-[]()') + KEYWORD_ONLY = inspect.Parameter.KEYWORD_ONLY def decorator(func): import pytest _, result_dir = _image_directories(func) @pytest.mark.parametrize("ext", extensions) - def wrapper(*args, ext, **kwargs): + def wrapper(*args, ext, request, **kwargs): + file_name = "".join(c for c in request.node.name + if c in ALLOWED_CHARS) try: fig_test = plt.figure("test") fig_ref = plt.figure("reference") func(*args, fig_test=fig_test, fig_ref=fig_ref, **kwargs) - test_image_path = result_dir / (func.__name__ + "." + ext) - ref_image_path = result_dir / ( - func.__name__ + "-expected." + ext - ) + test_image_path = result_dir / (file_name + "." + ext) + ref_image_path = result_dir / (file_name + "-expected." + ext) fig_test.savefig(test_image_path) fig_ref.savefig(ref_image_path) _raise_on_image_difference( @@ -411,7 +413,10 @@ def wrapper(*args, ext, **kwargs): parameters=([param for param in sig.parameters.values() if param.name not in {"fig_test", "fig_ref"}] - + [inspect.Parameter("ext", POSITIONAL_OR_KEYWORD)]) + + [ + inspect.Parameter("ext", KEYWORD_ONLY), + inspect.Parameter("request", KEYWORD_ONLY), + ]) ) wrapper.__signature__ = new_sig From 7a8a6f7dc568251f79e0482375993201715d36a5 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Mon, 16 Mar 2020 19:45:56 -0400 Subject: [PATCH 32/42] Update doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst Co-Authored-By: Elliott Sales de Andrade --- doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst b/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst index d1b98eb9c782..0003a0643158 100644 --- a/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst +++ b/doc/api/prev_api_changes/api_changes_3.2.0/deprecations.rst @@ -296,4 +296,4 @@ The ``datapath`` rcParam Use `.get_data_path` instead. (The rcParam is deprecated because it cannot be meaningfully set by an end user.) The rcParam had no effect from 3.2.0, but was deprecated only in 3.2.1. In 3.2.1+ if ``'datapath'`` is set in a -``matplotlibrc`` file it will be respected, but this behavior well be removed in 3.3. +``matplotlibrc`` file it will be respected, but this behavior will be removed in 3.3. From 42a768acce369a724b5812adb467ac1f6becab91 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 16 Mar 2020 20:19:47 -0400 Subject: [PATCH 33/42] Backport PR #16794: DOC: Don't mention drawstyle in `set_linestyle` docs. --- lib/matplotlib/lines.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/matplotlib/lines.py b/lib/matplotlib/lines.py index 892e1e9cac99..1e6641913731 100644 --- a/lib/matplotlib/lines.py +++ b/lib/matplotlib/lines.py @@ -1165,9 +1165,6 @@ def set_linestyle(self, ls): ``'None'`` or ``' '`` or ``''`` draw nothing =============================== ================= - Optionally, the string may be preceded by a drawstyle, e.g. - ``'steps--'``. See :meth:`set_drawstyle` for details. - - Alternatively a dash tuple of the following form can be provided:: From 5d69b1efd3351d40ee387303b995c23b25d5baa7 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 16 Mar 2020 21:44:02 -0400 Subject: [PATCH 34/42] Fix check_figures_equal for tests that use its fixtures. --- lib/matplotlib/testing/decorators.py | 30 ++++++++++++++++++---------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/lib/matplotlib/testing/decorators.py b/lib/matplotlib/testing/decorators.py index 0a9e21bebcd9..7d0941233f80 100644 --- a/lib/matplotlib/testing/decorators.py +++ b/lib/matplotlib/testing/decorators.py @@ -388,9 +388,17 @@ def decorator(func): import pytest _, result_dir = _image_directories(func) + old_sig = inspect.signature(func) @pytest.mark.parametrize("ext", extensions) - def wrapper(*args, ext, request, **kwargs): + def wrapper(*args, **kwargs): + ext = kwargs['ext'] + if 'ext' not in old_sig.parameters: + kwargs.pop('ext') + request = kwargs['request'] + if 'request' not in old_sig.parameters: + kwargs.pop('request') + file_name = "".join(c for c in request.node.name if c in ALLOWED_CHARS) try: @@ -408,16 +416,16 @@ def wrapper(*args, ext, request, **kwargs): plt.close(fig_test) plt.close(fig_ref) - sig = inspect.signature(func) - new_sig = sig.replace( - parameters=([param - for param in sig.parameters.values() - if param.name not in {"fig_test", "fig_ref"}] - + [ - inspect.Parameter("ext", KEYWORD_ONLY), - inspect.Parameter("request", KEYWORD_ONLY), - ]) - ) + parameters = [ + param + for param in old_sig.parameters.values() + if param.name not in {"fig_test", "fig_ref"} + ] + if 'ext' not in old_sig.parameters: + parameters += [inspect.Parameter("ext", KEYWORD_ONLY)] + if 'request' not in old_sig.parameters: + parameters += [inspect.Parameter("request", KEYWORD_ONLY)] + new_sig = old_sig.replace(parameters=parameters) wrapper.__signature__ = new_sig # reach a bit into pytest internals to hoist the marks from From 03e6854423521513ca50d2cafffafb12bfe071c7 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 17 Mar 2020 14:47:24 -0400 Subject: [PATCH 35/42] Backport PR #16803: Fix some doc issues --- examples/scales/log_bar.py | 3 ++- examples/text_labels_and_annotations/text_rotation.py | 5 ++--- tutorials/colors/colormaps.py | 5 ++--- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/examples/scales/log_bar.py b/examples/scales/log_bar.py index 77110b3620b8..bcbdee2a7f98 100644 --- a/examples/scales/log_bar.py +++ b/examples/scales/log_bar.py @@ -20,7 +20,8 @@ y = [d[i] for d in data] b = ax.bar(x + i * dimw, y, dimw, bottom=0.001) -ax.set_xticks(x + dimw / 2, map(str, x)) +ax.set_xticks(x + dimw / 2) +ax.set_xticklabels(map(str, x)) ax.set_yscale('log') ax.set_xlabel('x') diff --git a/examples/text_labels_and_annotations/text_rotation.py b/examples/text_labels_and_annotations/text_rotation.py index cdd678013bf8..a380fc324bed 100644 --- a/examples/text_labels_and_annotations/text_rotation.py +++ b/examples/text_labels_and_annotations/text_rotation.py @@ -30,6 +30,7 @@ def addtext(ax, props): for x in range(0, 5): ax.scatter(x + 0.5, 0.5, color='r', alpha=0.5) ax.set_yticks([0, .5, 1]) + ax.set_xticks(np.arange(0, 5.1, 0.5)) ax.set_xlim(0, 5) ax.grid(True) @@ -37,14 +38,12 @@ def addtext(ax, props): # the text bounding box bbox = {'fc': '0.8', 'pad': 0} -fig, axs = plt.subplots(2, 1) +fig, axs = plt.subplots(2, 1, sharex=True) addtext(axs[0], {'ha': 'center', 'va': 'center', 'bbox': bbox}) -axs[0].set_xticks(np.arange(0, 5.1, 0.5), []) axs[0].set_ylabel('center / center') addtext(axs[1], {'ha': 'left', 'va': 'bottom', 'bbox': bbox}) -axs[1].set_xticks(np.arange(0, 5.1, 0.5)) axs[1].set_ylabel('left / bottom') plt.show() diff --git a/tutorials/colors/colormaps.py b/tutorials/colors/colormaps.py index 3e7cf1141365..d6f763572c6a 100644 --- a/tutorials/colors/colormaps.py +++ b/tutorials/colors/colormaps.py @@ -225,7 +225,7 @@ def plot_color_gradients(cmap_category, cmap_list, nrows): plt.show() ############################################################################### -# Lightness of matplotlib colormaps +# Lightness of Matplotlib colormaps # ================================= # # Here we examine the lightness values of the matplotlib colormaps. @@ -308,10 +308,9 @@ def plot_color_gradients(cmap_category, cmap_list, nrows): formatter = mpl.ticker.FixedFormatter(cmap_list[i*dsub:(i+1)*dsub]) ax.xaxis.set_major_formatter(formatter) ax.xaxis.set_tick_params(rotation=50) + ax.set_ylabel('Lightness $L^*$', fontsize=12) ax.set_xlabel(cmap_category + ' colormaps', fontsize=14) - fig.text(0.0, 0.55, 'Lightness $L^*$', fontsize=12, - transform=fig.transFigure, rotation=90) fig.tight_layout(h_pad=0.0, pad=1.5) plt.show() From 5ef8a1292b12fc0ecd5cd099e16b9396322aaaa6 Mon Sep 17 00:00:00 2001 From: hannah Date: Tue, 17 Mar 2020 16:23:30 -0400 Subject: [PATCH 36/42] Backport PR #16779: Documentation: make instructions for documentation contributions easier to find, add to requirements for building docs --- doc/devel/contributing.rst | 30 +++++++++++++---- doc/devel/documenting_mpl.rst | 62 ++++++++++++++++++++++++----------- 2 files changed, 65 insertions(+), 27 deletions(-) diff --git a/doc/devel/contributing.rst b/doc/devel/contributing.rst index 0f5909d697b9..73d5124c60b9 100644 --- a/doc/devel/contributing.rst +++ b/doc/devel/contributing.rst @@ -174,6 +174,8 @@ environment is set up properly:: Contributing code ================= +.. _how-to-contribute: + How to contribute ----------------- @@ -222,7 +224,7 @@ want to consider sending an email to the mailing list for more visibility. * `Git documentation `_ * `Git-Contributing to a Project `_ * `Introduction to GitHub `_ - * :ref:`development-workflow`. + * :ref:`development-workflow` * :ref:`using-git` Contributing pull requests @@ -316,21 +318,35 @@ This helps the contributor become familiar with the contribution workflow, and for the core devs to become acquainted with the contributor; besides which, we frequently underestimate how easy an issue is to solve! -.. _other_ways_to_contribute: -Other ways to contribute -========================= +.. _contributing_documentation: +Contributing documentation +========================== Code is not the only way to contribute to Matplotlib. For instance, documentation is also a very important part of the project and often doesn't get as much attention as it deserves. If you find a typo in the documentation, or have made improvements, do not hesitate to send an email to the mailing -list or submit a GitHub pull request. Full documentation can be found under -the doc/ directory. +list or submit a GitHub pull request. To make a pull request, refer to the +guidelines outlined in :ref:`how-to-contribute`. + +Full documentation can be found under the :file:`doc/`, :file:`tutorials/`, +and :file:`examples/` directories. + +.. seealso:: + * :ref:`documenting-matplotlib` + + +.. _other_ways_to_contribute: + +Other ways to contribute +========================= It also helps us if you spread the word: reference the project from your blog -and articles or link to it from your website! +and articles or link to it from your website! If Matplotlib contributes to a +project that leads to a scientific publication, please follow the +:doc:`/citing` guidelines. .. _coding_guidelines: diff --git a/doc/devel/documenting_mpl.rst b/doc/devel/documenting_mpl.rst index 2c467b3753b2..57bc871d1d49 100644 --- a/doc/devel/documenting_mpl.rst +++ b/doc/devel/documenting_mpl.rst @@ -18,16 +18,16 @@ Getting started General file structure ---------------------- -All documentation is built from the :file:`doc/` directory. This directory -contains both reStructuredText (ReST_; ``.rst``) files that contain pages in -the documentation and configuration files for Sphinx_. +All documentation is built from the :file:`doc/`, :file:`tutorials/`, and +:file:`examples/` directories. The :file:`doc/` directory contains configuration files for Sphinx +and reStructuredText (ReST_; ``.rst``) files that are rendered to documentation pages. -The ``.rst`` files are kept in :file:`doc/users`, -:file:`doc/devel`, :file:`doc/api` and :file:`doc/faq`. The main entry point is -:file:`doc/index.rst`, which pulls in the :file:`index.rst` file for the users -guide, developers guide, api reference, and FAQs. The documentation suite is -built as a single document in order to make the most effective use of cross -referencing. + +The main entry point is :file:`doc/index.rst`, which pulls in the +:file:`index.rst` file for the users guide (:file:`doc/users`), developers +guide (:file:`doc/devel`), api reference (:file:`doc/api`), and FAQs +(:file:`doc/faq`). The documentation suite is built as a single document in +order to make the most effective use of cross referencing. Sphinx_ also creates ``.rst`` files that are staged in :file:`doc/api` from the docstrings of the classes in the Matplotlib library. Except for @@ -35,28 +35,50 @@ the docstrings of the classes in the Matplotlib library. Except for documentation is built. Similarly, the contents of :file:`doc/gallery` and :file:`doc/tutorials` are -generated by the `Sphinx Gallery`_ from the sources in :file:`examples` and -:file:`tutorials`. These sources consist of python scripts that have ReST_ -documentation built into their comments. Don't directly edit the -``.rst`` files in :file:`doc/gallery` and :file:`doc/tutorials` as they are -regenerated when the documentation are built. +generated by the `Sphinx Gallery`_ from the sources in :file:`examples/` and +:file:`tutorials/`. These sources consist of python scripts that have ReST_ +documentation built into their comments. + +.. note:: + + Don't directly edit the ``.rst`` files in :file:`doc/gallery`, + :file:`doc/tutorials`, and :file:`doc/api` (excepting + :file:`doc/api/api_changes/`). Sphinx_ regenerates files in these + directories when building documentation. Installing dependencies ----------------------- The documentation for Matplotlib is generated from reStructuredText (ReST_) -using the Sphinx_ documentation generation tool. There are several extra -requirements that are needed to build the documentation. They are listed in -:file:`doc-requirements.txt`, which is shown below: +using the Sphinx_ documentation generation tool. To build the documentation +you will need to (1) set up an appropriate Python environment and (2) +separately install LaTeX and Graphviz. + +To (1) set up an appropriate Python environment for building the +documentation, you should: + +* create a clean virtual environment with no existing Matplotlib + installation +* install the Python packages required for Matplotlib +* install the additional Python packages required to build the documentation + +There are several extra python packages that are needed to build the +documentation. They are listed in :file:`doc-requirements.txt`, which is +shown below: .. include:: ../../requirements/doc/doc-requirements.txt :literal: +To (2) set up LaTeX and Graphviz dependencies you should: + +* install a minimal working LaTeX distribution +* install the LaTeX packages cm-super and dvipng +* install `Graphviz `_ + .. note:: - * You'll need a minimal working LaTeX distribution for many examples to run. - * `Graphviz `_ is not a Python package, - and needs to be installed separately. + The documentation will not build without LaTeX and Graphviz. These are not + Python packages and must be installed separately. Building the docs ----------------- From 5b4c190320545f77f549d38832251523c4d704f5 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 17 Mar 2020 17:15:41 -0400 Subject: [PATCH 37/42] DOC: Cleanup trailing whitespace. --- doc/devel/documenting_mpl.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/devel/documenting_mpl.rst b/doc/devel/documenting_mpl.rst index 57bc871d1d49..c1704df1e6de 100644 --- a/doc/devel/documenting_mpl.rst +++ b/doc/devel/documenting_mpl.rst @@ -19,8 +19,9 @@ General file structure ---------------------- All documentation is built from the :file:`doc/`, :file:`tutorials/`, and -:file:`examples/` directories. The :file:`doc/` directory contains configuration files for Sphinx -and reStructuredText (ReST_; ``.rst``) files that are rendered to documentation pages. +:file:`examples/` directories. The :file:`doc/` directory contains +configuration files for Sphinx and reStructuredText (ReST_; ``.rst``) files +that are rendered to documentation pages. The main entry point is :file:`doc/index.rst`, which pulls in the @@ -41,7 +42,7 @@ documentation built into their comments. .. note:: - Don't directly edit the ``.rst`` files in :file:`doc/gallery`, + Don't directly edit the ``.rst`` files in :file:`doc/gallery`, :file:`doc/tutorials`, and :file:`doc/api` (excepting :file:`doc/api/api_changes/`). Sphinx_ regenerates files in these directories when building documentation. From 232e702ce903c8acb8744b54fe6a72d7ff605c7e Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 17 Mar 2020 17:38:42 -0400 Subject: [PATCH 38/42] Update GitHub stats for 3.2.1. --- doc/users/github_stats.rst | 1198 +---------------- .../prev_whats_new/github_stats_3.2.0.rst | 1150 ++++++++++++++++ 2 files changed, 1218 insertions(+), 1130 deletions(-) create mode 100644 doc/users/prev_whats_new/github_stats_3.2.0.rst diff --git a/doc/users/github_stats.rst b/doc/users/github_stats.rst index d538ba605eb8..88a6dc3ce23b 100644 --- a/doc/users/github_stats.rst +++ b/doc/users/github_stats.rst @@ -3,1151 +3,89 @@ GitHub Stats ============ -GitHub stats for 2019/05/18 - 2020/03/03 (tag: v3.1.0) +GitHub stats for 2020/03/03 - 2020/03/17 (tag: v3.2.0) These lists are automatically generated, and may be incomplete or contain duplicates. -We closed 125 issues and merged 839 pull requests. -The full list can be seen `on GitHub `__ +We closed 11 issues and merged 44 pull requests. +The full list can be seen `on GitHub `__ -The following 164 authors contributed 3455 commits. +The following 11 authors contributed 89 commits. -* Abhinav Sagar -* Abhinuv Nitin Pitale -* Adam Gomaa -* Akshay Nair -* Alex Rudy -* Alexander Rudy * Antony Lee -* Ao Liu (frankliuao) -* Ardie Orden -* Ashley Whetter -* Ben Root -* Benjamin Bengfort -* Benjamin Congdon -* Bharat123rox -* Bingyao Liu -* Brigitta Sipocz -* Bruno Pagani -* brut -* Carsten -* Carsten Schelp -* chaoyi1 -* Cho Yin Yong -* Chris Barnes -* Christer Jensen -* Christian Brodbeck -* Christoph Pohl -* chuanzhu xu -* Colin -* Cong Ma -* dabana -* DanielMatu -* David Chudzicki -* David Stansby -* Deng Tian -* depano.carlos@gmail.com -* djdt -* donchanee -* Dora Fraeman Caswell -* Elan Ernest * Elliott Sales de Andrade -* Emlyn Price -* Eric Firing -* Eric Wieser -* Federico Ariza -* Filipe Fernandes -* fourpoints -* fredrik-1 -* Gazing -* Greg Lucas * hannah -* Harshal Prakash Patankar -* Ian Hincks -* Ian Thomas -* ilopata1 -* ImportanceOfBeingErnest -* Jacobson Okoro -* James A. Bednar -* Jarrod Millman -* Javad -* jb-leger -* Jean-Benoist Leger -* jfbu -* joaonsg * Jody Klymak -* Joel Frederico -* Johannes H. Jensen -* Johnny Gill -* Jonas Camillus Jeppesen -* Jorge Moraleda -* Joscha Reimer -* Joseph Albert -* Jouni K. Seppänen -* Joy Bhalla -* Juanjo Bazán -* Julian Mehne -* kolibril13 -* krishna katyal -* ksunden * Kyle Sunden -* Larry Bradley -* lepuchi -* luftek -* Maciej Dems -* Maik Riechert -* Marat K -* Mark Wolf -* Mark Wolfman -* Matte -* Matthias Bussonnier -* Matthias Geier -* MatthieuDartiailh -* Max Chen -* Max Humber -* Max Shinn -* MeeseeksMachine -* Michael Droettboom -* Mingkai Dong -* MinRK -* miquelastein -* Molly Rossow -* Nathan Goldbaum -* nathan78906 -* Nelle Varoquaux -* Nick White -* Nicolas Courtemanche -* Nikita Kniazev -* njwhite -* O. Castany -* Oliver Natt -* Olivier -* Om Sitapara -* omsitapara23 -* Oriol (Prodesk) -* Oriol Abril -* Patrick Feiring -* Patrick Shriwise -* PatrickFeiring -* Paul -* Paul Hobson -* Paul Hoffman -* Paul Ivanov -* Peter Schutt -* pharshalp -* Phil Elson -* Philippe Pinard -* Rebecca W Perry -* ResidentMario -* Richard Ji-Cathriner -* RoryIAngus -* Ryan May -* S. Fukuda -* Samesh -* Samesh Lakhotia -* sasoripathos -* SBCV -* Sebastian Bullinger -* Sergey Royz -* Siddhesh Poyarekar -* Simon Legner -* SojiroFukuda -* Steve Dower -* Taras -* Ted Drain -* teddyrendahl +* MarcoGorelli +* Maximilian Nöthe +* Sandro Tosi +* terrycojones * Thomas A Caswell -* Thomas Hisch -* Thomas Robitaille -* Till Hoffmann -* tillahoffmann * Tim Hoffmann -* Tom Flannaghan -* Travis CI -* V. Armando Solé -* Vincent L.M. Mazoyer -* Viraj Mohile -* Wafa Soofi -* Warren Weckesser -* y1thof -* yeo -* Yong Cho Yin -* Yuya -* Zhili (Jerry) Pan -* zhoubecky -* Zulko GitHub issues and pull requests: -Pull Requests (839): - -* :ghpull:`16626`: Updated Readme + Setup.py for PyPa -* :ghpull:`16627`: ci: Restore nuget install step on Azure for v3.2.x. -* :ghpull:`16625`: v3.2.x: Make Azure use local FreeType. -* :ghpull:`16622`: Backport PR #16613 on branch v3.2.x (Fix edge-case in preprocess_data, if label_namer is optional and unset.) -* :ghpull:`16613`: Fix edge-case in preprocess_data, if label_namer is optional and unset. -* :ghpull:`16612`: Backport PR #16605: CI: tweak the vm images we use on azure -* :ghpull:`16611`: Backport PR #16585 on branch v3.2.x (Fix _preprocess_data for Py3.9.) -* :ghpull:`16605`: CI: tweak the vm images we use on azure -* :ghpull:`16585`: Fix _preprocess_data for Py3.9. -* :ghpull:`16541`: Merge pull request #16404 from jklymak/fix-add-base-symlognorm -* :ghpull:`16542`: Backport PR #16006: Ignore pos in StrCategoryFormatter.__call__ to di… -* :ghpull:`16543`: Backport PR #16532: Document default value of save_count parameter in… -* :ghpull:`16532`: Document default value of save_count parameter in FuncAnimation -* :ghpull:`16526`: Backport PR #16480 on v.3.2.x: Re-phrase doc for bottom kwarg to hist -* :ghpull:`16404`: FIX: add base kwarg to symlognor -* :ghpull:`16518`: Backport PR #16502 on branch v3.2.x (Document theta getters/setters) -* :ghpull:`16519`: Backport PR #16513 on branch v3.2.x (Add more FreeType tarball hashes.) -* :ghpull:`16513`: Add more FreeType tarball hashes. -* :ghpull:`16502`: Document theta getters/setters -* :ghpull:`16506`: Backport PR #16505 on branch v3.2.x (Add link to blog to front page) -* :ghpull:`16505`: Add link to blog to front page -* :ghpull:`16480`: Re-phrase doc for bottom kwarg to hist -* :ghpull:`16494`: Backport PR #16490 on branch v3.2.x (Fix some typos on the front page) -* :ghpull:`16489`: Backport PR #16272 on branch v3.2.x (Move mplot3d autoregistration api changes to 3.2.) -* :ghpull:`16490`: Fix some typos on the front page -* :ghpull:`16465`: Backport PR #16450 on branch v3.2.x (Fix interaction between sticky_edges and shared axes.) -* :ghpull:`16466`: Backport PR #16392: FIX colorbars for Norms that do not have a scale. -* :ghpull:`16392`: FIX colorbars for Norms that do not have a scale. -* :ghpull:`16450`: Fix interaction between sticky_edges and shared axes. -* :ghpull:`16453`: Backport PR #16452 on branch v3.2.x (Don't make InvertedLogTransform inherit from deprecated base class.) -* :ghpull:`16452`: Don't make InvertedLogTransform inherit from deprecated base class. -* :ghpull:`16436`: Backport PR #16435 on branch v3.2.x (Reword intro to colors api docs.) -* :ghpull:`16435`: Reword intro to colors api docs. -* :ghpull:`16399`: Backport PR #16396 on branch v3.2.x (font_manager docs cleanup.) -* :ghpull:`16396`: font_manager docs cleanup. -* :ghpull:`16397`: Backport PR #16394 on branch v3.2.x (Mark inkscape 1.0 as unsupported (at least for now).) -* :ghpull:`16394`: Mark inkscape 1.0 as unsupported (at least for now). -* :ghpull:`16286`: Fix cbars for different norms -* :ghpull:`16385`: Backport PR #16226 on branch v3.2.x: Reorganize intro section on main page -* :ghpull:`16383`: Backport PR #16379 on branch v3.2.x (FIX: catch on message content, not module) -* :ghpull:`16226`: Reorganize intro section on main page -* :ghpull:`16364`: Backport PR #16344 on branch v3.2.x (Cast vmin/vmax to floats before nonsingular-expanding them.) -* :ghpull:`16344`: Cast vmin/vmax to floats before nonsingular-expanding them. -* :ghpull:`16360`: Backport PR #16347 on branch v3.2.x (FIX: catch warnings from pandas in cbook._check_1d) -* :ghpull:`16357`: Backport PR #16330 on branch v3.2.x (Clearer signal handling) -* :ghpull:`16349`: Backport PR #16255 on branch v3.2.x (Move version info to sidebar) -* :ghpull:`16346`: Backport PR #16298 on branch v3.2.x (Don't recursively call draw_idle when updating artists at draw time.) -* :ghpull:`16331`: Backport PR #16308 on branch v3.2.x (CI: Use Ubuntu Bionic compatible package names) -* :ghpull:`16332`: Backport PR #16308 on v3.2.x: CI: Use Ubuntu Bionic compatible package names -* :ghpull:`16324`: Backport PR #16323 on branch v3.2.x (Add sphinx doc for Axis.axis_name.) -* :ghpull:`16325`: Backport PR #15462 on v3.2.x: Simplify azure setup. -* :ghpull:`16323`: Add sphinx doc for Axis.axis_name. -* :ghpull:`16321`: Backport PR #16311 on branch v3.2.x (don't override non-Python signal handlers) -* :ghpull:`16308`: CI: Use Ubuntu Bionic compatible package names -* :ghpull:`16306`: Backport PR #16300 on branch v3.2.x (Don't default to negative radii in polar plot.) -* :ghpull:`16305`: Backport PR #16250 on branch v3.2.x (Fix zerolen intersect) -* :ghpull:`16300`: Don't default to negative radii in polar plot. -* :ghpull:`16278`: Backport PR #16273 on branch v3.2.x (DOC: Changing the spelling of co-ordinates.) -* :ghpull:`16260`: Backport PR #16259 on branch v3.2.x (TST: something changed in pytest 5.3.3 that breaks our qt fixtures) -* :ghpull:`16259`: TST: something changed in pytest 5.3.3 that breaks our qt fixtures -* :ghpull:`16238`: Backport PR #16235 on branch v3.2.x (FIX: AttributeError in TimerBase.start) -* :ghpull:`16211`: DOC: ValidateInterval was deprecated in 3.2, not 3.1 -* :ghpull:`16224`: Backport PR #16223 on branch v3.2.x (Added DNA Features Viewer description + screenshot in docs/thirdparty/) -* :ghpull:`16223`: Added DNA Features Viewer description + screenshot in docs/thirdparty/ -* :ghpull:`16222`: Backport PR #16212 on branch v3.2.x (Fix deprecation from #13544) -* :ghpull:`16212`: Fix deprecation from #13544 -* :ghpull:`16207`: Backport PR #16189 on branch v3.2.x (MNT: set default canvas when un-pickling) -* :ghpull:`16189`: MNT: set default canvas when un-pickling -* :ghpull:`16179`: Backport PR #16175: FIX: ignore axes that aren't visible -* :ghpull:`16175`: FIX: ignore axes that aren't visible -* :ghpull:`16168`: Backport PR #16166 on branch v3.2.x (Add badge for citing 3.1.2) -* :ghpull:`16148`: Backport PR #16128 on branch v3.2.x (CI: Do not use nbformat 5.0.0/5.0.1 for testing) -* :ghpull:`16145`: Backport PR #16053 on branch v3.2.x (Fix v_interval setter) -* :ghpull:`16128`: CI: Do not use nbformat 5.0.0/5.0.1 for testing -* :ghpull:`16135`: Backport PR #16112 on branch v3.2.x (CI: Fail when failed to install dependencies) -* :ghpull:`16132`: Backport PR #16126 on branch v3.2.x (TST: test_fork: Missing join) -* :ghpull:`16124`: Backport PR #16105 on branch v3.2.x (Fix legend dragging.) -* :ghpull:`16122`: Backport PR #16113 on branch v3.2.x (Renderer Graphviz inheritance diagrams as svg) -* :ghpull:`16105`: Fix legend dragging. -* :ghpull:`16113`: Renderer Graphviz inheritance diagrams as svg -* :ghpull:`16112`: CI: Fail when failed to install dependencies -* :ghpull:`16119`: Backport PR #16065 on branch v3.2.x (Nicer formatting of community aspects on front page) -* :ghpull:`16074`: Backport PR #16061 on branch v3.2.x (Fix deprecation message for axes_grid1.colorbar.) -* :ghpull:`16093`: Backport PR #16079 on branch v3.2.x (Fix restuctured text formatting) -* :ghpull:`16094`: Backport PR #16080 on branch v3.2.x (Cleanup docstrings in backend_bases.py) -* :ghpull:`16086`: FIX: use supported attribute to check pillow version -* :ghpull:`16084`: Backport PR #16077 on branch v3.2.x (Fix some typos) -* :ghpull:`16077`: Fix some typos -* :ghpull:`16079`: Fix restuctured text formatting -* :ghpull:`16080`: Cleanup docstrings in backend_bases.py -* :ghpull:`16061`: Fix deprecation message for axes_grid1.colorbar. -* :ghpull:`16006`: Ignore pos in StrCategoryFormatter.__call__ to display correct label in the preview window -* :ghpull:`16056`: Backport PR #15864 on branch v3.2.x ([Add the info of 'sviewgui' in thirdparty package]) -* :ghpull:`15864`: Add 'sviewgui' to list of thirdparty packages -* :ghpull:`16055`: Backport PR #16037 on branch v3.2.x (Doc: use empty ScalarMappable for colorbars with no associated image.) -* :ghpull:`16054`: Backport PR #16048 on branch v3.2.x (Document that colorbar() takes a label kwarg.) -* :ghpull:`16037`: Doc: use empty ScalarMappable for colorbars with no associated image. -* :ghpull:`16048`: Document that colorbar() takes a label kwarg. -* :ghpull:`16042`: Backport PR #16031 on branch v3.2.x (Fix docstring of hillshade().) -* :ghpull:`16033`: Backport PR #16028 on branch v3.2.x (Prevent FigureCanvasQT_draw_idle recursively calling itself.) -* :ghpull:`16021`: Backport PR #16007 on branch v3.2.x (Fix search on nested pages) -* :ghpull:`16019`: Backport PR #15735 on branch v3.2.x (Cleanup some mplot3d docstrings.) -* :ghpull:`15987`: Backport PR #15886 on branch v3.2.x (Fix Annotation using different units and different coords on x/y.) -* :ghpull:`15886`: Fix Annotation using different units and different coords on x/y. -* :ghpull:`15984`: Backport PR #15970 on branch v3.2.x (Process clip paths the same way as regular Paths.) -* :ghpull:`15970`: Process clip paths the same way as regular Paths. -* :ghpull:`15963`: Backport PR #15937 on branch v3.2.x (Don't hide exceptions in FontManager.addfont.) -* :ghpull:`15956`: Backport PR #15901 on branch v3.2.x (Update backend_nbagg for removal of Gcf._activeQue.) -* :ghpull:`15937`: Don't hide exceptions in FontManager.addfont. -* :ghpull:`15959`: Backport PR #15953 on branch v3.2.x (Update donation link) -* :ghpull:`15901`: Update backend_nbagg for removal of Gcf._activeQue. -* :ghpull:`15954`: Backport PR #15914 on branch v3.2.x (Example for sigmoid function with horizontal lines) -* :ghpull:`15914`: Example for sigmoid function with horizontal lines -* :ghpull:`15930`: Backport PR #15925 on branch v3.2.x (Optimize setting units to None when they're already None.) -* :ghpull:`15925`: Optimize setting units to None when they're already None. -* :ghpull:`15915`: Backport PR #15903 on branch v3.2.x (Correctly handle non-affine transData in Collection.get_datalim.) -* :ghpull:`15903`: Correctly handle non-affine transData in Collection.get_datalim. -* :ghpull:`15908`: Backport PR #15857 on branch v3.2.x (LassoSelection shouldn't useblit on canvas not supporting blitting.) -* :ghpull:`15857`: LassoSelection shouldn't useblit on canvas not supporting blitting. -* :ghpull:`15905`: Backport PR #15763 on branch v3.2.x (Skip webagg test if tornado is not available.) -* :ghpull:`15882`: Backport PR #15859 on branch v3.2.x (Doc: Move search field into nav bar) -* :ghpull:`15868`: Backport PR #15848 on branch v3.2.x: Cleanup environment variables FAQ -* :ghpull:`15872`: Backport PR #15869 on branch v3.2.x (Update markers docs.) -* :ghpull:`15869`: Update markers docs. -* :ghpull:`15867`: Backport PR #15789 on branch v3.2.x (Cleanup xticks/yticks docstrings.) -* :ghpull:`15870`: Backport PR #15865 on branch v3.2.x (Fix a typo) -* :ghpull:`15871`: Backport PR #15824 on branch v3.2.x (Document doc style for default values) -* :ghpull:`15824`: Document doc style for default values -* :ghpull:`15865`: Fix a typo -* :ghpull:`15789`: Cleanup xticks/yticks docstrings. -* :ghpull:`15862`: Backport PR #15851 on branch v3.2.x (ffmpeg is available on default ubuntu packages now) -* :ghpull:`15848`: Cleanup environment variables FAQ. -* :ghpull:`15844`: Backport PR #15841 on branch v3.2.x (DOC: specify the expected shape in the Collection.set_offset) -* :ghpull:`15841`: DOC: specify the expected shape in the Collection.set_offset -* :ghpull:`15837`: Backport PR #15799 on branch v3.2.x (Improve display of author names on PDF titlepage of matplotlib own docs) -* :ghpull:`15799`: Improve display of author names on PDF titlepage of matplotlib own docs -* :ghpull:`15831`: Backport PR #15829 on branch v3.2.x (In C extensions, use FutureWarning, not DeprecationWarning.) -* :ghpull:`15829`: In C extensions, use FutureWarning, not DeprecationWarning. -* :ghpull:`15818`: Backport PR #15619 on branch v3.2.x (Improve zorder demo) -* :ghpull:`15819`: Backport PR #15601 on branch v3.2.x (Fix FontProperties conversion to/from strings) -* :ghpull:`15601`: Fix FontProperties conversion to/from strings -* :ghpull:`15619`: Improve zorder demo -* :ghpull:`15810`: Backport PR #15809 on branch v3.2.x (Exclude artists from legend using label attributte) -* :ghpull:`15809`: Exclude artists from legend using label attributte -* :ghpull:`15808`: Backport PR #15513 on branch v3.2.x (Separate plots using #### in make_room_for_ylabel_using_axesgrid.py) -* :ghpull:`15513`: Separate plots using #### in make_room_for_ylabel_using_axesgrid.py -* :ghpull:`15807`: Backport PR #15791 on branch v3.2.x (Cleanup backend_bases docstrings.) -* :ghpull:`15791`: Cleanup backend_bases docstrings. -* :ghpull:`15803`: Backport PR #15795 on branch v3.2.x (Remove incorrect statement re2: colorbars in image tutorial.) -* :ghpull:`15795`: Remove incorrect statement re: colorbars in image tutorial. -* :ghpull:`15794`: Backport PR #15793 on branch v3.2.x (fix a couple typos in tutorials) -* :ghpull:`15793`: fix a couple typos in tutorials -* :ghpull:`15774`: Backport PR #15748 on branch v3.2.x (Fix incorrect macro in FT2Font setup.) -* :ghpull:`15748`: Fix incorrect macro in FT2Font setup. -* :ghpull:`15759`: Backport PR #15751 on branch v3.2.x (Modernize FAQ entry for plt.show().) -* :ghpull:`15762`: Backport PR #15752 on branch v3.2.x (Update boxplot/violinplot faq.) -* :ghpull:`15755`: Backport PR #15661 on branch v3.2.x (Document scope of 3D scatter depthshading.) -* :ghpull:`15742`: Backport PR #15729 on branch v3.2.x (Catch correct parse errror type for dateutil >= 2.8.1) -* :ghpull:`15738`: Backport PR #15737 on branch v3.2.x (Fix env override in WebAgg backend test.) -* :ghpull:`15724`: Backport PR #15718 on branch v3.2.x (Update donation link) -* :ghpull:`15716`: Backport PR #15683 on branch v3.2.x (Cleanup dates.py docstrings.) -* :ghpull:`15683`: Cleanup dates.py docstrings. -* :ghpull:`15688`: Backport PR #15682 on branch v3.2.x (Make histogram_bin_edges private.) -* :ghpull:`15682`: Make histogram_bin_edges private. -* :ghpull:`15666`: Backport PR #15649 on branch v3.2.x (Fix searchindex.js loading when ajax fails (because e.g. CORS in embedded iframes)) -* :ghpull:`15669`: Backport PR #15654 on branch v3.2.x (Fix some broken links.) -* :ghpull:`15660`: Backport PR #15647 on branch v3.2.x (Update some links) -* :ghpull:`15653`: Backport PR #15623 on branch v3.2.x (Docstring for Artist.mouseover) -* :ghpull:`15623`: Docstring for Artist.mouseover -* :ghpull:`15634`: Backport PR #15626 on branch v3.2.x (Note minimum supported version for fontconfig.) -* :ghpull:`15633`: Backport PR #15620 on branch v3.2.x (TST: Increase tolerance of some tests for aarch64) -* :ghpull:`15626`: Note minimum supported version for fontconfig. -* :ghpull:`15632`: Backport PR #15627 on branch v3.2.x (Make it easier to test various animation writers in examples.) -* :ghpull:`15620`: TST: Increase tolerance of some tests for aarch64 -* :ghpull:`15627`: Make it easier to test various animation writers in examples. -* :ghpull:`15618`: Backport PR #15613 on branch v3.2.x (Revert "Don't bother with manually resizing the Qt main window.") -* :ghpull:`15613`: Revert "Don't bother with manually resizing the Qt main window." -* :ghpull:`15593`: Backport PR #15590 on branch v3.2.x (Rename numpy to NumPy in docs.) -* :ghpull:`15590`: Rename numpy to NumPy in docs. -* :ghpull:`15588`: Backport PR #15478 on branch v3.2.x (Make ConciseDateFormatter obey timezone) -* :ghpull:`15478`: Make ConciseDateFormatter obey timezone -* :ghpull:`15583`: Backport PR #15512 on branch v3.2.x -* :ghpull:`15584`: Backport PR #15579 on branch v3.2.x (Remove matplotlib.sphinxext.tests from __init__.py) -* :ghpull:`15579`: Remove matplotlib.sphinxext.tests from __init__.py -* :ghpull:`15577`: Backport PR #14705 on branch v3.2.x (Correctly size non-ASCII characters in agg backend.) -* :ghpull:`14705`: Correctly size non-ASCII characters in agg backend. -* :ghpull:`15572`: Backport PR #15452 on branch v3.2.x (Improve example for tick formatters) -* :ghpull:`15570`: Backport PR #15561 on branch v3.2.x (Update thirdparty scalebar) -* :ghpull:`15452`: Improve example for tick formatters -* :ghpull:`15545`: Backport PR #15429 on branch v3.2.x (Fix OSX build on azure) -* :ghpull:`15544`: Backport PR #15537 on branch v3.2.x (Add a third party package in the doc: matplotlib-scalebar) -* :ghpull:`15561`: Update thirdparty scalebar -* :ghpull:`15567`: Backport PR #15562 on branch v3.2.x (Improve docsting of AxesImage) -* :ghpull:`15562`: Improve docsting of AxesImage -* :ghpull:`15565`: Backport PR #15556 on branch v3.2.x (Fix test suite compat with ghostscript 9.50.) -* :ghpull:`15556`: Fix test suite compat with ghostscript 9.50. -* :ghpull:`15560`: Backport PR #15553 on branch v3.2.x (DOC: add cache-buster query string to css path) -* :ghpull:`15552`: Backport PR #15528 on branch v3.2.x (Declutter home page) -* :ghpull:`15554`: Backport PR #15523 on branch v3.2.x (numpydoc AxesImage) -* :ghpull:`15523`: numpydoc AxesImage -* :ghpull:`15549`: Backport PR #15516 on branch v3.2.x (Add logo like font) -* :ghpull:`15543`: Backport PR #15539 on branch v3.2.x (Small cleanups to backend docs.) -* :ghpull:`15542`: Backport PR #15540 on branch v3.2.x (axisartist tutorial fixes.) -* :ghpull:`15537`: Add a third party package in the doc: matplotlib-scalebar -* :ghpull:`15541`: Backport PR #15533 on branch v3.2.x (Use svg instead of png for website logo) -* :ghpull:`15539`: Small cleanups to backend docs. -* :ghpull:`15540`: axisartist tutorial fixes. -* :ghpull:`15538`: Backport PR #15535 on branch v3.2.x (Avoid really long lines in event handling docs.) -* :ghpull:`15535`: Avoid really long lines in event handling docs. -* :ghpull:`15531`: Backport PR #15527 on branch v3.2.x (Clarify imshow() docs concerning scaling and grayscale images) -* :ghpull:`15527`: Clarify imshow() docs concerning scaling and grayscale images -* :ghpull:`15522`: Backport PR #15500 on branch v3.2.x (Improve antialiasing example) -* :ghpull:`15524`: Backport PR #15499 on branch v3.2.x (Do not show path in font table example) -* :ghpull:`15525`: Backport PR #15498 on branch v3.2.x (Simplify matshow example) -* :ghpull:`15498`: Simplify matshow example -* :ghpull:`15499`: Do not show path in font table example -* :ghpull:`15521`: Backport PR #15519 on branch v3.2.x (FIX: fix anti-aliasing zoom bug) -* :ghpull:`15500`: Improve antialiasing example -* :ghpull:`15519`: FIX: fix anti-aliasing zoom bug -* :ghpull:`15510`: Backport PR #15489 on branch v3.2.x (DOC: adding main nav to site) -* :ghpull:`15495`: Backport PR #15486 on branch v3.2.x (Fixes an error in the documentation of Ellipse) -* :ghpull:`15488`: Backport PR #15372 on branch v3.2.x (Add example for drawstyle) -* :ghpull:`15490`: Backport PR #15487 on branch v3.2.x (Fix window not always raised in Qt example) -* :ghpull:`15487`: Fix window not always raised in Qt example -* :ghpull:`15372`: Add example for drawstyle -* :ghpull:`15485`: Backport PR #15454 on branch v3.2.x (Rewrite Anscombe's quartet example) -* :ghpull:`15483`: Backport PR #15480 on branch v3.2.x (Fix wording in [packages] section of setup.cfg) -* :ghpull:`15454`: Rewrite Anscombe's quartet example -* :ghpull:`15480`: Fix wording in [packages] section of setup.cfg -* :ghpull:`15477`: Backport PR #15464 on branch v3.2.x (Remove unused code (remainder from #15453)) -* :ghpull:`15471`: Backport PR #15460 on branch v3.2.x (Fix incorrect value check in axes_grid.) -* :ghpull:`15456`: Backport PR #15453 on branch v3.2.x (Improve example for tick locators) -* :ghpull:`15457`: Backport PR #15450 on branch v3.2.x (API: rename DivergingNorm to TwoSlopeNorm) -* :ghpull:`15450`: API: rename DivergingNorm to TwoSlopeNorm -* :ghpull:`15434`: In imsave, let pnginfo have precedence over metadata. -* :ghpull:`15445`: Backport PR #15439 on branch v3.2.x (DOC: mention discourse main page) -* :ghpull:`15425`: Backport PR #15422 on branch v3.2.x (FIX: typo in attribute lookup) -* :ghpull:`15449`: DOC: fix build -* :ghpull:`15429`: Fix OSX build on azure -* :ghpull:`15420`: Backport PR #15380 on branch v3.2.x (Update docs of BoxStyle) -* :ghpull:`15380`: Update docs of BoxStyle -* :ghpull:`15300`: CI: use python -m to make sure we are using the pip/pytest we want -* :ghpull:`15414`: Backport PR #15413 on branch v3.2.x (catch OSError instead of FileNotFoundError in _get_executable_info to resolve #15399) -* :ghpull:`15413`: catch OSError instead of FileNotFoundError in _get_executable_info to resolve #15399 -* :ghpull:`15406`: Backport PR #15347 on branch v3.2.x (Fix axes.hist bins units) -* :ghpull:`15405`: Backport PR #15391 on branch v3.2.x (Increase fontsize in inheritance graphs) -* :ghpull:`15347`: Fix axes.hist bins units -* :ghpull:`15391`: Increase fontsize in inheritance graphs -* :ghpull:`15389`: Backport PR #15379 on branch v3.2.x (Document formatting strings in the docs) -* :ghpull:`15379`: Document formatting strings in the docs -* :ghpull:`15386`: Backport PR #15385 on branch v3.2.x (Reword hist() doc.) -* :ghpull:`15385`: Reword hist() doc. -* :ghpull:`15377`: Backport PR #15357 on branch v3.2.x (Add 'step' and 'barstacked' to histogram_histtypes demo) -* :ghpull:`15357`: Add 'step' and 'barstacked' to histogram_histtypes demo -* :ghpull:`15366`: Backport PR #15364 on branch v3.2.x (DOC: fix typo in colormap docs) -* :ghpull:`15362`: Backport PR #15350 on branch v3.2.x (Don't generate double-reversed cmaps ("viridis_r_r", ...).) -* :ghpull:`15360`: Backport PR #15258 on branch v3.2.x (Don't fallback to view limits when autoscale()ing no data.) -* :ghpull:`15350`: Don't generate double-reversed cmaps ("viridis_r_r", ...). -* :ghpull:`15258`: Don't fallback to view limits when autoscale()ing no data. -* :ghpull:`15299`: Backport PR #15296 on branch v3.2.x (Fix typo/bug from 18cecf7) -* :ghpull:`15327`: Backport PR #15326 on branch v3.2.x (List of minimal versions of dependencies) -* :ghpull:`15326`: List of minimal versions of dependencies -* :ghpull:`15317`: Backport PR #15291 on branch v3.2.x (Remove error_msg_qt from backend_qt4.) -* :ghpull:`15316`: Backport PR #15283 on branch v3.2.x (Don't default axes_grid colorbar locator to MaxNLocator.) -* :ghpull:`15291`: Remove error_msg_qt from backend_qt4. -* :ghpull:`15283`: Don't default axes_grid colorbar locator to MaxNLocator. -* :ghpull:`15315`: Backport PR #15308 on branch v3.2.x (Doc: Add close event to list of events) -* :ghpull:`15308`: Doc: Add close event to list of events -* :ghpull:`15312`: Backport PR #15307 on branch v3.2.x (DOC: center footer) -* :ghpull:`15307`: DOC: center footer -* :ghpull:`15276`: Backport PR #15271 on branch v3.2.x (Fix font weight validation) -* :ghpull:`15279`: Backport PR #15252 on branch v3.2.x (Mention labels and milestones in PR review guidelines) -* :ghpull:`15252`: Mention labels and milestones in PR review guidelines -* :ghpull:`15268`: Backport PR #15266 on branch v3.2.x (Embedding in Tk example: Fix toolbar being clipped.) -* :ghpull:`15269`: Backport PR #15267 on branch v3.2.x (added multi-letter example to mathtext tutorial) -* :ghpull:`15267`: added multi-letter example to mathtext tutorial -* :ghpull:`15266`: Embedding in Tk example: Fix toolbar being clipped. -* :ghpull:`15243`: Move some new API changes to the correct place -* :ghpull:`15245`: Fix incorrect calls to warn_deprecated. -* :ghpull:`15239`: Composite against white, not the savefig.facecolor rc, in print_jpeg. -* :ghpull:`15227`: contains_point() docstring fixes -* :ghpull:`15242`: Cleanup widgets docstrings. -* :ghpull:`14889`: Support pixel-by-pixel alpha in imshow. -* :ghpull:`14928`: Logit scale nonsingular -* :ghpull:`14998`: Fix nonlinear spine positions & inline Spine._calc_offset_transform into get_spine_transform. -* :ghpull:`15231`: Doc: Do not write default for non-existing rcParams -* :ghpull:`15222`: Cleanup projections/__init__.py. -* :ghpull:`15228`: Minor docstring style cleanup -* :ghpull:`15237`: Cleanup widgets.py. -* :ghpull:`15229`: Doc: Fix Bbox and BboxBase links -* :ghpull:`15235`: Kill FigureManagerTk._num. -* :ghpull:`15234`: Drop mention of msinttypes in Windows build. -* :ghpull:`15224`: Avoid infinite loop when switching actions in qt backend. -* :ghpull:`15230`: Doc: Remove hard-documented rcParams defaults -* :ghpull:`15149`: pyplot.style.use() to accept pathlib.Path objects as arguments -* :ghpull:`15220`: Correctly format floats passed to pgf backend. -* :ghpull:`15216`: Update docstrings of contains_point(s) methods -* :ghpull:`15209`: Exclude s-g generated files from flake8 check. -* :ghpull:`15204`: PEP8ify some variable names. -* :ghpull:`15196`: Force html4 writer for sphinx 2 -* :ghpull:`13544`: Improve handling of subplots spanning multiple gridspec cells. -* :ghpull:`15194`: Trivial style fixes. -* :ghpull:`15202`: Deprecate the renderer parameter to Figure.tight_layout. -* :ghpull:`15195`: Fix integers being passed as length to quiver3d. -* :ghpull:`15180`: Add some more internal links to 3.2.0 what's new -* :ghpull:`13510`: Change Locator MAXTICKS checking to emitting a log at WARNING level. -* :ghpull:`15184`: Mark missing_references extension as parallel read safe -* :ghpull:`15150`: Autodetect whether pgf can use \includegraphics[interpolate]. -* :ghpull:`15163`: 3.2.0 API changes page -* :ghpull:`15176`: What's new for 3.2.0 -* :ghpull:`11947`: Ensure streamplot Euler step is always called when going out of bounds. -* :ghpull:`13702`: Deduplicate methods shared between Container and Artist. -* :ghpull:`15169`: TST: verify warnings fail the test suite -* :ghpull:`14888`: Replace some polar baseline images by check_figures_equal. -* :ghpull:`15027`: More readability improvements on axis3d. -* :ghpull:`15171`: Add useful error message when trying to add Slider to 3DAxes -* :ghpull:`13775`: Doc: Scatter Hist example update -* :ghpull:`15164`: removed a typo -* :ghpull:`15152`: Support for shorthand hex colors. -* :ghpull:`15159`: Follow up on #14424 for docstring -* :ghpull:`14424`: ENH: Add argument size validation to quiver. -* :ghpull:`15137`: DOC: add example to power limit API change note -* :ghpull:`15144`: Improve local page contents CSS -* :ghpull:`15143`: Restore doc references. -* :ghpull:`15124`: Replace parameter lists with square brackets -* :ghpull:`13077`: fix FreeType build on Azure -* :ghpull:`15123`: Improve categorical example -* :ghpull:`15134`: Fix missing references in doc build. -* :ghpull:`13937`: Use PYTHONFAULTHANDLER to switch on the Python fault handler. -* :ghpull:`13452`: Replace axis_artist.AttributeCopier by normal inheritance. -* :ghpull:`15045`: Resize canvas when changing figure size -* :ghpull:`15122`: Fixed app creation in qt5 backend (see #15100) -* :ghpull:`15099`: Add lightsource parameter to bar3d -* :ghpull:`14876`: Inline some afm parsing code. -* :ghpull:`15119`: Deprecate a validator for a deprecated rcParam value. -* :ghpull:`15121`: Fix Stacked bar graph example -* :ghpull:`15113`: Cleanup layout_from_subplotspec. -* :ghpull:`13543`: Remove zip_safe=False flag from setup.py. -* :ghpull:`12860`: ENH: LogLocator: check for correct dimension of subs added -* :ghpull:`14349`: Replace ValidateInterval by simpler specialized validators. -* :ghpull:`14352`: Remove redundant is_landscape kwarg from backend_ps helpers. -* :ghpull:`15087`: Pass gid to renderer -* :ghpull:`14703`: Don't bother with manually resizing the Qt main window. -* :ghpull:`14833`: Reuse TexManager implementation in convert_psfrags. -* :ghpull:`14893`: Update layout.html for sphinx themes -* :ghpull:`15098`: Simplify symlog range determination logic -* :ghpull:`15112`: Cleanup legend() docstring. -* :ghpull:`15108`: Fix doc build and resync matplotlibrc.template with actual defaults. -* :ghpull:`14940`: Fix text kerning calculations and some FT2Font cleanup -* :ghpull:`15082`: Privatize font_manager.JSONEncoder. -* :ghpull:`15106`: Update docs of GridSpec -* :ghpull:`14832`: ENH:made default tick formatter to switch to scientific notation earlier -* :ghpull:`15086`: Style fixes. -* :ghpull:`15073`: Add entry for blume to thirdparty package index -* :ghpull:`15095`: Simplify _png extension by handling file open/close in Python. -* :ghpull:`15092`: MNT: Add test for aitoff-projection -* :ghpull:`15101`: Doc: fix typo in contour doc -* :ghpull:`14624`: Fix axis inversion with loglocator and logitlocator. -* :ghpull:`15088`: Fix more doc references. -* :ghpull:`15063`: Add Comic Neue as a fantasy font. -* :ghpull:`14867`: Propose change to PR merging policy. -* :ghpull:`15068`: Add FontManager.addfont to register fonts at specific paths. -* :ghpull:`13397`: Deprecate axes_grid1.colorbar (in favor of matplotlib's own). -* :ghpull:`14521`: Move required_interactive_framework to canvas class. -* :ghpull:`15083`: Cleanup spines example. -* :ghpull:`14997`: Correctly set formatters and locators on removed shared axis -* :ghpull:`15064`: Fix eps hatching in MacOS Preview -* :ghpull:`15074`: Write all ACCEPTS markers in docstrings as comments. -* :ghpull:`15078`: Clarify docstring of FT2Font.get_glyph_name. -* :ghpull:`15080`: Fix cross-references in API changes < 3.0.0. -* :ghpull:`15072`: Cleanup patheffects. -* :ghpull:`15071`: Cleanup offsetbox.py. -* :ghpull:`15070`: Fix cross-references in API changes < 2.0.0. -* :ghpull:`10691`: Fix for shared axes diverging after setting tick markers -* :ghpull:`15069`: Style fixes for font_manager.py. -* :ghpull:`15067`: Fix cross-references in API changes < 1.0 -* :ghpull:`15061`: Fix cross-references in tutorials and FAQ -* :ghpull:`15060`: Fix cross-references in examples. -* :ghpull:`14957`: Documentation for using ConnectionPatch across Axes with constrained… -* :ghpull:`15053`: Make citation bit of README less wordy -* :ghpull:`15044`: numpydoc set_size_inches docstring -* :ghpull:`15050`: Clarify unnecessary special handling for colons in paths. -* :ghpull:`14797`: DOC: create a Agg figure without pyplot in buffer example -* :ghpull:`14844`: Add citation info to README -* :ghpull:`14884`: Do not allow canvas size to become smaller than MinSize in wx backend… -* :ghpull:`14941`: Improvements to make_icons.py. -* :ghpull:`15048`: DOC: more nitpick follow up -* :ghpull:`15043`: Fix Docs: Don’t warn for unused ignores -* :ghpull:`15025`: Re-write text wrapping logic -* :ghpull:`14840`: Don't assume transform is valid on access to matrix. -* :ghpull:`14862`: Make optional in docstrings optional -* :ghpull:`15028`: Python version conf.py -* :ghpull:`15033`: FIX: un-break nightly wheels on py37 -* :ghpull:`15046`: v3.1.x merge up -* :ghpull:`15015`: Fix bad missing-references.json due to PR merge race condition. -* :ghpull:`14581`: Make logscale bar/hist autolimits more consistents. -* :ghpull:`15034`: Doc fix nitpick -* :ghpull:`14614`: Deprecate {x,y,z}axis_date. -* :ghpull:`14991`: Handle inherited is_separable, has_inverse in transform props detection. -* :ghpull:`15032`: Clarify effect of axis('equal') on explicit data limits -* :ghpull:`15031`: Update docs of GridSpec -* :ghpull:`14106`: Describe FigureManager -* :ghpull:`15024`: Update docs of GridSpecBase -* :ghpull:`14906`: Deprecate some FT2Image methods. -* :ghpull:`14963`: More Axis3D cleanup. -* :ghpull:`15009`: Provide signatures to some C-level classes and methods. -* :ghpull:`14968`: DOC: colormap manipulation tutorial update -* :ghpull:`15006`: Deprecate get/set_*ticks minor positional use -* :ghpull:`14989`: DOC:Update axes documentation -* :ghpull:`14871`: Parametrize determinism tests. -* :ghpull:`14768`: DOC: Enable nitpicky -* :ghpull:`15013`: Matplotlib requires Python 3.6, which in turn requires Mac OS X 10.6+ -* :ghpull:`15012`: Fix typesetting of "GitHub" -* :ghpull:`14954`: Cleanup polar_legend example. -* :ghpull:`14519`: Check parameters of ColorbarBase -* :ghpull:`14942`: Make _classic_test style a tiny patch on top of classic. -* :ghpull:`14988`: pathlibify/fstringify setup/setupext. -* :ghpull:`14511`: Deprecate allowing scalars for fill_between where -* :ghpull:`14493`: Remove deprecated fig parameter form GridSpecBase.get_subplot_params() -* :ghpull:`14995`: Further improve backend tutorial. -* :ghpull:`15000`: Use warnings.warn, not logging.warning, in microseconds locator warning. -* :ghpull:`14990`: Fix nonsensical transform in mixed-mode axes aspect computation. -* :ghpull:`15002`: No need to access filesystem in test_dates.py. -* :ghpull:`14549`: Improve backends documentation -* :ghpull:`14774`: Fix image bbox clip. -* :ghpull:`14978`: Typo fixes in pyplot.py -* :ghpull:`14702`: Don't enlarge toolbar for Qt high-dpi. -* :ghpull:`14922`: Autodetect some transform properties. -* :ghpull:`14962`: Replace inspect.getfullargspec by inspect.signature. -* :ghpull:`14958`: Improve docs of toplevel module. -* :ghpull:`14926`: Save a matrix unpacking/repacking in offsetbox. -* :ghpull:`14961`: Cleanup demo_agg_filter. -* :ghpull:`14924`: Kill the C-level (private) RendererAgg.buffer_rgba, which returns a copy. -* :ghpull:`14946`: Delete virtualenv faq. -* :ghpull:`14944`: Shorten style.py. -* :ghpull:`14931`: Deprecate some obscure rcParam synonyms. -* :ghpull:`14947`: Fix inaccuracy re: backends in intro tutorial. -* :ghpull:`14904`: Fix typo in secondary_axis.py example. -* :ghpull:`14925`: Support passing spine bounds as single tuple. -* :ghpull:`14921`: DOC: Make abbreviation of versus consistent. -* :ghpull:`14739`: Improve indentation of Line2D properties in docstrings. -* :ghpull:`14923`: In examples, prefer buffer_rgba to print_to_buffer. -* :ghpull:`14908`: Make matplotlib.style.available sorted alphabetically. -* :ghpull:`13567`: Deprecate MovieWriterRegistry cache-dirtyness system. -* :ghpull:`14879`: Error out when unsupported kwargs are passed to Scale. -* :ghpull:`14512`: Logit scale, changes in LogitLocator and LogitFormatter -* :ghpull:`12415`: ENH: fig.set_size to allow non-inches units -* :ghpull:`13783`: Deprecate disable_internet. -* :ghpull:`14886`: Further simplify the flow of pdf text output. -* :ghpull:`14894`: Make slowness warning for legend(loc="best") more accurate. -* :ghpull:`14891`: Fix nightly test errors -* :ghpull:`14895`: Fix typos -* :ghpull:`14890`: Remove unused private helper method in mplot3d. -* :ghpull:`14872`: Unify text layout paths. -* :ghpull:`8183`: Allow array alpha for imshow -* :ghpull:`13832`: Vectorize handling of stacked/cumulative in hist(). -* :ghpull:`13630`: Simplify PolarAxes.can_pan. -* :ghpull:`14565`: Rewrite an argument check to _check_getitem -* :ghpull:`14875`: Cleanup afm module docstring. -* :ghpull:`14880`: Fix animation blitting for plots with shared axes -* :ghpull:`14870`: FT2Font.get_char_index never returns None. -* :ghpull:`13463`: Deprecate Locator.autoscale. -* :ghpull:`13724`: ENH: anti-alias down-sampled images -* :ghpull:`14848`: Clearer error message for plt.axis() -* :ghpull:`14660`: colorbar(label=None) should give an empty label -* :ghpull:`14654`: Cleanup of docstrings of scales -* :ghpull:`14868`: Update bar stacked example to directly manipulate axes. -* :ghpull:`14749`: Fix get_canvas_width_height() for pgf backend. -* :ghpull:`14776`: Make ExecutableUnavailableError -* :ghpull:`14843`: Don't try to cleanup CallbackRegistry during interpreter shutdown. -* :ghpull:`14849`: Improve tkagg icon resolution -* :ghpull:`14866`: changed all readme headings to verbs -* :ghpull:`13364`: Numpyfy tick handling code in Axis3D. -* :ghpull:`13642`: FIX: get_datalim for collection -* :ghpull:`14860`: Stopgap fix for pandas converters in tests. -* :ghpull:`6498`: Check canvas identity in Artist.contains. -* :ghpull:`14707`: Add titlecolor in rcParams -* :ghpull:`14853`: Fix typo in set_adjustable check. -* :ghpull:`14845`: More cleanups. -* :ghpull:`14809`: Clearer calls to ConnectionPatch. -* :ghpull:`14716`: Use str instead of string as type in docstrings -* :ghpull:`14338`: Simplify/pathlibify image_comparison. -* :ghpull:`8930`: timedelta formatter -* :ghpull:`14733`: Deprecate FigureFrameWx.statusbar & NavigationToolbar2Wx.statbar. -* :ghpull:`14713`: Unite masked and NaN plot examples -* :ghpull:`14576`: Let Axes3D share have_units, _on_units_changed with 2d axes. -* :ghpull:`14575`: Make ticklabel_format work both for 2D and 3D axes. -* :ghpull:`14834`: DOC: Webpage not formated correctly on gallery docs -* :ghpull:`14730`: Factor out common parts of wx event handlers. -* :ghpull:`14727`: Fix axes aspect for non-linear, non-log, possibly mixed-scale axes. -* :ghpull:`14835`: Only allow set_adjustable("datalim") for axes with standard data ratios. -* :ghpull:`14746`: Simplify Arrow constructor. -* :ghpull:`14752`: Doc changes to git setup -* :ghpull:`14732`: Deduplicate wx configure_subplots tool. -* :ghpull:`14715`: Use array-like in docs -* :ghpull:`14728`: More floating_axes cleanup. -* :ghpull:`14719`: Make Qt navtoolbar more robust against removal of either pan or zoom. -* :ghpull:`14695`: Various small simplifications -* :ghpull:`14745`: Replace Affine2D().scale(x, x) by Affine2D().scale(x). -* :ghpull:`14687`: Add missing spaces after commas in docs -* :ghpull:`14810`: Lighten icons of NavigationToolbar2QT on dark-themes -* :ghpull:`14786`: Deprecate axis_artist.BezierPath. -* :ghpull:`14750`: Misc. simplifications. -* :ghpull:`14807`: API change note on automatic blitting detection for backends -* :ghpull:`11004`: Deprecate smart_bounds handling in Axis and Spine -* :ghpull:`14785`: Kill some never-used attributes. -* :ghpull:`14723`: Cleanup some parameter descriptions in matplotlibrc.template -* :ghpull:`14808`: Small docstring updates -* :ghpull:`14686`: Inset orientation -* :ghpull:`14805`: Simplify text_layout example. -* :ghpull:`12052`: Make AxesImage.contains account for transforms -* :ghpull:`11860`: Let MovieFileWriter save temp files in a new dir -* :ghpull:`11423`: FigureCanvas Designer -* :ghpull:`10688`: Add legend handler and artist for FancyArrow -* :ghpull:`8321`: Added ContourSet clip_path kwarg and set_clip_path() method (#2369) -* :ghpull:`14641`: Simplify _process_plot_var_args. -* :ghpull:`14631`: Refactor from_levels_and_colors. -* :ghpull:`14790`: DOC:Add link to style examples in matplotlib.style documentation -* :ghpull:`14799`: Deprecate dates.mx2num. -* :ghpull:`14793`: Remove sudo tag in travis -* :ghpull:`14795`: Autodetect whether a canvas class supports blitting. -* :ghpull:`14794`: DOC: Update the documetation of homepage of website -* :ghpull:`14629`: Delete HTML build sources to save on artefact upload time -* :ghpull:`14792`: Fix spelling typos -* :ghpull:`14789`: Prefer Affine2D.translate to offset_transform in examples. -* :ghpull:`14783`: Cleanup mlab.detrend. -* :ghpull:`14791`: Make 'extended' and 'expanded' synonymous in font_manager -* :ghpull:`14787`: Remove axis_artist _update, which is always a noop. -* :ghpull:`14758`: Compiling C-ext with incorrect FreeType libs makes future compiles break -* :ghpull:`14763`: Deprecate math_symbol_table function directive -* :ghpull:`14762`: Decrease uses of get_canvas_width_height. -* :ghpull:`14748`: Cleanup demo_text_path. -* :ghpull:`14740`: Remove sudo tag in travis -* :ghpull:`14737`: Cleanup twin axes docstrings. -* :ghpull:`14729`: Small simplifications. -* :ghpull:`14726`: Trivial simplification to Axis3d._get_coord_info. -* :ghpull:`14718`: Add explanations for single character color names. -* :ghpull:`14710`: Pin pydocstyle<4.0 -* :ghpull:`14709`: Try to improve the readability and styling of matplotlibrc.template file -* :ghpull:`14278`: Inset axes bug and docs fix -* :ghpull:`14478`: MNT: protect from out-of-bounds data access at the c level -* :ghpull:`14569`: More deduplication of backend_tools. -* :ghpull:`14652`: Soft-deprecate transform_point. -* :ghpull:`14664`: Improve error reporting for scatter c as invalid RGBA. -* :ghpull:`14625`: Don't double-wrap in silent_list. -* :ghpull:`14689`: Update embedding_in_wx4 example. -* :ghpull:`14679`: Further simplify colormap reversal. -* :ghpull:`14667`: Move most of pytest's conf to conftest.py. -* :ghpull:`14632`: Remove reference to old Tk/Windows bug. -* :ghpull:`14673`: More shortening of setup.py prints. -* :ghpull:`14678`: Fix small typo -* :ghpull:`14680`: Format parameters in descriptions with emph instead of backticks -* :ghpull:`14674`: Simplify colormap reversal. -* :ghpull:`14672`: Artist tutorial fixes -* :ghpull:`14653`: Remove some unnecessary prints from setup.py. -* :ghpull:`14662`: Add a _check_getitem helper to go with _check_in_list/_check_isinstance. -* :ghpull:`14666`: Update IPython's doc link in Image tutorial -* :ghpull:`14671`: Improve readability of matplotlibrc.template -* :ghpull:`14665`: Fix a typo in pyplot tutorial -* :ghpull:`14616`: Use builtin round instead of np.round for scalars. -* :ghpull:`12554`: backend_template docs and fixes -* :ghpull:`14635`: Fix bug when setting negative limits and using log scale -* :ghpull:`14604`: Update hist() docstring following removal of normed kwarg. -* :ghpull:`14630`: Remove the private Tick._name attribute. -* :ghpull:`14555`: Coding guidelines concerning the API -* :ghpull:`14516`: Document and test _get_packed_offsets() -* :ghpull:`14628`: matplotlib > Matplotlib in devel docs -* :ghpull:`14627`: gitignore pip-wheel-metadta/ directory -* :ghpull:`14612`: Update some mplot3d docs. -* :ghpull:`14617`: Remove a Py2.4(!) backcompat fix. -* :ghpull:`14605`: Update hist2d() docstring. -* :ghpull:`13084`: When linking against libpng/zlib on Windows, use upstream lib names. -* :ghpull:`13685`: Remove What's new fancy example -* :ghpull:`14573`: Cleanup jpl_units. -* :ghpull:`14583`: Fix overly long lines in setupext. -* :ghpull:`14588`: Remove [status] suppress from setup.cfg. -* :ghpull:`14591`: Style fixes for secondary_axis. -* :ghpull:`14594`: DOC: Make temperature scale example use a closure for easier reusability -* :ghpull:`14447`: FIX: allow secondary axes minor locators to be set -* :ghpull:`14567`: Fix unicode_minus + usetex. -* :ghpull:`14351`: Remove some redundant check_in_list calls. -* :ghpull:`14550`: Restore thumbnail of usage guide -* :ghpull:`10222`: Use symlinks instead of copies for test result_images. -* :ghpull:`14267`: cbook docs cleanup -* :ghpull:`14556`: Improve @deprecated's docstring. -* :ghpull:`14557`: Clarify how to work with threads. -* :ghpull:`14545`: In contributing.rst, encourage kwonly args and minimizing public APIs. -* :ghpull:`14533`: Misc. style fixes. -* :ghpull:`14542`: Move plot_directive doc to main API index. -* :ghpull:`14499`: Improve custom figure example -* :ghpull:`14543`: Remove the "Developing a new backend" section from contributing guide. -* :ghpull:`14540`: Simplify backend switching in plot_directive. -* :ghpull:`14539`: Don't overindent enumerated list in plot_directive docstring. -* :ghpull:`14537`: Slightly tighten the Bbox API. -* :ghpull:`14223`: Rewrite intro to usage guide. -* :ghpull:`14495`: Numpydocify axes_artist.py -* :ghpull:`14529`: mpl_toolkits style fixes. -* :ghpull:`14528`: mathtext style fixes. -* :ghpull:`13536`: Make unit converters also handle instances of subclasses. -* :ghpull:`13730`: Include FreeType error codes in FreeType exception messages. -* :ghpull:`14500`: Fix pydocstyle D403 (First word of the first line should be properly capitalized) in examples -* :ghpull:`14506`: Simplify Qt tests. -* :ghpull:`14513`: More fixes to pydocstyle D403 (First word capitalization) -* :ghpull:`14496`: Fix pydocstyle D208 (Docstring is over-indented) -* :ghpull:`14347`: Deprecate rcsetup.validate_path_exists. -* :ghpull:`14383`: Remove the ````package_data.dlls```` setup.cfg entry. -* :ghpull:`14346`: Simplify various validators in rcsetup. -* :ghpull:`14366`: Move test_rcparams test files inline into test_rcparams.py. -* :ghpull:`14401`: Assume that mpl-data is in its standard location. -* :ghpull:`14454`: Simplify implementation of svg.image_inline. -* :ghpull:`14470`: Add _check_isinstance helper. -* :ghpull:`14479`: fstringify backend_ps more. -* :ghpull:`14484`: Support unicode minus with ps.useafm. -* :ghpull:`14494`: Style fixes. -* :ghpull:`14465`: Docstrings cleanups. -* :ghpull:`14466`: Let SecondaryAxis inherit get_tightbbox from _AxesBase. -* :ghpull:`13940`: Some more f-strings. -* :ghpull:`14379`: Remove unnecessary uses of unittest.mock. -* :ghpull:`14483`: Improve font weight guessing. -* :ghpull:`14419`: Fix test_imshow_pil on Windows. -* :ghpull:`14460`: canvas.blit() already defaults to blitting the full figure canvas. -* :ghpull:`14462`: Register timeout pytest marker. -* :ghpull:`14414`: FEATURE: Alpha channel in Gouraud triangles in the pdf backend -* :ghpull:`13659`: Clarify behavior of the 'tight' kwarg to autoscale/autoscale_view. -* :ghpull:`13901`: Only test png output for mplot3d. -* :ghpull:`13338`: Replace list.extend by star-expansion or other constructs. -* :ghpull:`14448`: Misc doc style cleanup -* :ghpull:`14310`: Update to Bounding Box for Qt5 FigureCanvasATAgg.paintEvent() -* :ghpull:`14380`: Inline $MPLLOCALFREETYPE/$PYTEST_ADDOPTS/$NPROC in .travis.yml. -* :ghpull:`14413`: MAINT: small improvements to the pdf backend -* :ghpull:`14452`: MAINT: Minor cleanup to make functions more self consisntent -* :ghpull:`14441`: Misc. docstring cleanups. -* :ghpull:`14440`: Interpolations example -* :ghpull:`14402`: Prefer ``mpl.get_data_path()``, and support Paths in FontProperties. -* :ghpull:`14420`: MAINT: Upgrade pytest again -* :ghpull:`14423`: Fix docstring of subplots(). -* :ghpull:`14410`: Use aspect=1, not aspect=True. -* :ghpull:`14412`: MAINT: Don't install pytest 4.6.0 on Travis -* :ghpull:`14377`: Rewrite assert np.* tests to use numpy.testing -* :ghpull:`14399`: Improve warning for case where data kwarg entry is ambiguous. -* :ghpull:`14390`: Cleanup docs of bezier -* :ghpull:`14400`: Fix to_rgba_array() for empty input -* :ghpull:`14308`: Small clean to SymmetricalLogLocator -* :ghpull:`14311`: travis: add c code coverage measurements -* :ghpull:`14393`: Remove remaining unicode-strings markers. -* :ghpull:`14391`: Remove explicit inheritance from object -* :ghpull:`14343`: acquiring and releaseing keypresslock when textbox is being activated -* :ghpull:`14353`: Register flaky pytest marker. -* :ghpull:`14373`: Properly hide __has_include to support C++<17 compilers. -* :ghpull:`14378`: Remove setup_method -* :ghpull:`14368`: Finish removing jquery from the repo. -* :ghpull:`14360`: Deprecate ``boxplot(..., whis="range")``. -* :ghpull:`14376`: Simplify removal of figure patch from bbox calculations. -* :ghpull:`14363`: Make is_natively_supported private. -* :ghpull:`14330`: Remove remaining unittest.TestCase uses -* :ghpull:`13663`: Kill the PkgConfig singleton in setupext. -* :ghpull:`13067`: Simplify generation of error messages for missing libpng/freetype. -* :ghpull:`14358`: DOC boxplot ``whis`` parameter -* :ghpull:`14014`: Disallow figure argument for pyplot.subplot() and Figure.add_subplot() -* :ghpull:`14350`: Use cbook._check_in_list more often. -* :ghpull:`14348`: Cleanup markers.py. -* :ghpull:`14345`: Use importorskip for tests depending on pytz. -* :ghpull:`14170`: In setup.py, inline the packages that need to be installed into setup(). -* :ghpull:`14332`: Use raw docstrings instead of escaping backslashes -* :ghpull:`14336`: Enforce pydocstyle D412 -* :ghpull:`14144`: Deprecate the 'warn' parameter to matplotlib.use(). -* :ghpull:`14328`: Remove explicit inheritance from object -* :ghpull:`14035`: Improve properties formatting in interpolated docstrings. -* :ghpull:`14018`: pep8ing. -* :ghpull:`13542`: Move {setup,install}_requires from setupext.py to setup.py. -* :ghpull:`13670`: Simplify the logic of axis(). -* :ghpull:`14046`: Deprecate checkdep_ps_distiller. -* :ghpull:`14236`: Simplify StixFonts.get_sized_alternatives_for_symbol. -* :ghpull:`14101`: Shorten _ImageBase._make_image. -* :ghpull:`14246`: Deprecate public use of makeMappingArray -* :ghpull:`13740`: Deprecate plotfile. -* :ghpull:`14216`: Walk the artist tree when preparing for saving with tight bbox. -* :ghpull:`14305`: Small grammatical error. -* :ghpull:`14104`: Factor out retrieval of data relative to datapath -* :ghpull:`14016`: pep8ify backends. -* :ghpull:`14299`: Fix #13711 by importing cbook. -* :ghpull:`14244`: Remove APIs deprecated in mpl3.0. -* :ghpull:`14068`: Alternative fix for passing iterator as frames to FuncAnimation -* :ghpull:`13711`: Deprecate NavigationToolbar2Tk.set_active. -* :ghpull:`14280`: Simplify validate_markevery logic. -* :ghpull:`14273`: pep8ify a couple of variable names. -* :ghpull:`14115`: Reorganize scatter arguments parsing. -* :ghpull:`14271`: Replace some uses of np.iterable -* :ghpull:`14257`: Changing cmap(np.nan) to 'bad' value rather than 'under' value -* :ghpull:`14259`: Deprecate string as color sequence -* :ghpull:`13506`: Change colorbar for contour to have the proper axes limits... -* :ghpull:`13494`: Add colorbar annotation example plot to gallery -* :ghpull:`14266`: Make matplotlib.figure.AxesStack private -* :ghpull:`14166`: Shorten usage of ``@image_comparison``. -* :ghpull:`14240`: Merge up 31x -* :ghpull:`14242`: Avoid a buffer copy in PillowWriter. -* :ghpull:`9672`: Only set the wait cursor if the last draw was >1s ago. -* :ghpull:`14224`: Update plt.show() doc -* :ghpull:`14218`: Use stdlib mimetypes instead of hardcoding them. -* :ghpull:`14082`: In tk backend, don't try to update mouse position after resize. -* :ghpull:`14084`: Check number of positional arguments passed to quiver() -* :ghpull:`14214`: Fix some docstring style issues. -* :ghpull:`14201`: Fix E124 flake8 violations (closing bracket indentation). -* :ghpull:`14096`: Consistently use axs to refer to a set of Axes -* :ghpull:`14204`: Fix various flake8 indent problems. -* :ghpull:`14205`: Obey flake8 "don't assign a lambda, use a def". -* :ghpull:`14198`: Remove unused imports -* :ghpull:`14173`: Prepare to change the default pad for AxesDivider.append_axes. -* :ghpull:`13738`: Fix TypeError when plotting stacked bar chart with decimal -* :ghpull:`14151`: Clarify error with usetex when cm-super is not installed. -* :ghpull:`14107`: Feature: draw percentiles in violinplot -* :ghpull:`14172`: Remove check_requirements from setupext. -* :ghpull:`14158`: Fix test_lazy_imports in presence of $MPLBACKEND or matplotlibrc. -* :ghpull:`14157`: Isolate nbagg test from user ipython profile. -* :ghpull:`14147`: Dedent overindented list in example docstring. -* :ghpull:`14134`: Deprecate the dryrun parameter to print_foo(). -* :ghpull:`14145`: Remove warnings handling for fixed bugs. -* :ghpull:`13977`: Always import pyplot when calling matplotlib.use(). -* :ghpull:`14131`: Make test suite fail on warnings. -* :ghpull:`13593`: Only autoscale_view() when needed, not after every plotting call. -* :ghpull:`13902`: Add support for metadata= and pil_kwargs= in imsave(). -* :ghpull:`14140`: Avoid backslash-quote by changing surrounding quotes. -* :ghpull:`14132`: Move some toplevel strings into the only functions that use them. -* :ghpull:`13708`: Annotation.contains shouldn't consider the text+arrow's joint bbox. -* :ghpull:`13980`: Don't let margins expand polar plots to negative radii by default. -* :ghpull:`14075`: Remove uninformative entries from glossary. -* :ghpull:`14002`: Allow pandas DataFrames through norms -* :ghpull:`14114`: Allow SVG Text-as-Text to Use Data Coordinates -* :ghpull:`14120`: Remove mention of $QT_API in matplotlibrc example. -* :ghpull:`13878`: Style fixes for floating_axes. -* :ghpull:`14108`: Deprecate FigureCanvasMac.invalidate in favor of draw_idle. -* :ghpull:`13879`: Clarify handling of "extreme" values in FloatingAxisArtistHelper. -* :ghpull:`5602`: Automatic downsampling of images. -* :ghpull:`14112`: Remove old code path in layout.html -* :ghpull:`13959`: Scatter: make "c" and "s" argument handling more consistent. -* :ghpull:`14110`: Simplify scatter_piecharts example. -* :ghpull:`14111`: Trivial cleanups. -* :ghpull:`14085`: Simplify get_current_fig_manager(). -* :ghpull:`14083`: Deprecate FigureCanvasBase.draw_cursor. -* :ghpull:`14089`: Cleanup bar_stacked, bar_unit_demo examples. -* :ghpull:`14063`: Add pydocstyle checks to flake8 -* :ghpull:`14077`: Fix tick label wobbling in animated Qt example -* :ghpull:`14070`: Cleanup some pyplot docstrings. -* :ghpull:`6280`: Added ability to offset errorbars when using errorevery. -* :ghpull:`13679`: Fix passing iterator as frames to FuncAnimation -* :ghpull:`14023`: Improve Unicode minus example -* :ghpull:`14041`: Pretty-format subprocess logs. -* :ghpull:`14038`: Cleanup path.py docstrings. -* :ghpull:`13701`: Small cleanups. -* :ghpull:`14020`: Better error message when trying to use Gtk3Agg backend without cairo -* :ghpull:`14021`: Fix ax.legend Returns markup -* :ghpull:`13986`: Support RGBA for quadmesh mode of pcolorfast. -* :ghpull:`14009`: Deprecate compare_versions. -* :ghpull:`14010`: Deprecate get_home() -* :ghpull:`13932`: Remove many unused variables. -* :ghpull:`13854`: Cleanup contour.py. -* :ghpull:`13866`: Switch PyArg_ParseTupleAndKeywords from "es" to "s". -* :ghpull:`13945`: Make unicode_minus example more focused. -* :ghpull:`13876`: Deprecate factor=None in axisartist. -* :ghpull:`13929`: Better handle deprecated rcParams. -* :ghpull:`13851`: Deprecate setting Axis.major.locator to non-Locator; idem for Formatters -* :ghpull:`13938`: numpydocify quiverkey. -* :ghpull:`13936`: Pathlibify animation. -* :ghpull:`13984`: Allow setting tick colour on 3D axes -* :ghpull:`13987`: Deprecate mlab.{apply_window,stride_repeat}. -* :ghpull:`13983`: Fix locator/formatter setting when removing shared Axes -* :ghpull:`13957`: Remove many unused variables in tests. -* :ghpull:`13981`: Test cleanups. -* :ghpull:`13970`: Check vmin/vmax are valid when doing inverse in LogNorm -* :ghpull:`13978`: Make normalize_kwargs more convenient for third-party use. -* :ghpull:`13972`: Remove _process_plot_var_args.set{line,patch}_props. -* :ghpull:`13795`: Make _warn_external correctly report warnings arising from tests. -* :ghpull:`13885`: Deprecate axisartist.grid_finder.GridFinderBase. -* :ghpull:`13913`: Fix string numbers in to_rgba() and is_color_like() -* :ghpull:`13935`: Deprecate the useless switch_backend_warn parameter to matplotlib.test. -* :ghpull:`13952`: Cleanup animation tests. -* :ghpull:`13942`: Make Cursors an (Int)Enum. -* :ghpull:`13953`: Unxfail a now fixed test in test_category. -* :ghpull:`13925`: Fix passing Path to ps backend when text.usetex rc is True. -* :ghpull:`13943`: Don't crash on str(figimage(...)). -* :ghpull:`13944`: Document how to support unicode minus in pgf backend. -* :ghpull:`13802`: New rcparam to set default axes title location -* :ghpull:`13855`: ``a and b or c`` -> ``b if a else c`` -* :ghpull:`13923`: Correctly handle invalid PNG metadata. -* :ghpull:`13926`: Suppress warnings in tests. -* :ghpull:`13920`: Style fixes for category.py. -* :ghpull:`13889`: Shorten docstrings by removing unneeded :class:/:func: + rewordings. -* :ghpull:`13911`: Fix joinstyles example -* :ghpull:`13917`: Faster categorical tick formatter. -* :ghpull:`13918`: Make matplotlib.testing assume pytest by default, not nose. -* :ghpull:`13894`: Check for positive number of rows and cols -* :ghpull:`13895`: Remove unused setupext.is_min_version. -* :ghpull:`13886`: Shorten Figure.set_size_inches. -* :ghpull:`13859`: Ensure figsize is positive finite -* :ghpull:`13877`: ``zeros_like(x) + y`` -> ``full_like(x, y)`` -* :ghpull:`13875`: Style fixes for grid_helper_curvelinear. -* :ghpull:`13873`: Style fixes to grid_finder. -* :ghpull:`13782`: Don't access internet during tests. -* :ghpull:`13833`: Some more usage of _check_in_list. -* :ghpull:`13834`: Cleanup FancyArrowPatch docstring -* :ghpull:`13811`: Generate Figure method wrappers via boilerplate.py -* :ghpull:`13797`: Move sphinxext test to matplotlib.tests like everyone else. -* :ghpull:`13770`: broken_barh docstring -* :ghpull:`13757`: Remove mention of "enabling fontconfig support". -* :ghpull:`13454`: Add "c" as alias for "color" for Collections -* :ghpull:`13756`: Reorder the logic of _update_title_position. -* :ghpull:`13744`: Restructure boilerplate.py -* :ghpull:`13369`: Use default colours for examples -* :ghpull:`13697`: Delete pyplot_scales example. -* :ghpull:`13726`: Clarify a bit the implementation of blend_hsv. -* :ghpull:`13731`: Check for already running QApplication in Qt embedding example. -* :ghpull:`13736`: Deduplicate docstrings and validation for set_alpha. -* :ghpull:`13737`: Remove duplicated methods in FixedAxisArtistHelper. -* :ghpull:`13721`: Kill pyplot docstrings that get overwritten by @docstring.copy. -* :ghpull:`13690`: Cleanup hexbin. -* :ghpull:`13683`: Remove axes border for examples that list styles -* :ghpull:`13280`: Add SubplotSpec.add_subplot. -* :ghpull:`11387`: Deprecate Axes3D.w_{x,y,z}axis in favor of .{x,y,z}axis. -* :ghpull:`13671`: Suppress some warnings in tests. -* :ghpull:`13657`: DOC: fail the doc build on errors, but keep going to end -* :ghpull:`13647`: Fix FancyArrowPatch joinstyle -* :ghpull:`13637`: BLD: parameterize python_requires -* :ghpull:`13633`: plot_directive: Avoid warning if plot_formats doesn't contain 'png' -* :ghpull:`13629`: Small example simplification. -* :ghpull:`13620`: Improve watermark example -* :ghpull:`13589`: Kill Axes._connected. -* :ghpull:`13428`: free cart pendulum animation example -* :ghpull:`10487`: fixed transparency bug -* :ghpull:`13551`: Fix IndexError for pyplot.legend() when plotting empty bar chart with label -* :ghpull:`13524`: Cleanup docs for GraphicsContextBase.{get,set}_dashes. -* :ghpull:`13556`: Cleanup warnings handling in tests. -* :ghpull:`8100`: Deprecate MAXTICKS, Locator.raise_if_exceeds. -* :ghpull:`13534`: More followup to autoregistering 3d axes. -* :ghpull:`13327`: pcolorfast simplifications. -* :ghpull:`13532`: More use of cbook._check_in_list. -* :ghpull:`13520`: Register 3d projection by default. -* :ghpull:`13394`: Deduplicate some code between floating_axes and grid_helper_curvelinear. -* :ghpull:`13527`: Make SubplotSpec.num2 never None. -* :ghpull:`12249`: Replaced noqa-comments by using Axes3D.name instead of '3d' for proje… - -Issues (125): - -* :ghissue:`16487`: Add link to blog to front page -* :ghissue:`16478`: The bottom parameter of plt.hist() shifts the data as well, not just the baseline -* :ghissue:`16280`: SymLogNorm colorbar incorrect on master -* :ghissue:`16448`: Bad interaction between shared axes and pcolormesh sticky edges -* :ghissue:`16451`: InvertedLogTransform inherits from deprecated base -* :ghissue:`16420`: Error when adding colorbar to pcolormesh of a boolean array -* :ghissue:`16114`: Prose error on website (first paragraph) -* :ghissue:`8291`: Unable to pickle.load(fig) with mpl in jupyter notebook -* :ghissue:`16173`: Constrained_layout creates extra axes when used with subgridspec -* :ghissue:`16127`: nbformat 5.0.0 missing schema files -* :ghissue:`15849`: Using pandas.Timestamp in blended coordinate system of ax.annotate. -* :ghissue:`6015`: scatterplot axis autoscale fails for small data values -* :ghissue:`15806`: 3.2.0 may break some Cartopy tests -* :ghissue:`15852`: Lasso selector does not show in Jupyter notebook -* :ghissue:`15820`: Show incomplete tick labels when using mixed chinese and english characters -* :ghissue:`15770`: DOCS 2D Line label option ``_nolegend_`` is not documented -* :ghissue:`15332`: Type promotion error with datetime bins in hist -* :ghissue:`15611`: BUG: Qt5Agg window size regression -* :ghissue:`7130`: Incorrect autoscaling of polar plot limits after scatter -* :ghissue:`15576`: Multi-line ticks cause cut-offs -* :ghissue:`8609`: Clipped tick labels -* :ghissue:`15517`: antialiased image check seems wrong when used on zoomed image -* :ghissue:`13400`: Qt Embedding w/ Spyder -* :ghissue:`14724`: drawstyle parameter of line needs example -* :ghissue:`13619`: Importing matplotlib.animation prevents python script from executing in the background -* :ghissue:`14270`: Secondary axis called with [0, 1] might produce exceptions in case these are invalid data -* :ghissue:`15417`: Why is smart_bounds() being deprecated? -* :ghissue:`9778`: Blanks in colorbar just inside of 'extend' arrowpoints when using AxesGrid -* :ghissue:`15336`: DivergingNorm is a misleading name -* :ghissue:`15399`: OSError: [Errno 86] Bad CPU type in executable: 'convert' on import matplotlib.animation -* :ghissue:`15109`: matplotlib.collections inheritance diagram small/blurry -* :ghissue:`15331`: Log Scale: FloatingPointError: underflow encountered in power -* :ghissue:`15251`: Large memory growth with log scaling and linear ticking -* :ghissue:`15247`: Colorbar tick placement issues with ImageGrid and LogNorm -* :ghissue:`15306`: Footer off centre -* :ghissue:`13485`: Matplotlib NavigationToolbar2Tk disappears when reducing window size -* :ghissue:`15232`: DOC: Automatic default rcParam expansion creates misleading sentences -* :ghissue:`14141`: setting spine position on a log plot fails -* :ghissue:`15138`: Make plt.style.use accept path-like objects in addition to string -* :ghissue:`14207`: Check if point is in path or not by contains_point -* :ghissue:`13591`: Style issues when building the docs with (future) Sphinx 2.0 -* :ghissue:`8089`: Using Minute Locator to set x-axis ticks exceeds Locator.MAXTICKS -* :ghissue:`15075`: sphinxext.missing_references does not specify if it supports parallel file read. -* :ghissue:`10963`: Replace \pgfimage by \includegraphics in PGF backend -* :ghissue:`15156`: ax.text fails with positional argument error -* :ghissue:`14439`: hist() fails when all data points are np.nan -* :ghissue:`15042`: How to handle sphinx nitpicky mode -* :ghissue:`14060`: quiver(C=...) argument is not reasonably validated -* :ghissue:`11335`: TST: testing not catching bad escape sequences in doc strings -* :ghissue:`15040`: Wrong figure window size after calling fig.set_size_inches() repeatedly -* :ghissue:`15100`: Issue with creating QApplication in QT backend -* :ghissue:`14887`: kerning seems generally wrong -* :ghissue:`14800`: default tick formatter could switch to scientific notation earlier -* :ghissue:`14503`: Add a test for #14451 -* :ghissue:`14907`: ConnectionPatch across axes needs to be excluded from layout management -* :ghissue:`14911`: Removing a shared axes via ``ax.remove()`` leads to an error. -* :ghissue:`12462`: cbar.add_lines should allow manually adding lines, not just contour sets -* :ghissue:`14796`: Show user how to use Agg buffer in example -* :ghissue:`14883`: MinSize not respected using wx backend causes wxAssertionError. Bug fix included. -* :ghissue:`15014`: Wrapping of text adds leading newline character if first word is long -* :ghissue:`14918`: constrained_layout fails with hidden axis... -* :ghissue:`14981`: Barplot call crashes when called with yscale="log" and bins with h=0 -* :ghissue:`4621`: Default bottom of Stepfilled histograms should be set according to ymin -* :ghissue:`15030`: Doc build broken -* :ghissue:`8093`: set_ylim not working with plt.axis('equal') -* :ghissue:`6055`: Serious problems on the axes documentation -* :ghissue:`9979`: Axis limits are set badly with small values in scatter(). -* :ghissue:`10842`: Text bbox empty dict should be ignored -* :ghissue:`13698`: The default logit minor locator should not display tick labels -* :ghissue:`14878`: plt.yscale doesn't throw warning with invalid kwarg -* :ghissue:`5619`: Symlog linear region -* :ghissue:`14564`: Broken string interpolation -* :ghissue:`13668`: Add better error message to plt.axis() -* :ghissue:`14563`: colorbar label prints "None" when label=None -* :ghissue:`13660`: Closing a matplotlib figure with event handling occasionally causes “TypeError: isinstance()” -* :ghissue:`13033`: 'NoneType' has no attribute '_alive' when using plt in a context manager -* :ghissue:`13891`: Blurry app icon on macOS -* :ghissue:`14656`: Axes title default color -* :ghissue:`14831`: DOC: Webpage not formated correctly on gallery docs -* :ghissue:`13819`: Aspect ratio for not so common scales -* :ghissue:`8878`: Setting aspect ratio for semi-log plots -* :ghissue:`4900`: UnboundLocalError: local variable 'aspect_scale_mode' referenced before assignment -* :ghissue:`14608`: Issue with using plt.axis('equal') with plt.polar(theta,r) plot -* :ghissue:`12893`: [PyQt] NavigationToolbar2QT : Error when removing tools -* :ghissue:`14670`: indicate_inset rectangles is sensitive to axis-flipping -* :ghissue:`14362`: Add link to style examples in matplotlib.style documentation -* :ghissue:`6295`: restore_region is not documented as a method of FigureCanvas -* :ghissue:`14754`: Better pointer to dev docs on website -* :ghissue:`14744`: Savefig svg fails with "Cannot cast array data from dtype('`__ + +The following 164 authors contributed 3455 commits. + +* Abhinav Sagar +* Abhinuv Nitin Pitale +* Adam Gomaa +* Akshay Nair +* Alex Rudy +* Alexander Rudy +* Antony Lee +* Ao Liu (frankliuao) +* Ardie Orden +* Ashley Whetter +* Ben Root +* Benjamin Bengfort +* Benjamin Congdon +* Bharat123rox +* Bingyao Liu +* Brigitta Sipocz +* Bruno Pagani +* brut +* Carsten +* Carsten Schelp +* chaoyi1 +* Cho Yin Yong +* Chris Barnes +* Christer Jensen +* Christian Brodbeck +* Christoph Pohl +* chuanzhu xu +* Colin +* Cong Ma +* dabana +* DanielMatu +* David Chudzicki +* David Stansby +* Deng Tian +* depano.carlos@gmail.com +* djdt +* donchanee +* Dora Fraeman Caswell +* Elan Ernest +* Elliott Sales de Andrade +* Emlyn Price +* Eric Firing +* Eric Wieser +* Federico Ariza +* Filipe Fernandes +* fourpoints +* fredrik-1 +* Gazing +* Greg Lucas +* hannah +* Harshal Prakash Patankar +* Ian Hincks +* Ian Thomas +* ilopata1 +* ImportanceOfBeingErnest +* Jacobson Okoro +* James A. Bednar +* Jarrod Millman +* Javad +* jb-leger +* Jean-Benoist Leger +* jfbu +* joaonsg +* Jody Klymak +* Joel Frederico +* Johannes H. Jensen +* Johnny Gill +* Jonas Camillus Jeppesen +* Jorge Moraleda +* Joscha Reimer +* Joseph Albert +* Jouni K. Seppänen +* Joy Bhalla +* Juanjo Bazán +* Julian Mehne +* kolibril13 +* krishna katyal +* ksunden +* Kyle Sunden +* Larry Bradley +* lepuchi +* luftek +* Maciej Dems +* Maik Riechert +* Marat K +* Mark Wolf +* Mark Wolfman +* Matte +* Matthias Bussonnier +* Matthias Geier +* MatthieuDartiailh +* Max Chen +* Max Humber +* Max Shinn +* MeeseeksMachine +* Michael Droettboom +* Mingkai Dong +* MinRK +* miquelastein +* Molly Rossow +* Nathan Goldbaum +* nathan78906 +* Nelle Varoquaux +* Nick White +* Nicolas Courtemanche +* Nikita Kniazev +* njwhite +* O. Castany +* Oliver Natt +* Olivier +* Om Sitapara +* omsitapara23 +* Oriol (Prodesk) +* Oriol Abril +* Patrick Feiring +* Patrick Shriwise +* PatrickFeiring +* Paul +* Paul Hobson +* Paul Hoffman +* Paul Ivanov +* Peter Schutt +* pharshalp +* Phil Elson +* Philippe Pinard +* Rebecca W Perry +* ResidentMario +* Richard Ji-Cathriner +* RoryIAngus +* Ryan May +* S. Fukuda +* Samesh +* Samesh Lakhotia +* sasoripathos +* SBCV +* Sebastian Bullinger +* Sergey Royz +* Siddhesh Poyarekar +* Simon Legner +* SojiroFukuda +* Steve Dower +* Taras +* Ted Drain +* teddyrendahl +* Thomas A Caswell +* Thomas Hisch +* Thomas Robitaille +* Till Hoffmann +* tillahoffmann +* Tim Hoffmann +* Tom Flannaghan +* Travis CI +* V. Armando Solé +* Vincent L.M. Mazoyer +* Viraj Mohile +* Wafa Soofi +* Warren Weckesser +* y1thof +* yeo +* Yong Cho Yin +* Yuya +* Zhili (Jerry) Pan +* zhoubecky +* Zulko + +GitHub issues and pull requests: + +Pull Requests (839): + +* :ghpull:`16626`: Updated Readme + Setup.py for PyPa +* :ghpull:`16627`: ci: Restore nuget install step on Azure for v3.2.x. +* :ghpull:`16625`: v3.2.x: Make Azure use local FreeType. +* :ghpull:`16622`: Backport PR #16613 on branch v3.2.x (Fix edge-case in preprocess_data, if label_namer is optional and unset.) +* :ghpull:`16613`: Fix edge-case in preprocess_data, if label_namer is optional and unset. +* :ghpull:`16612`: Backport PR #16605: CI: tweak the vm images we use on azure +* :ghpull:`16611`: Backport PR #16585 on branch v3.2.x (Fix _preprocess_data for Py3.9.) +* :ghpull:`16605`: CI: tweak the vm images we use on azure +* :ghpull:`16585`: Fix _preprocess_data for Py3.9. +* :ghpull:`16541`: Merge pull request #16404 from jklymak/fix-add-base-symlognorm +* :ghpull:`16542`: Backport PR #16006: Ignore pos in StrCategoryFormatter.__call__ to di… +* :ghpull:`16543`: Backport PR #16532: Document default value of save_count parameter in… +* :ghpull:`16532`: Document default value of save_count parameter in FuncAnimation +* :ghpull:`16526`: Backport PR #16480 on v.3.2.x: Re-phrase doc for bottom kwarg to hist +* :ghpull:`16404`: FIX: add base kwarg to symlognor +* :ghpull:`16518`: Backport PR #16502 on branch v3.2.x (Document theta getters/setters) +* :ghpull:`16519`: Backport PR #16513 on branch v3.2.x (Add more FreeType tarball hashes.) +* :ghpull:`16513`: Add more FreeType tarball hashes. +* :ghpull:`16502`: Document theta getters/setters +* :ghpull:`16506`: Backport PR #16505 on branch v3.2.x (Add link to blog to front page) +* :ghpull:`16505`: Add link to blog to front page +* :ghpull:`16480`: Re-phrase doc for bottom kwarg to hist +* :ghpull:`16494`: Backport PR #16490 on branch v3.2.x (Fix some typos on the front page) +* :ghpull:`16489`: Backport PR #16272 on branch v3.2.x (Move mplot3d autoregistration api changes to 3.2.) +* :ghpull:`16490`: Fix some typos on the front page +* :ghpull:`16465`: Backport PR #16450 on branch v3.2.x (Fix interaction between sticky_edges and shared axes.) +* :ghpull:`16466`: Backport PR #16392: FIX colorbars for Norms that do not have a scale. +* :ghpull:`16392`: FIX colorbars for Norms that do not have a scale. +* :ghpull:`16450`: Fix interaction between sticky_edges and shared axes. +* :ghpull:`16453`: Backport PR #16452 on branch v3.2.x (Don't make InvertedLogTransform inherit from deprecated base class.) +* :ghpull:`16452`: Don't make InvertedLogTransform inherit from deprecated base class. +* :ghpull:`16436`: Backport PR #16435 on branch v3.2.x (Reword intro to colors api docs.) +* :ghpull:`16435`: Reword intro to colors api docs. +* :ghpull:`16399`: Backport PR #16396 on branch v3.2.x (font_manager docs cleanup.) +* :ghpull:`16396`: font_manager docs cleanup. +* :ghpull:`16397`: Backport PR #16394 on branch v3.2.x (Mark inkscape 1.0 as unsupported (at least for now).) +* :ghpull:`16394`: Mark inkscape 1.0 as unsupported (at least for now). +* :ghpull:`16286`: Fix cbars for different norms +* :ghpull:`16385`: Backport PR #16226 on branch v3.2.x: Reorganize intro section on main page +* :ghpull:`16383`: Backport PR #16379 on branch v3.2.x (FIX: catch on message content, not module) +* :ghpull:`16226`: Reorganize intro section on main page +* :ghpull:`16364`: Backport PR #16344 on branch v3.2.x (Cast vmin/vmax to floats before nonsingular-expanding them.) +* :ghpull:`16344`: Cast vmin/vmax to floats before nonsingular-expanding them. +* :ghpull:`16360`: Backport PR #16347 on branch v3.2.x (FIX: catch warnings from pandas in cbook._check_1d) +* :ghpull:`16357`: Backport PR #16330 on branch v3.2.x (Clearer signal handling) +* :ghpull:`16349`: Backport PR #16255 on branch v3.2.x (Move version info to sidebar) +* :ghpull:`16346`: Backport PR #16298 on branch v3.2.x (Don't recursively call draw_idle when updating artists at draw time.) +* :ghpull:`16331`: Backport PR #16308 on branch v3.2.x (CI: Use Ubuntu Bionic compatible package names) +* :ghpull:`16332`: Backport PR #16308 on v3.2.x: CI: Use Ubuntu Bionic compatible package names +* :ghpull:`16324`: Backport PR #16323 on branch v3.2.x (Add sphinx doc for Axis.axis_name.) +* :ghpull:`16325`: Backport PR #15462 on v3.2.x: Simplify azure setup. +* :ghpull:`16323`: Add sphinx doc for Axis.axis_name. +* :ghpull:`16321`: Backport PR #16311 on branch v3.2.x (don't override non-Python signal handlers) +* :ghpull:`16308`: CI: Use Ubuntu Bionic compatible package names +* :ghpull:`16306`: Backport PR #16300 on branch v3.2.x (Don't default to negative radii in polar plot.) +* :ghpull:`16305`: Backport PR #16250 on branch v3.2.x (Fix zerolen intersect) +* :ghpull:`16300`: Don't default to negative radii in polar plot. +* :ghpull:`16278`: Backport PR #16273 on branch v3.2.x (DOC: Changing the spelling of co-ordinates.) +* :ghpull:`16260`: Backport PR #16259 on branch v3.2.x (TST: something changed in pytest 5.3.3 that breaks our qt fixtures) +* :ghpull:`16259`: TST: something changed in pytest 5.3.3 that breaks our qt fixtures +* :ghpull:`16238`: Backport PR #16235 on branch v3.2.x (FIX: AttributeError in TimerBase.start) +* :ghpull:`16211`: DOC: ValidateInterval was deprecated in 3.2, not 3.1 +* :ghpull:`16224`: Backport PR #16223 on branch v3.2.x (Added DNA Features Viewer description + screenshot in docs/thirdparty/) +* :ghpull:`16223`: Added DNA Features Viewer description + screenshot in docs/thirdparty/ +* :ghpull:`16222`: Backport PR #16212 on branch v3.2.x (Fix deprecation from #13544) +* :ghpull:`16212`: Fix deprecation from #13544 +* :ghpull:`16207`: Backport PR #16189 on branch v3.2.x (MNT: set default canvas when un-pickling) +* :ghpull:`16189`: MNT: set default canvas when un-pickling +* :ghpull:`16179`: Backport PR #16175: FIX: ignore axes that aren't visible +* :ghpull:`16175`: FIX: ignore axes that aren't visible +* :ghpull:`16168`: Backport PR #16166 on branch v3.2.x (Add badge for citing 3.1.2) +* :ghpull:`16148`: Backport PR #16128 on branch v3.2.x (CI: Do not use nbformat 5.0.0/5.0.1 for testing) +* :ghpull:`16145`: Backport PR #16053 on branch v3.2.x (Fix v_interval setter) +* :ghpull:`16128`: CI: Do not use nbformat 5.0.0/5.0.1 for testing +* :ghpull:`16135`: Backport PR #16112 on branch v3.2.x (CI: Fail when failed to install dependencies) +* :ghpull:`16132`: Backport PR #16126 on branch v3.2.x (TST: test_fork: Missing join) +* :ghpull:`16124`: Backport PR #16105 on branch v3.2.x (Fix legend dragging.) +* :ghpull:`16122`: Backport PR #16113 on branch v3.2.x (Renderer Graphviz inheritance diagrams as svg) +* :ghpull:`16105`: Fix legend dragging. +* :ghpull:`16113`: Renderer Graphviz inheritance diagrams as svg +* :ghpull:`16112`: CI: Fail when failed to install dependencies +* :ghpull:`16119`: Backport PR #16065 on branch v3.2.x (Nicer formatting of community aspects on front page) +* :ghpull:`16074`: Backport PR #16061 on branch v3.2.x (Fix deprecation message for axes_grid1.colorbar.) +* :ghpull:`16093`: Backport PR #16079 on branch v3.2.x (Fix restuctured text formatting) +* :ghpull:`16094`: Backport PR #16080 on branch v3.2.x (Cleanup docstrings in backend_bases.py) +* :ghpull:`16086`: FIX: use supported attribute to check pillow version +* :ghpull:`16084`: Backport PR #16077 on branch v3.2.x (Fix some typos) +* :ghpull:`16077`: Fix some typos +* :ghpull:`16079`: Fix restuctured text formatting +* :ghpull:`16080`: Cleanup docstrings in backend_bases.py +* :ghpull:`16061`: Fix deprecation message for axes_grid1.colorbar. +* :ghpull:`16006`: Ignore pos in StrCategoryFormatter.__call__ to display correct label in the preview window +* :ghpull:`16056`: Backport PR #15864 on branch v3.2.x ([Add the info of 'sviewgui' in thirdparty package]) +* :ghpull:`15864`: Add 'sviewgui' to list of thirdparty packages +* :ghpull:`16055`: Backport PR #16037 on branch v3.2.x (Doc: use empty ScalarMappable for colorbars with no associated image.) +* :ghpull:`16054`: Backport PR #16048 on branch v3.2.x (Document that colorbar() takes a label kwarg.) +* :ghpull:`16037`: Doc: use empty ScalarMappable for colorbars with no associated image. +* :ghpull:`16048`: Document that colorbar() takes a label kwarg. +* :ghpull:`16042`: Backport PR #16031 on branch v3.2.x (Fix docstring of hillshade().) +* :ghpull:`16033`: Backport PR #16028 on branch v3.2.x (Prevent FigureCanvasQT_draw_idle recursively calling itself.) +* :ghpull:`16021`: Backport PR #16007 on branch v3.2.x (Fix search on nested pages) +* :ghpull:`16019`: Backport PR #15735 on branch v3.2.x (Cleanup some mplot3d docstrings.) +* :ghpull:`15987`: Backport PR #15886 on branch v3.2.x (Fix Annotation using different units and different coords on x/y.) +* :ghpull:`15886`: Fix Annotation using different units and different coords on x/y. +* :ghpull:`15984`: Backport PR #15970 on branch v3.2.x (Process clip paths the same way as regular Paths.) +* :ghpull:`15970`: Process clip paths the same way as regular Paths. +* :ghpull:`15963`: Backport PR #15937 on branch v3.2.x (Don't hide exceptions in FontManager.addfont.) +* :ghpull:`15956`: Backport PR #15901 on branch v3.2.x (Update backend_nbagg for removal of Gcf._activeQue.) +* :ghpull:`15937`: Don't hide exceptions in FontManager.addfont. +* :ghpull:`15959`: Backport PR #15953 on branch v3.2.x (Update donation link) +* :ghpull:`15901`: Update backend_nbagg for removal of Gcf._activeQue. +* :ghpull:`15954`: Backport PR #15914 on branch v3.2.x (Example for sigmoid function with horizontal lines) +* :ghpull:`15914`: Example for sigmoid function with horizontal lines +* :ghpull:`15930`: Backport PR #15925 on branch v3.2.x (Optimize setting units to None when they're already None.) +* :ghpull:`15925`: Optimize setting units to None when they're already None. +* :ghpull:`15915`: Backport PR #15903 on branch v3.2.x (Correctly handle non-affine transData in Collection.get_datalim.) +* :ghpull:`15903`: Correctly handle non-affine transData in Collection.get_datalim. +* :ghpull:`15908`: Backport PR #15857 on branch v3.2.x (LassoSelection shouldn't useblit on canvas not supporting blitting.) +* :ghpull:`15857`: LassoSelection shouldn't useblit on canvas not supporting blitting. +* :ghpull:`15905`: Backport PR #15763 on branch v3.2.x (Skip webagg test if tornado is not available.) +* :ghpull:`15882`: Backport PR #15859 on branch v3.2.x (Doc: Move search field into nav bar) +* :ghpull:`15868`: Backport PR #15848 on branch v3.2.x: Cleanup environment variables FAQ +* :ghpull:`15872`: Backport PR #15869 on branch v3.2.x (Update markers docs.) +* :ghpull:`15869`: Update markers docs. +* :ghpull:`15867`: Backport PR #15789 on branch v3.2.x (Cleanup xticks/yticks docstrings.) +* :ghpull:`15870`: Backport PR #15865 on branch v3.2.x (Fix a typo) +* :ghpull:`15871`: Backport PR #15824 on branch v3.2.x (Document doc style for default values) +* :ghpull:`15824`: Document doc style for default values +* :ghpull:`15865`: Fix a typo +* :ghpull:`15789`: Cleanup xticks/yticks docstrings. +* :ghpull:`15862`: Backport PR #15851 on branch v3.2.x (ffmpeg is available on default ubuntu packages now) +* :ghpull:`15848`: Cleanup environment variables FAQ. +* :ghpull:`15844`: Backport PR #15841 on branch v3.2.x (DOC: specify the expected shape in the Collection.set_offset) +* :ghpull:`15841`: DOC: specify the expected shape in the Collection.set_offset +* :ghpull:`15837`: Backport PR #15799 on branch v3.2.x (Improve display of author names on PDF titlepage of matplotlib own docs) +* :ghpull:`15799`: Improve display of author names on PDF titlepage of matplotlib own docs +* :ghpull:`15831`: Backport PR #15829 on branch v3.2.x (In C extensions, use FutureWarning, not DeprecationWarning.) +* :ghpull:`15829`: In C extensions, use FutureWarning, not DeprecationWarning. +* :ghpull:`15818`: Backport PR #15619 on branch v3.2.x (Improve zorder demo) +* :ghpull:`15819`: Backport PR #15601 on branch v3.2.x (Fix FontProperties conversion to/from strings) +* :ghpull:`15601`: Fix FontProperties conversion to/from strings +* :ghpull:`15619`: Improve zorder demo +* :ghpull:`15810`: Backport PR #15809 on branch v3.2.x (Exclude artists from legend using label attributte) +* :ghpull:`15809`: Exclude artists from legend using label attributte +* :ghpull:`15808`: Backport PR #15513 on branch v3.2.x (Separate plots using #### in make_room_for_ylabel_using_axesgrid.py) +* :ghpull:`15513`: Separate plots using #### in make_room_for_ylabel_using_axesgrid.py +* :ghpull:`15807`: Backport PR #15791 on branch v3.2.x (Cleanup backend_bases docstrings.) +* :ghpull:`15791`: Cleanup backend_bases docstrings. +* :ghpull:`15803`: Backport PR #15795 on branch v3.2.x (Remove incorrect statement re2: colorbars in image tutorial.) +* :ghpull:`15795`: Remove incorrect statement re: colorbars in image tutorial. +* :ghpull:`15794`: Backport PR #15793 on branch v3.2.x (fix a couple typos in tutorials) +* :ghpull:`15793`: fix a couple typos in tutorials +* :ghpull:`15774`: Backport PR #15748 on branch v3.2.x (Fix incorrect macro in FT2Font setup.) +* :ghpull:`15748`: Fix incorrect macro in FT2Font setup. +* :ghpull:`15759`: Backport PR #15751 on branch v3.2.x (Modernize FAQ entry for plt.show().) +* :ghpull:`15762`: Backport PR #15752 on branch v3.2.x (Update boxplot/violinplot faq.) +* :ghpull:`15755`: Backport PR #15661 on branch v3.2.x (Document scope of 3D scatter depthshading.) +* :ghpull:`15742`: Backport PR #15729 on branch v3.2.x (Catch correct parse errror type for dateutil >= 2.8.1) +* :ghpull:`15738`: Backport PR #15737 on branch v3.2.x (Fix env override in WebAgg backend test.) +* :ghpull:`15724`: Backport PR #15718 on branch v3.2.x (Update donation link) +* :ghpull:`15716`: Backport PR #15683 on branch v3.2.x (Cleanup dates.py docstrings.) +* :ghpull:`15683`: Cleanup dates.py docstrings. +* :ghpull:`15688`: Backport PR #15682 on branch v3.2.x (Make histogram_bin_edges private.) +* :ghpull:`15682`: Make histogram_bin_edges private. +* :ghpull:`15666`: Backport PR #15649 on branch v3.2.x (Fix searchindex.js loading when ajax fails (because e.g. CORS in embedded iframes)) +* :ghpull:`15669`: Backport PR #15654 on branch v3.2.x (Fix some broken links.) +* :ghpull:`15660`: Backport PR #15647 on branch v3.2.x (Update some links) +* :ghpull:`15653`: Backport PR #15623 on branch v3.2.x (Docstring for Artist.mouseover) +* :ghpull:`15623`: Docstring for Artist.mouseover +* :ghpull:`15634`: Backport PR #15626 on branch v3.2.x (Note minimum supported version for fontconfig.) +* :ghpull:`15633`: Backport PR #15620 on branch v3.2.x (TST: Increase tolerance of some tests for aarch64) +* :ghpull:`15626`: Note minimum supported version for fontconfig. +* :ghpull:`15632`: Backport PR #15627 on branch v3.2.x (Make it easier to test various animation writers in examples.) +* :ghpull:`15620`: TST: Increase tolerance of some tests for aarch64 +* :ghpull:`15627`: Make it easier to test various animation writers in examples. +* :ghpull:`15618`: Backport PR #15613 on branch v3.2.x (Revert "Don't bother with manually resizing the Qt main window.") +* :ghpull:`15613`: Revert "Don't bother with manually resizing the Qt main window." +* :ghpull:`15593`: Backport PR #15590 on branch v3.2.x (Rename numpy to NumPy in docs.) +* :ghpull:`15590`: Rename numpy to NumPy in docs. +* :ghpull:`15588`: Backport PR #15478 on branch v3.2.x (Make ConciseDateFormatter obey timezone) +* :ghpull:`15478`: Make ConciseDateFormatter obey timezone +* :ghpull:`15583`: Backport PR #15512 on branch v3.2.x +* :ghpull:`15584`: Backport PR #15579 on branch v3.2.x (Remove matplotlib.sphinxext.tests from __init__.py) +* :ghpull:`15579`: Remove matplotlib.sphinxext.tests from __init__.py +* :ghpull:`15577`: Backport PR #14705 on branch v3.2.x (Correctly size non-ASCII characters in agg backend.) +* :ghpull:`14705`: Correctly size non-ASCII characters in agg backend. +* :ghpull:`15572`: Backport PR #15452 on branch v3.2.x (Improve example for tick formatters) +* :ghpull:`15570`: Backport PR #15561 on branch v3.2.x (Update thirdparty scalebar) +* :ghpull:`15452`: Improve example for tick formatters +* :ghpull:`15545`: Backport PR #15429 on branch v3.2.x (Fix OSX build on azure) +* :ghpull:`15544`: Backport PR #15537 on branch v3.2.x (Add a third party package in the doc: matplotlib-scalebar) +* :ghpull:`15561`: Update thirdparty scalebar +* :ghpull:`15567`: Backport PR #15562 on branch v3.2.x (Improve docsting of AxesImage) +* :ghpull:`15562`: Improve docsting of AxesImage +* :ghpull:`15565`: Backport PR #15556 on branch v3.2.x (Fix test suite compat with ghostscript 9.50.) +* :ghpull:`15556`: Fix test suite compat with ghostscript 9.50. +* :ghpull:`15560`: Backport PR #15553 on branch v3.2.x (DOC: add cache-buster query string to css path) +* :ghpull:`15552`: Backport PR #15528 on branch v3.2.x (Declutter home page) +* :ghpull:`15554`: Backport PR #15523 on branch v3.2.x (numpydoc AxesImage) +* :ghpull:`15523`: numpydoc AxesImage +* :ghpull:`15549`: Backport PR #15516 on branch v3.2.x (Add logo like font) +* :ghpull:`15543`: Backport PR #15539 on branch v3.2.x (Small cleanups to backend docs.) +* :ghpull:`15542`: Backport PR #15540 on branch v3.2.x (axisartist tutorial fixes.) +* :ghpull:`15537`: Add a third party package in the doc: matplotlib-scalebar +* :ghpull:`15541`: Backport PR #15533 on branch v3.2.x (Use svg instead of png for website logo) +* :ghpull:`15539`: Small cleanups to backend docs. +* :ghpull:`15540`: axisartist tutorial fixes. +* :ghpull:`15538`: Backport PR #15535 on branch v3.2.x (Avoid really long lines in event handling docs.) +* :ghpull:`15535`: Avoid really long lines in event handling docs. +* :ghpull:`15531`: Backport PR #15527 on branch v3.2.x (Clarify imshow() docs concerning scaling and grayscale images) +* :ghpull:`15527`: Clarify imshow() docs concerning scaling and grayscale images +* :ghpull:`15522`: Backport PR #15500 on branch v3.2.x (Improve antialiasing example) +* :ghpull:`15524`: Backport PR #15499 on branch v3.2.x (Do not show path in font table example) +* :ghpull:`15525`: Backport PR #15498 on branch v3.2.x (Simplify matshow example) +* :ghpull:`15498`: Simplify matshow example +* :ghpull:`15499`: Do not show path in font table example +* :ghpull:`15521`: Backport PR #15519 on branch v3.2.x (FIX: fix anti-aliasing zoom bug) +* :ghpull:`15500`: Improve antialiasing example +* :ghpull:`15519`: FIX: fix anti-aliasing zoom bug +* :ghpull:`15510`: Backport PR #15489 on branch v3.2.x (DOC: adding main nav to site) +* :ghpull:`15495`: Backport PR #15486 on branch v3.2.x (Fixes an error in the documentation of Ellipse) +* :ghpull:`15488`: Backport PR #15372 on branch v3.2.x (Add example for drawstyle) +* :ghpull:`15490`: Backport PR #15487 on branch v3.2.x (Fix window not always raised in Qt example) +* :ghpull:`15487`: Fix window not always raised in Qt example +* :ghpull:`15372`: Add example for drawstyle +* :ghpull:`15485`: Backport PR #15454 on branch v3.2.x (Rewrite Anscombe's quartet example) +* :ghpull:`15483`: Backport PR #15480 on branch v3.2.x (Fix wording in [packages] section of setup.cfg) +* :ghpull:`15454`: Rewrite Anscombe's quartet example +* :ghpull:`15480`: Fix wording in [packages] section of setup.cfg +* :ghpull:`15477`: Backport PR #15464 on branch v3.2.x (Remove unused code (remainder from #15453)) +* :ghpull:`15471`: Backport PR #15460 on branch v3.2.x (Fix incorrect value check in axes_grid.) +* :ghpull:`15456`: Backport PR #15453 on branch v3.2.x (Improve example for tick locators) +* :ghpull:`15457`: Backport PR #15450 on branch v3.2.x (API: rename DivergingNorm to TwoSlopeNorm) +* :ghpull:`15450`: API: rename DivergingNorm to TwoSlopeNorm +* :ghpull:`15434`: In imsave, let pnginfo have precedence over metadata. +* :ghpull:`15445`: Backport PR #15439 on branch v3.2.x (DOC: mention discourse main page) +* :ghpull:`15425`: Backport PR #15422 on branch v3.2.x (FIX: typo in attribute lookup) +* :ghpull:`15449`: DOC: fix build +* :ghpull:`15429`: Fix OSX build on azure +* :ghpull:`15420`: Backport PR #15380 on branch v3.2.x (Update docs of BoxStyle) +* :ghpull:`15380`: Update docs of BoxStyle +* :ghpull:`15300`: CI: use python -m to make sure we are using the pip/pytest we want +* :ghpull:`15414`: Backport PR #15413 on branch v3.2.x (catch OSError instead of FileNotFoundError in _get_executable_info to resolve #15399) +* :ghpull:`15413`: catch OSError instead of FileNotFoundError in _get_executable_info to resolve #15399 +* :ghpull:`15406`: Backport PR #15347 on branch v3.2.x (Fix axes.hist bins units) +* :ghpull:`15405`: Backport PR #15391 on branch v3.2.x (Increase fontsize in inheritance graphs) +* :ghpull:`15347`: Fix axes.hist bins units +* :ghpull:`15391`: Increase fontsize in inheritance graphs +* :ghpull:`15389`: Backport PR #15379 on branch v3.2.x (Document formatting strings in the docs) +* :ghpull:`15379`: Document formatting strings in the docs +* :ghpull:`15386`: Backport PR #15385 on branch v3.2.x (Reword hist() doc.) +* :ghpull:`15385`: Reword hist() doc. +* :ghpull:`15377`: Backport PR #15357 on branch v3.2.x (Add 'step' and 'barstacked' to histogram_histtypes demo) +* :ghpull:`15357`: Add 'step' and 'barstacked' to histogram_histtypes demo +* :ghpull:`15366`: Backport PR #15364 on branch v3.2.x (DOC: fix typo in colormap docs) +* :ghpull:`15362`: Backport PR #15350 on branch v3.2.x (Don't generate double-reversed cmaps ("viridis_r_r", ...).) +* :ghpull:`15360`: Backport PR #15258 on branch v3.2.x (Don't fallback to view limits when autoscale()ing no data.) +* :ghpull:`15350`: Don't generate double-reversed cmaps ("viridis_r_r", ...). +* :ghpull:`15258`: Don't fallback to view limits when autoscale()ing no data. +* :ghpull:`15299`: Backport PR #15296 on branch v3.2.x (Fix typo/bug from 18cecf7) +* :ghpull:`15327`: Backport PR #15326 on branch v3.2.x (List of minimal versions of dependencies) +* :ghpull:`15326`: List of minimal versions of dependencies +* :ghpull:`15317`: Backport PR #15291 on branch v3.2.x (Remove error_msg_qt from backend_qt4.) +* :ghpull:`15316`: Backport PR #15283 on branch v3.2.x (Don't default axes_grid colorbar locator to MaxNLocator.) +* :ghpull:`15291`: Remove error_msg_qt from backend_qt4. +* :ghpull:`15283`: Don't default axes_grid colorbar locator to MaxNLocator. +* :ghpull:`15315`: Backport PR #15308 on branch v3.2.x (Doc: Add close event to list of events) +* :ghpull:`15308`: Doc: Add close event to list of events +* :ghpull:`15312`: Backport PR #15307 on branch v3.2.x (DOC: center footer) +* :ghpull:`15307`: DOC: center footer +* :ghpull:`15276`: Backport PR #15271 on branch v3.2.x (Fix font weight validation) +* :ghpull:`15279`: Backport PR #15252 on branch v3.2.x (Mention labels and milestones in PR review guidelines) +* :ghpull:`15252`: Mention labels and milestones in PR review guidelines +* :ghpull:`15268`: Backport PR #15266 on branch v3.2.x (Embedding in Tk example: Fix toolbar being clipped.) +* :ghpull:`15269`: Backport PR #15267 on branch v3.2.x (added multi-letter example to mathtext tutorial) +* :ghpull:`15267`: added multi-letter example to mathtext tutorial +* :ghpull:`15266`: Embedding in Tk example: Fix toolbar being clipped. +* :ghpull:`15243`: Move some new API changes to the correct place +* :ghpull:`15245`: Fix incorrect calls to warn_deprecated. +* :ghpull:`15239`: Composite against white, not the savefig.facecolor rc, in print_jpeg. +* :ghpull:`15227`: contains_point() docstring fixes +* :ghpull:`15242`: Cleanup widgets docstrings. +* :ghpull:`14889`: Support pixel-by-pixel alpha in imshow. +* :ghpull:`14928`: Logit scale nonsingular +* :ghpull:`14998`: Fix nonlinear spine positions & inline Spine._calc_offset_transform into get_spine_transform. +* :ghpull:`15231`: Doc: Do not write default for non-existing rcParams +* :ghpull:`15222`: Cleanup projections/__init__.py. +* :ghpull:`15228`: Minor docstring style cleanup +* :ghpull:`15237`: Cleanup widgets.py. +* :ghpull:`15229`: Doc: Fix Bbox and BboxBase links +* :ghpull:`15235`: Kill FigureManagerTk._num. +* :ghpull:`15234`: Drop mention of msinttypes in Windows build. +* :ghpull:`15224`: Avoid infinite loop when switching actions in qt backend. +* :ghpull:`15230`: Doc: Remove hard-documented rcParams defaults +* :ghpull:`15149`: pyplot.style.use() to accept pathlib.Path objects as arguments +* :ghpull:`15220`: Correctly format floats passed to pgf backend. +* :ghpull:`15216`: Update docstrings of contains_point(s) methods +* :ghpull:`15209`: Exclude s-g generated files from flake8 check. +* :ghpull:`15204`: PEP8ify some variable names. +* :ghpull:`15196`: Force html4 writer for sphinx 2 +* :ghpull:`13544`: Improve handling of subplots spanning multiple gridspec cells. +* :ghpull:`15194`: Trivial style fixes. +* :ghpull:`15202`: Deprecate the renderer parameter to Figure.tight_layout. +* :ghpull:`15195`: Fix integers being passed as length to quiver3d. +* :ghpull:`15180`: Add some more internal links to 3.2.0 what's new +* :ghpull:`13510`: Change Locator MAXTICKS checking to emitting a log at WARNING level. +* :ghpull:`15184`: Mark missing_references extension as parallel read safe +* :ghpull:`15150`: Autodetect whether pgf can use \includegraphics[interpolate]. +* :ghpull:`15163`: 3.2.0 API changes page +* :ghpull:`15176`: What's new for 3.2.0 +* :ghpull:`11947`: Ensure streamplot Euler step is always called when going out of bounds. +* :ghpull:`13702`: Deduplicate methods shared between Container and Artist. +* :ghpull:`15169`: TST: verify warnings fail the test suite +* :ghpull:`14888`: Replace some polar baseline images by check_figures_equal. +* :ghpull:`15027`: More readability improvements on axis3d. +* :ghpull:`15171`: Add useful error message when trying to add Slider to 3DAxes +* :ghpull:`13775`: Doc: Scatter Hist example update +* :ghpull:`15164`: removed a typo +* :ghpull:`15152`: Support for shorthand hex colors. +* :ghpull:`15159`: Follow up on #14424 for docstring +* :ghpull:`14424`: ENH: Add argument size validation to quiver. +* :ghpull:`15137`: DOC: add example to power limit API change note +* :ghpull:`15144`: Improve local page contents CSS +* :ghpull:`15143`: Restore doc references. +* :ghpull:`15124`: Replace parameter lists with square brackets +* :ghpull:`13077`: fix FreeType build on Azure +* :ghpull:`15123`: Improve categorical example +* :ghpull:`15134`: Fix missing references in doc build. +* :ghpull:`13937`: Use PYTHONFAULTHANDLER to switch on the Python fault handler. +* :ghpull:`13452`: Replace axis_artist.AttributeCopier by normal inheritance. +* :ghpull:`15045`: Resize canvas when changing figure size +* :ghpull:`15122`: Fixed app creation in qt5 backend (see #15100) +* :ghpull:`15099`: Add lightsource parameter to bar3d +* :ghpull:`14876`: Inline some afm parsing code. +* :ghpull:`15119`: Deprecate a validator for a deprecated rcParam value. +* :ghpull:`15121`: Fix Stacked bar graph example +* :ghpull:`15113`: Cleanup layout_from_subplotspec. +* :ghpull:`13543`: Remove zip_safe=False flag from setup.py. +* :ghpull:`12860`: ENH: LogLocator: check for correct dimension of subs added +* :ghpull:`14349`: Replace ValidateInterval by simpler specialized validators. +* :ghpull:`14352`: Remove redundant is_landscape kwarg from backend_ps helpers. +* :ghpull:`15087`: Pass gid to renderer +* :ghpull:`14703`: Don't bother with manually resizing the Qt main window. +* :ghpull:`14833`: Reuse TexManager implementation in convert_psfrags. +* :ghpull:`14893`: Update layout.html for sphinx themes +* :ghpull:`15098`: Simplify symlog range determination logic +* :ghpull:`15112`: Cleanup legend() docstring. +* :ghpull:`15108`: Fix doc build and resync matplotlibrc.template with actual defaults. +* :ghpull:`14940`: Fix text kerning calculations and some FT2Font cleanup +* :ghpull:`15082`: Privatize font_manager.JSONEncoder. +* :ghpull:`15106`: Update docs of GridSpec +* :ghpull:`14832`: ENH:made default tick formatter to switch to scientific notation earlier +* :ghpull:`15086`: Style fixes. +* :ghpull:`15073`: Add entry for blume to thirdparty package index +* :ghpull:`15095`: Simplify _png extension by handling file open/close in Python. +* :ghpull:`15092`: MNT: Add test for aitoff-projection +* :ghpull:`15101`: Doc: fix typo in contour doc +* :ghpull:`14624`: Fix axis inversion with loglocator and logitlocator. +* :ghpull:`15088`: Fix more doc references. +* :ghpull:`15063`: Add Comic Neue as a fantasy font. +* :ghpull:`14867`: Propose change to PR merging policy. +* :ghpull:`15068`: Add FontManager.addfont to register fonts at specific paths. +* :ghpull:`13397`: Deprecate axes_grid1.colorbar (in favor of matplotlib's own). +* :ghpull:`14521`: Move required_interactive_framework to canvas class. +* :ghpull:`15083`: Cleanup spines example. +* :ghpull:`14997`: Correctly set formatters and locators on removed shared axis +* :ghpull:`15064`: Fix eps hatching in MacOS Preview +* :ghpull:`15074`: Write all ACCEPTS markers in docstrings as comments. +* :ghpull:`15078`: Clarify docstring of FT2Font.get_glyph_name. +* :ghpull:`15080`: Fix cross-references in API changes < 3.0.0. +* :ghpull:`15072`: Cleanup patheffects. +* :ghpull:`15071`: Cleanup offsetbox.py. +* :ghpull:`15070`: Fix cross-references in API changes < 2.0.0. +* :ghpull:`10691`: Fix for shared axes diverging after setting tick markers +* :ghpull:`15069`: Style fixes for font_manager.py. +* :ghpull:`15067`: Fix cross-references in API changes < 1.0 +* :ghpull:`15061`: Fix cross-references in tutorials and FAQ +* :ghpull:`15060`: Fix cross-references in examples. +* :ghpull:`14957`: Documentation for using ConnectionPatch across Axes with constrained… +* :ghpull:`15053`: Make citation bit of README less wordy +* :ghpull:`15044`: numpydoc set_size_inches docstring +* :ghpull:`15050`: Clarify unnecessary special handling for colons in paths. +* :ghpull:`14797`: DOC: create a Agg figure without pyplot in buffer example +* :ghpull:`14844`: Add citation info to README +* :ghpull:`14884`: Do not allow canvas size to become smaller than MinSize in wx backend… +* :ghpull:`14941`: Improvements to make_icons.py. +* :ghpull:`15048`: DOC: more nitpick follow up +* :ghpull:`15043`: Fix Docs: Don’t warn for unused ignores +* :ghpull:`15025`: Re-write text wrapping logic +* :ghpull:`14840`: Don't assume transform is valid on access to matrix. +* :ghpull:`14862`: Make optional in docstrings optional +* :ghpull:`15028`: Python version conf.py +* :ghpull:`15033`: FIX: un-break nightly wheels on py37 +* :ghpull:`15046`: v3.1.x merge up +* :ghpull:`15015`: Fix bad missing-references.json due to PR merge race condition. +* :ghpull:`14581`: Make logscale bar/hist autolimits more consistents. +* :ghpull:`15034`: Doc fix nitpick +* :ghpull:`14614`: Deprecate {x,y,z}axis_date. +* :ghpull:`14991`: Handle inherited is_separable, has_inverse in transform props detection. +* :ghpull:`15032`: Clarify effect of axis('equal') on explicit data limits +* :ghpull:`15031`: Update docs of GridSpec +* :ghpull:`14106`: Describe FigureManager +* :ghpull:`15024`: Update docs of GridSpecBase +* :ghpull:`14906`: Deprecate some FT2Image methods. +* :ghpull:`14963`: More Axis3D cleanup. +* :ghpull:`15009`: Provide signatures to some C-level classes and methods. +* :ghpull:`14968`: DOC: colormap manipulation tutorial update +* :ghpull:`15006`: Deprecate get/set_*ticks minor positional use +* :ghpull:`14989`: DOC:Update axes documentation +* :ghpull:`14871`: Parametrize determinism tests. +* :ghpull:`14768`: DOC: Enable nitpicky +* :ghpull:`15013`: Matplotlib requires Python 3.6, which in turn requires Mac OS X 10.6+ +* :ghpull:`15012`: Fix typesetting of "GitHub" +* :ghpull:`14954`: Cleanup polar_legend example. +* :ghpull:`14519`: Check parameters of ColorbarBase +* :ghpull:`14942`: Make _classic_test style a tiny patch on top of classic. +* :ghpull:`14988`: pathlibify/fstringify setup/setupext. +* :ghpull:`14511`: Deprecate allowing scalars for fill_between where +* :ghpull:`14493`: Remove deprecated fig parameter form GridSpecBase.get_subplot_params() +* :ghpull:`14995`: Further improve backend tutorial. +* :ghpull:`15000`: Use warnings.warn, not logging.warning, in microseconds locator warning. +* :ghpull:`14990`: Fix nonsensical transform in mixed-mode axes aspect computation. +* :ghpull:`15002`: No need to access filesystem in test_dates.py. +* :ghpull:`14549`: Improve backends documentation +* :ghpull:`14774`: Fix image bbox clip. +* :ghpull:`14978`: Typo fixes in pyplot.py +* :ghpull:`14702`: Don't enlarge toolbar for Qt high-dpi. +* :ghpull:`14922`: Autodetect some transform properties. +* :ghpull:`14962`: Replace inspect.getfullargspec by inspect.signature. +* :ghpull:`14958`: Improve docs of toplevel module. +* :ghpull:`14926`: Save a matrix unpacking/repacking in offsetbox. +* :ghpull:`14961`: Cleanup demo_agg_filter. +* :ghpull:`14924`: Kill the C-level (private) RendererAgg.buffer_rgba, which returns a copy. +* :ghpull:`14946`: Delete virtualenv faq. +* :ghpull:`14944`: Shorten style.py. +* :ghpull:`14931`: Deprecate some obscure rcParam synonyms. +* :ghpull:`14947`: Fix inaccuracy re: backends in intro tutorial. +* :ghpull:`14904`: Fix typo in secondary_axis.py example. +* :ghpull:`14925`: Support passing spine bounds as single tuple. +* :ghpull:`14921`: DOC: Make abbreviation of versus consistent. +* :ghpull:`14739`: Improve indentation of Line2D properties in docstrings. +* :ghpull:`14923`: In examples, prefer buffer_rgba to print_to_buffer. +* :ghpull:`14908`: Make matplotlib.style.available sorted alphabetically. +* :ghpull:`13567`: Deprecate MovieWriterRegistry cache-dirtyness system. +* :ghpull:`14879`: Error out when unsupported kwargs are passed to Scale. +* :ghpull:`14512`: Logit scale, changes in LogitLocator and LogitFormatter +* :ghpull:`12415`: ENH: fig.set_size to allow non-inches units +* :ghpull:`13783`: Deprecate disable_internet. +* :ghpull:`14886`: Further simplify the flow of pdf text output. +* :ghpull:`14894`: Make slowness warning for legend(loc="best") more accurate. +* :ghpull:`14891`: Fix nightly test errors +* :ghpull:`14895`: Fix typos +* :ghpull:`14890`: Remove unused private helper method in mplot3d. +* :ghpull:`14872`: Unify text layout paths. +* :ghpull:`8183`: Allow array alpha for imshow +* :ghpull:`13832`: Vectorize handling of stacked/cumulative in hist(). +* :ghpull:`13630`: Simplify PolarAxes.can_pan. +* :ghpull:`14565`: Rewrite an argument check to _check_getitem +* :ghpull:`14875`: Cleanup afm module docstring. +* :ghpull:`14880`: Fix animation blitting for plots with shared axes +* :ghpull:`14870`: FT2Font.get_char_index never returns None. +* :ghpull:`13463`: Deprecate Locator.autoscale. +* :ghpull:`13724`: ENH: anti-alias down-sampled images +* :ghpull:`14848`: Clearer error message for plt.axis() +* :ghpull:`14660`: colorbar(label=None) should give an empty label +* :ghpull:`14654`: Cleanup of docstrings of scales +* :ghpull:`14868`: Update bar stacked example to directly manipulate axes. +* :ghpull:`14749`: Fix get_canvas_width_height() for pgf backend. +* :ghpull:`14776`: Make ExecutableUnavailableError +* :ghpull:`14843`: Don't try to cleanup CallbackRegistry during interpreter shutdown. +* :ghpull:`14849`: Improve tkagg icon resolution +* :ghpull:`14866`: changed all readme headings to verbs +* :ghpull:`13364`: Numpyfy tick handling code in Axis3D. +* :ghpull:`13642`: FIX: get_datalim for collection +* :ghpull:`14860`: Stopgap fix for pandas converters in tests. +* :ghpull:`6498`: Check canvas identity in Artist.contains. +* :ghpull:`14707`: Add titlecolor in rcParams +* :ghpull:`14853`: Fix typo in set_adjustable check. +* :ghpull:`14845`: More cleanups. +* :ghpull:`14809`: Clearer calls to ConnectionPatch. +* :ghpull:`14716`: Use str instead of string as type in docstrings +* :ghpull:`14338`: Simplify/pathlibify image_comparison. +* :ghpull:`8930`: timedelta formatter +* :ghpull:`14733`: Deprecate FigureFrameWx.statusbar & NavigationToolbar2Wx.statbar. +* :ghpull:`14713`: Unite masked and NaN plot examples +* :ghpull:`14576`: Let Axes3D share have_units, _on_units_changed with 2d axes. +* :ghpull:`14575`: Make ticklabel_format work both for 2D and 3D axes. +* :ghpull:`14834`: DOC: Webpage not formated correctly on gallery docs +* :ghpull:`14730`: Factor out common parts of wx event handlers. +* :ghpull:`14727`: Fix axes aspect for non-linear, non-log, possibly mixed-scale axes. +* :ghpull:`14835`: Only allow set_adjustable("datalim") for axes with standard data ratios. +* :ghpull:`14746`: Simplify Arrow constructor. +* :ghpull:`14752`: Doc changes to git setup +* :ghpull:`14732`: Deduplicate wx configure_subplots tool. +* :ghpull:`14715`: Use array-like in docs +* :ghpull:`14728`: More floating_axes cleanup. +* :ghpull:`14719`: Make Qt navtoolbar more robust against removal of either pan or zoom. +* :ghpull:`14695`: Various small simplifications +* :ghpull:`14745`: Replace Affine2D().scale(x, x) by Affine2D().scale(x). +* :ghpull:`14687`: Add missing spaces after commas in docs +* :ghpull:`14810`: Lighten icons of NavigationToolbar2QT on dark-themes +* :ghpull:`14786`: Deprecate axis_artist.BezierPath. +* :ghpull:`14750`: Misc. simplifications. +* :ghpull:`14807`: API change note on automatic blitting detection for backends +* :ghpull:`11004`: Deprecate smart_bounds handling in Axis and Spine +* :ghpull:`14785`: Kill some never-used attributes. +* :ghpull:`14723`: Cleanup some parameter descriptions in matplotlibrc.template +* :ghpull:`14808`: Small docstring updates +* :ghpull:`14686`: Inset orientation +* :ghpull:`14805`: Simplify text_layout example. +* :ghpull:`12052`: Make AxesImage.contains account for transforms +* :ghpull:`11860`: Let MovieFileWriter save temp files in a new dir +* :ghpull:`11423`: FigureCanvas Designer +* :ghpull:`10688`: Add legend handler and artist for FancyArrow +* :ghpull:`8321`: Added ContourSet clip_path kwarg and set_clip_path() method (#2369) +* :ghpull:`14641`: Simplify _process_plot_var_args. +* :ghpull:`14631`: Refactor from_levels_and_colors. +* :ghpull:`14790`: DOC:Add link to style examples in matplotlib.style documentation +* :ghpull:`14799`: Deprecate dates.mx2num. +* :ghpull:`14793`: Remove sudo tag in travis +* :ghpull:`14795`: Autodetect whether a canvas class supports blitting. +* :ghpull:`14794`: DOC: Update the documetation of homepage of website +* :ghpull:`14629`: Delete HTML build sources to save on artefact upload time +* :ghpull:`14792`: Fix spelling typos +* :ghpull:`14789`: Prefer Affine2D.translate to offset_transform in examples. +* :ghpull:`14783`: Cleanup mlab.detrend. +* :ghpull:`14791`: Make 'extended' and 'expanded' synonymous in font_manager +* :ghpull:`14787`: Remove axis_artist _update, which is always a noop. +* :ghpull:`14758`: Compiling C-ext with incorrect FreeType libs makes future compiles break +* :ghpull:`14763`: Deprecate math_symbol_table function directive +* :ghpull:`14762`: Decrease uses of get_canvas_width_height. +* :ghpull:`14748`: Cleanup demo_text_path. +* :ghpull:`14740`: Remove sudo tag in travis +* :ghpull:`14737`: Cleanup twin axes docstrings. +* :ghpull:`14729`: Small simplifications. +* :ghpull:`14726`: Trivial simplification to Axis3d._get_coord_info. +* :ghpull:`14718`: Add explanations for single character color names. +* :ghpull:`14710`: Pin pydocstyle<4.0 +* :ghpull:`14709`: Try to improve the readability and styling of matplotlibrc.template file +* :ghpull:`14278`: Inset axes bug and docs fix +* :ghpull:`14478`: MNT: protect from out-of-bounds data access at the c level +* :ghpull:`14569`: More deduplication of backend_tools. +* :ghpull:`14652`: Soft-deprecate transform_point. +* :ghpull:`14664`: Improve error reporting for scatter c as invalid RGBA. +* :ghpull:`14625`: Don't double-wrap in silent_list. +* :ghpull:`14689`: Update embedding_in_wx4 example. +* :ghpull:`14679`: Further simplify colormap reversal. +* :ghpull:`14667`: Move most of pytest's conf to conftest.py. +* :ghpull:`14632`: Remove reference to old Tk/Windows bug. +* :ghpull:`14673`: More shortening of setup.py prints. +* :ghpull:`14678`: Fix small typo +* :ghpull:`14680`: Format parameters in descriptions with emph instead of backticks +* :ghpull:`14674`: Simplify colormap reversal. +* :ghpull:`14672`: Artist tutorial fixes +* :ghpull:`14653`: Remove some unnecessary prints from setup.py. +* :ghpull:`14662`: Add a _check_getitem helper to go with _check_in_list/_check_isinstance. +* :ghpull:`14666`: Update IPython's doc link in Image tutorial +* :ghpull:`14671`: Improve readability of matplotlibrc.template +* :ghpull:`14665`: Fix a typo in pyplot tutorial +* :ghpull:`14616`: Use builtin round instead of np.round for scalars. +* :ghpull:`12554`: backend_template docs and fixes +* :ghpull:`14635`: Fix bug when setting negative limits and using log scale +* :ghpull:`14604`: Update hist() docstring following removal of normed kwarg. +* :ghpull:`14630`: Remove the private Tick._name attribute. +* :ghpull:`14555`: Coding guidelines concerning the API +* :ghpull:`14516`: Document and test _get_packed_offsets() +* :ghpull:`14628`: matplotlib > Matplotlib in devel docs +* :ghpull:`14627`: gitignore pip-wheel-metadta/ directory +* :ghpull:`14612`: Update some mplot3d docs. +* :ghpull:`14617`: Remove a Py2.4(!) backcompat fix. +* :ghpull:`14605`: Update hist2d() docstring. +* :ghpull:`13084`: When linking against libpng/zlib on Windows, use upstream lib names. +* :ghpull:`13685`: Remove What's new fancy example +* :ghpull:`14573`: Cleanup jpl_units. +* :ghpull:`14583`: Fix overly long lines in setupext. +* :ghpull:`14588`: Remove [status] suppress from setup.cfg. +* :ghpull:`14591`: Style fixes for secondary_axis. +* :ghpull:`14594`: DOC: Make temperature scale example use a closure for easier reusability +* :ghpull:`14447`: FIX: allow secondary axes minor locators to be set +* :ghpull:`14567`: Fix unicode_minus + usetex. +* :ghpull:`14351`: Remove some redundant check_in_list calls. +* :ghpull:`14550`: Restore thumbnail of usage guide +* :ghpull:`10222`: Use symlinks instead of copies for test result_images. +* :ghpull:`14267`: cbook docs cleanup +* :ghpull:`14556`: Improve @deprecated's docstring. +* :ghpull:`14557`: Clarify how to work with threads. +* :ghpull:`14545`: In contributing.rst, encourage kwonly args and minimizing public APIs. +* :ghpull:`14533`: Misc. style fixes. +* :ghpull:`14542`: Move plot_directive doc to main API index. +* :ghpull:`14499`: Improve custom figure example +* :ghpull:`14543`: Remove the "Developing a new backend" section from contributing guide. +* :ghpull:`14540`: Simplify backend switching in plot_directive. +* :ghpull:`14539`: Don't overindent enumerated list in plot_directive docstring. +* :ghpull:`14537`: Slightly tighten the Bbox API. +* :ghpull:`14223`: Rewrite intro to usage guide. +* :ghpull:`14495`: Numpydocify axes_artist.py +* :ghpull:`14529`: mpl_toolkits style fixes. +* :ghpull:`14528`: mathtext style fixes. +* :ghpull:`13536`: Make unit converters also handle instances of subclasses. +* :ghpull:`13730`: Include FreeType error codes in FreeType exception messages. +* :ghpull:`14500`: Fix pydocstyle D403 (First word of the first line should be properly capitalized) in examples +* :ghpull:`14506`: Simplify Qt tests. +* :ghpull:`14513`: More fixes to pydocstyle D403 (First word capitalization) +* :ghpull:`14496`: Fix pydocstyle D208 (Docstring is over-indented) +* :ghpull:`14347`: Deprecate rcsetup.validate_path_exists. +* :ghpull:`14383`: Remove the ````package_data.dlls```` setup.cfg entry. +* :ghpull:`14346`: Simplify various validators in rcsetup. +* :ghpull:`14366`: Move test_rcparams test files inline into test_rcparams.py. +* :ghpull:`14401`: Assume that mpl-data is in its standard location. +* :ghpull:`14454`: Simplify implementation of svg.image_inline. +* :ghpull:`14470`: Add _check_isinstance helper. +* :ghpull:`14479`: fstringify backend_ps more. +* :ghpull:`14484`: Support unicode minus with ps.useafm. +* :ghpull:`14494`: Style fixes. +* :ghpull:`14465`: Docstrings cleanups. +* :ghpull:`14466`: Let SecondaryAxis inherit get_tightbbox from _AxesBase. +* :ghpull:`13940`: Some more f-strings. +* :ghpull:`14379`: Remove unnecessary uses of unittest.mock. +* :ghpull:`14483`: Improve font weight guessing. +* :ghpull:`14419`: Fix test_imshow_pil on Windows. +* :ghpull:`14460`: canvas.blit() already defaults to blitting the full figure canvas. +* :ghpull:`14462`: Register timeout pytest marker. +* :ghpull:`14414`: FEATURE: Alpha channel in Gouraud triangles in the pdf backend +* :ghpull:`13659`: Clarify behavior of the 'tight' kwarg to autoscale/autoscale_view. +* :ghpull:`13901`: Only test png output for mplot3d. +* :ghpull:`13338`: Replace list.extend by star-expansion or other constructs. +* :ghpull:`14448`: Misc doc style cleanup +* :ghpull:`14310`: Update to Bounding Box for Qt5 FigureCanvasATAgg.paintEvent() +* :ghpull:`14380`: Inline $MPLLOCALFREETYPE/$PYTEST_ADDOPTS/$NPROC in .travis.yml. +* :ghpull:`14413`: MAINT: small improvements to the pdf backend +* :ghpull:`14452`: MAINT: Minor cleanup to make functions more self consisntent +* :ghpull:`14441`: Misc. docstring cleanups. +* :ghpull:`14440`: Interpolations example +* :ghpull:`14402`: Prefer ``mpl.get_data_path()``, and support Paths in FontProperties. +* :ghpull:`14420`: MAINT: Upgrade pytest again +* :ghpull:`14423`: Fix docstring of subplots(). +* :ghpull:`14410`: Use aspect=1, not aspect=True. +* :ghpull:`14412`: MAINT: Don't install pytest 4.6.0 on Travis +* :ghpull:`14377`: Rewrite assert np.* tests to use numpy.testing +* :ghpull:`14399`: Improve warning for case where data kwarg entry is ambiguous. +* :ghpull:`14390`: Cleanup docs of bezier +* :ghpull:`14400`: Fix to_rgba_array() for empty input +* :ghpull:`14308`: Small clean to SymmetricalLogLocator +* :ghpull:`14311`: travis: add c code coverage measurements +* :ghpull:`14393`: Remove remaining unicode-strings markers. +* :ghpull:`14391`: Remove explicit inheritance from object +* :ghpull:`14343`: acquiring and releaseing keypresslock when textbox is being activated +* :ghpull:`14353`: Register flaky pytest marker. +* :ghpull:`14373`: Properly hide __has_include to support C++<17 compilers. +* :ghpull:`14378`: Remove setup_method +* :ghpull:`14368`: Finish removing jquery from the repo. +* :ghpull:`14360`: Deprecate ``boxplot(..., whis="range")``. +* :ghpull:`14376`: Simplify removal of figure patch from bbox calculations. +* :ghpull:`14363`: Make is_natively_supported private. +* :ghpull:`14330`: Remove remaining unittest.TestCase uses +* :ghpull:`13663`: Kill the PkgConfig singleton in setupext. +* :ghpull:`13067`: Simplify generation of error messages for missing libpng/freetype. +* :ghpull:`14358`: DOC boxplot ``whis`` parameter +* :ghpull:`14014`: Disallow figure argument for pyplot.subplot() and Figure.add_subplot() +* :ghpull:`14350`: Use cbook._check_in_list more often. +* :ghpull:`14348`: Cleanup markers.py. +* :ghpull:`14345`: Use importorskip for tests depending on pytz. +* :ghpull:`14170`: In setup.py, inline the packages that need to be installed into setup(). +* :ghpull:`14332`: Use raw docstrings instead of escaping backslashes +* :ghpull:`14336`: Enforce pydocstyle D412 +* :ghpull:`14144`: Deprecate the 'warn' parameter to matplotlib.use(). +* :ghpull:`14328`: Remove explicit inheritance from object +* :ghpull:`14035`: Improve properties formatting in interpolated docstrings. +* :ghpull:`14018`: pep8ing. +* :ghpull:`13542`: Move {setup,install}_requires from setupext.py to setup.py. +* :ghpull:`13670`: Simplify the logic of axis(). +* :ghpull:`14046`: Deprecate checkdep_ps_distiller. +* :ghpull:`14236`: Simplify StixFonts.get_sized_alternatives_for_symbol. +* :ghpull:`14101`: Shorten _ImageBase._make_image. +* :ghpull:`14246`: Deprecate public use of makeMappingArray +* :ghpull:`13740`: Deprecate plotfile. +* :ghpull:`14216`: Walk the artist tree when preparing for saving with tight bbox. +* :ghpull:`14305`: Small grammatical error. +* :ghpull:`14104`: Factor out retrieval of data relative to datapath +* :ghpull:`14016`: pep8ify backends. +* :ghpull:`14299`: Fix #13711 by importing cbook. +* :ghpull:`14244`: Remove APIs deprecated in mpl3.0. +* :ghpull:`14068`: Alternative fix for passing iterator as frames to FuncAnimation +* :ghpull:`13711`: Deprecate NavigationToolbar2Tk.set_active. +* :ghpull:`14280`: Simplify validate_markevery logic. +* :ghpull:`14273`: pep8ify a couple of variable names. +* :ghpull:`14115`: Reorganize scatter arguments parsing. +* :ghpull:`14271`: Replace some uses of np.iterable +* :ghpull:`14257`: Changing cmap(np.nan) to 'bad' value rather than 'under' value +* :ghpull:`14259`: Deprecate string as color sequence +* :ghpull:`13506`: Change colorbar for contour to have the proper axes limits... +* :ghpull:`13494`: Add colorbar annotation example plot to gallery +* :ghpull:`14266`: Make matplotlib.figure.AxesStack private +* :ghpull:`14166`: Shorten usage of ``@image_comparison``. +* :ghpull:`14240`: Merge up 31x +* :ghpull:`14242`: Avoid a buffer copy in PillowWriter. +* :ghpull:`9672`: Only set the wait cursor if the last draw was >1s ago. +* :ghpull:`14224`: Update plt.show() doc +* :ghpull:`14218`: Use stdlib mimetypes instead of hardcoding them. +* :ghpull:`14082`: In tk backend, don't try to update mouse position after resize. +* :ghpull:`14084`: Check number of positional arguments passed to quiver() +* :ghpull:`14214`: Fix some docstring style issues. +* :ghpull:`14201`: Fix E124 flake8 violations (closing bracket indentation). +* :ghpull:`14096`: Consistently use axs to refer to a set of Axes +* :ghpull:`14204`: Fix various flake8 indent problems. +* :ghpull:`14205`: Obey flake8 "don't assign a lambda, use a def". +* :ghpull:`14198`: Remove unused imports +* :ghpull:`14173`: Prepare to change the default pad for AxesDivider.append_axes. +* :ghpull:`13738`: Fix TypeError when plotting stacked bar chart with decimal +* :ghpull:`14151`: Clarify error with usetex when cm-super is not installed. +* :ghpull:`14107`: Feature: draw percentiles in violinplot +* :ghpull:`14172`: Remove check_requirements from setupext. +* :ghpull:`14158`: Fix test_lazy_imports in presence of $MPLBACKEND or matplotlibrc. +* :ghpull:`14157`: Isolate nbagg test from user ipython profile. +* :ghpull:`14147`: Dedent overindented list in example docstring. +* :ghpull:`14134`: Deprecate the dryrun parameter to print_foo(). +* :ghpull:`14145`: Remove warnings handling for fixed bugs. +* :ghpull:`13977`: Always import pyplot when calling matplotlib.use(). +* :ghpull:`14131`: Make test suite fail on warnings. +* :ghpull:`13593`: Only autoscale_view() when needed, not after every plotting call. +* :ghpull:`13902`: Add support for metadata= and pil_kwargs= in imsave(). +* :ghpull:`14140`: Avoid backslash-quote by changing surrounding quotes. +* :ghpull:`14132`: Move some toplevel strings into the only functions that use them. +* :ghpull:`13708`: Annotation.contains shouldn't consider the text+arrow's joint bbox. +* :ghpull:`13980`: Don't let margins expand polar plots to negative radii by default. +* :ghpull:`14075`: Remove uninformative entries from glossary. +* :ghpull:`14002`: Allow pandas DataFrames through norms +* :ghpull:`14114`: Allow SVG Text-as-Text to Use Data Coordinates +* :ghpull:`14120`: Remove mention of $QT_API in matplotlibrc example. +* :ghpull:`13878`: Style fixes for floating_axes. +* :ghpull:`14108`: Deprecate FigureCanvasMac.invalidate in favor of draw_idle. +* :ghpull:`13879`: Clarify handling of "extreme" values in FloatingAxisArtistHelper. +* :ghpull:`5602`: Automatic downsampling of images. +* :ghpull:`14112`: Remove old code path in layout.html +* :ghpull:`13959`: Scatter: make "c" and "s" argument handling more consistent. +* :ghpull:`14110`: Simplify scatter_piecharts example. +* :ghpull:`14111`: Trivial cleanups. +* :ghpull:`14085`: Simplify get_current_fig_manager(). +* :ghpull:`14083`: Deprecate FigureCanvasBase.draw_cursor. +* :ghpull:`14089`: Cleanup bar_stacked, bar_unit_demo examples. +* :ghpull:`14063`: Add pydocstyle checks to flake8 +* :ghpull:`14077`: Fix tick label wobbling in animated Qt example +* :ghpull:`14070`: Cleanup some pyplot docstrings. +* :ghpull:`6280`: Added ability to offset errorbars when using errorevery. +* :ghpull:`13679`: Fix passing iterator as frames to FuncAnimation +* :ghpull:`14023`: Improve Unicode minus example +* :ghpull:`14041`: Pretty-format subprocess logs. +* :ghpull:`14038`: Cleanup path.py docstrings. +* :ghpull:`13701`: Small cleanups. +* :ghpull:`14020`: Better error message when trying to use Gtk3Agg backend without cairo +* :ghpull:`14021`: Fix ax.legend Returns markup +* :ghpull:`13986`: Support RGBA for quadmesh mode of pcolorfast. +* :ghpull:`14009`: Deprecate compare_versions. +* :ghpull:`14010`: Deprecate get_home() +* :ghpull:`13932`: Remove many unused variables. +* :ghpull:`13854`: Cleanup contour.py. +* :ghpull:`13866`: Switch PyArg_ParseTupleAndKeywords from "es" to "s". +* :ghpull:`13945`: Make unicode_minus example more focused. +* :ghpull:`13876`: Deprecate factor=None in axisartist. +* :ghpull:`13929`: Better handle deprecated rcParams. +* :ghpull:`13851`: Deprecate setting Axis.major.locator to non-Locator; idem for Formatters +* :ghpull:`13938`: numpydocify quiverkey. +* :ghpull:`13936`: Pathlibify animation. +* :ghpull:`13984`: Allow setting tick colour on 3D axes +* :ghpull:`13987`: Deprecate mlab.{apply_window,stride_repeat}. +* :ghpull:`13983`: Fix locator/formatter setting when removing shared Axes +* :ghpull:`13957`: Remove many unused variables in tests. +* :ghpull:`13981`: Test cleanups. +* :ghpull:`13970`: Check vmin/vmax are valid when doing inverse in LogNorm +* :ghpull:`13978`: Make normalize_kwargs more convenient for third-party use. +* :ghpull:`13972`: Remove _process_plot_var_args.set{line,patch}_props. +* :ghpull:`13795`: Make _warn_external correctly report warnings arising from tests. +* :ghpull:`13885`: Deprecate axisartist.grid_finder.GridFinderBase. +* :ghpull:`13913`: Fix string numbers in to_rgba() and is_color_like() +* :ghpull:`13935`: Deprecate the useless switch_backend_warn parameter to matplotlib.test. +* :ghpull:`13952`: Cleanup animation tests. +* :ghpull:`13942`: Make Cursors an (Int)Enum. +* :ghpull:`13953`: Unxfail a now fixed test in test_category. +* :ghpull:`13925`: Fix passing Path to ps backend when text.usetex rc is True. +* :ghpull:`13943`: Don't crash on str(figimage(...)). +* :ghpull:`13944`: Document how to support unicode minus in pgf backend. +* :ghpull:`13802`: New rcparam to set default axes title location +* :ghpull:`13855`: ``a and b or c`` -> ``b if a else c`` +* :ghpull:`13923`: Correctly handle invalid PNG metadata. +* :ghpull:`13926`: Suppress warnings in tests. +* :ghpull:`13920`: Style fixes for category.py. +* :ghpull:`13889`: Shorten docstrings by removing unneeded :class:/:func: + rewordings. +* :ghpull:`13911`: Fix joinstyles example +* :ghpull:`13917`: Faster categorical tick formatter. +* :ghpull:`13918`: Make matplotlib.testing assume pytest by default, not nose. +* :ghpull:`13894`: Check for positive number of rows and cols +* :ghpull:`13895`: Remove unused setupext.is_min_version. +* :ghpull:`13886`: Shorten Figure.set_size_inches. +* :ghpull:`13859`: Ensure figsize is positive finite +* :ghpull:`13877`: ``zeros_like(x) + y`` -> ``full_like(x, y)`` +* :ghpull:`13875`: Style fixes for grid_helper_curvelinear. +* :ghpull:`13873`: Style fixes to grid_finder. +* :ghpull:`13782`: Don't access internet during tests. +* :ghpull:`13833`: Some more usage of _check_in_list. +* :ghpull:`13834`: Cleanup FancyArrowPatch docstring +* :ghpull:`13811`: Generate Figure method wrappers via boilerplate.py +* :ghpull:`13797`: Move sphinxext test to matplotlib.tests like everyone else. +* :ghpull:`13770`: broken_barh docstring +* :ghpull:`13757`: Remove mention of "enabling fontconfig support". +* :ghpull:`13454`: Add "c" as alias for "color" for Collections +* :ghpull:`13756`: Reorder the logic of _update_title_position. +* :ghpull:`13744`: Restructure boilerplate.py +* :ghpull:`13369`: Use default colours for examples +* :ghpull:`13697`: Delete pyplot_scales example. +* :ghpull:`13726`: Clarify a bit the implementation of blend_hsv. +* :ghpull:`13731`: Check for already running QApplication in Qt embedding example. +* :ghpull:`13736`: Deduplicate docstrings and validation for set_alpha. +* :ghpull:`13737`: Remove duplicated methods in FixedAxisArtistHelper. +* :ghpull:`13721`: Kill pyplot docstrings that get overwritten by @docstring.copy. +* :ghpull:`13690`: Cleanup hexbin. +* :ghpull:`13683`: Remove axes border for examples that list styles +* :ghpull:`13280`: Add SubplotSpec.add_subplot. +* :ghpull:`11387`: Deprecate Axes3D.w_{x,y,z}axis in favor of .{x,y,z}axis. +* :ghpull:`13671`: Suppress some warnings in tests. +* :ghpull:`13657`: DOC: fail the doc build on errors, but keep going to end +* :ghpull:`13647`: Fix FancyArrowPatch joinstyle +* :ghpull:`13637`: BLD: parameterize python_requires +* :ghpull:`13633`: plot_directive: Avoid warning if plot_formats doesn't contain 'png' +* :ghpull:`13629`: Small example simplification. +* :ghpull:`13620`: Improve watermark example +* :ghpull:`13589`: Kill Axes._connected. +* :ghpull:`13428`: free cart pendulum animation example +* :ghpull:`10487`: fixed transparency bug +* :ghpull:`13551`: Fix IndexError for pyplot.legend() when plotting empty bar chart with label +* :ghpull:`13524`: Cleanup docs for GraphicsContextBase.{get,set}_dashes. +* :ghpull:`13556`: Cleanup warnings handling in tests. +* :ghpull:`8100`: Deprecate MAXTICKS, Locator.raise_if_exceeds. +* :ghpull:`13534`: More followup to autoregistering 3d axes. +* :ghpull:`13327`: pcolorfast simplifications. +* :ghpull:`13532`: More use of cbook._check_in_list. +* :ghpull:`13520`: Register 3d projection by default. +* :ghpull:`13394`: Deduplicate some code between floating_axes and grid_helper_curvelinear. +* :ghpull:`13527`: Make SubplotSpec.num2 never None. +* :ghpull:`12249`: Replaced noqa-comments by using Axes3D.name instead of '3d' for proje… + +Issues (125): + +* :ghissue:`16487`: Add link to blog to front page +* :ghissue:`16478`: The bottom parameter of plt.hist() shifts the data as well, not just the baseline +* :ghissue:`16280`: SymLogNorm colorbar incorrect on master +* :ghissue:`16448`: Bad interaction between shared axes and pcolormesh sticky edges +* :ghissue:`16451`: InvertedLogTransform inherits from deprecated base +* :ghissue:`16420`: Error when adding colorbar to pcolormesh of a boolean array +* :ghissue:`16114`: Prose error on website (first paragraph) +* :ghissue:`8291`: Unable to pickle.load(fig) with mpl in jupyter notebook +* :ghissue:`16173`: Constrained_layout creates extra axes when used with subgridspec +* :ghissue:`16127`: nbformat 5.0.0 missing schema files +* :ghissue:`15849`: Using pandas.Timestamp in blended coordinate system of ax.annotate. +* :ghissue:`6015`: scatterplot axis autoscale fails for small data values +* :ghissue:`15806`: 3.2.0 may break some Cartopy tests +* :ghissue:`15852`: Lasso selector does not show in Jupyter notebook +* :ghissue:`15820`: Show incomplete tick labels when using mixed chinese and english characters +* :ghissue:`15770`: DOCS 2D Line label option ``_nolegend_`` is not documented +* :ghissue:`15332`: Type promotion error with datetime bins in hist +* :ghissue:`15611`: BUG: Qt5Agg window size regression +* :ghissue:`7130`: Incorrect autoscaling of polar plot limits after scatter +* :ghissue:`15576`: Multi-line ticks cause cut-offs +* :ghissue:`8609`: Clipped tick labels +* :ghissue:`15517`: antialiased image check seems wrong when used on zoomed image +* :ghissue:`13400`: Qt Embedding w/ Spyder +* :ghissue:`14724`: drawstyle parameter of line needs example +* :ghissue:`13619`: Importing matplotlib.animation prevents python script from executing in the background +* :ghissue:`14270`: Secondary axis called with [0, 1] might produce exceptions in case these are invalid data +* :ghissue:`15417`: Why is smart_bounds() being deprecated? +* :ghissue:`9778`: Blanks in colorbar just inside of 'extend' arrowpoints when using AxesGrid +* :ghissue:`15336`: DivergingNorm is a misleading name +* :ghissue:`15399`: OSError: [Errno 86] Bad CPU type in executable: 'convert' on import matplotlib.animation +* :ghissue:`15109`: matplotlib.collections inheritance diagram small/blurry +* :ghissue:`15331`: Log Scale: FloatingPointError: underflow encountered in power +* :ghissue:`15251`: Large memory growth with log scaling and linear ticking +* :ghissue:`15247`: Colorbar tick placement issues with ImageGrid and LogNorm +* :ghissue:`15306`: Footer off centre +* :ghissue:`13485`: Matplotlib NavigationToolbar2Tk disappears when reducing window size +* :ghissue:`15232`: DOC: Automatic default rcParam expansion creates misleading sentences +* :ghissue:`14141`: setting spine position on a log plot fails +* :ghissue:`15138`: Make plt.style.use accept path-like objects in addition to string +* :ghissue:`14207`: Check if point is in path or not by contains_point +* :ghissue:`13591`: Style issues when building the docs with (future) Sphinx 2.0 +* :ghissue:`8089`: Using Minute Locator to set x-axis ticks exceeds Locator.MAXTICKS +* :ghissue:`15075`: sphinxext.missing_references does not specify if it supports parallel file read. +* :ghissue:`10963`: Replace \pgfimage by \includegraphics in PGF backend +* :ghissue:`15156`: ax.text fails with positional argument error +* :ghissue:`14439`: hist() fails when all data points are np.nan +* :ghissue:`15042`: How to handle sphinx nitpicky mode +* :ghissue:`14060`: quiver(C=...) argument is not reasonably validated +* :ghissue:`11335`: TST: testing not catching bad escape sequences in doc strings +* :ghissue:`15040`: Wrong figure window size after calling fig.set_size_inches() repeatedly +* :ghissue:`15100`: Issue with creating QApplication in QT backend +* :ghissue:`14887`: kerning seems generally wrong +* :ghissue:`14800`: default tick formatter could switch to scientific notation earlier +* :ghissue:`14503`: Add a test for #14451 +* :ghissue:`14907`: ConnectionPatch across axes needs to be excluded from layout management +* :ghissue:`14911`: Removing a shared axes via ``ax.remove()`` leads to an error. +* :ghissue:`12462`: cbar.add_lines should allow manually adding lines, not just contour sets +* :ghissue:`14796`: Show user how to use Agg buffer in example +* :ghissue:`14883`: MinSize not respected using wx backend causes wxAssertionError. Bug fix included. +* :ghissue:`15014`: Wrapping of text adds leading newline character if first word is long +* :ghissue:`14918`: constrained_layout fails with hidden axis... +* :ghissue:`14981`: Barplot call crashes when called with yscale="log" and bins with h=0 +* :ghissue:`4621`: Default bottom of Stepfilled histograms should be set according to ymin +* :ghissue:`15030`: Doc build broken +* :ghissue:`8093`: set_ylim not working with plt.axis('equal') +* :ghissue:`6055`: Serious problems on the axes documentation +* :ghissue:`9979`: Axis limits are set badly with small values in scatter(). +* :ghissue:`10842`: Text bbox empty dict should be ignored +* :ghissue:`13698`: The default logit minor locator should not display tick labels +* :ghissue:`14878`: plt.yscale doesn't throw warning with invalid kwarg +* :ghissue:`5619`: Symlog linear region +* :ghissue:`14564`: Broken string interpolation +* :ghissue:`13668`: Add better error message to plt.axis() +* :ghissue:`14563`: colorbar label prints "None" when label=None +* :ghissue:`13660`: Closing a matplotlib figure with event handling occasionally causes “TypeError: isinstance()” +* :ghissue:`13033`: 'NoneType' has no attribute '_alive' when using plt in a context manager +* :ghissue:`13891`: Blurry app icon on macOS +* :ghissue:`14656`: Axes title default color +* :ghissue:`14831`: DOC: Webpage not formated correctly on gallery docs +* :ghissue:`13819`: Aspect ratio for not so common scales +* :ghissue:`8878`: Setting aspect ratio for semi-log plots +* :ghissue:`4900`: UnboundLocalError: local variable 'aspect_scale_mode' referenced before assignment +* :ghissue:`14608`: Issue with using plt.axis('equal') with plt.polar(theta,r) plot +* :ghissue:`12893`: [PyQt] NavigationToolbar2QT : Error when removing tools +* :ghissue:`14670`: indicate_inset rectangles is sensitive to axis-flipping +* :ghissue:`14362`: Add link to style examples in matplotlib.style documentation +* :ghissue:`6295`: restore_region is not documented as a method of FigureCanvas +* :ghissue:`14754`: Better pointer to dev docs on website +* :ghissue:`14744`: Savefig svg fails with "Cannot cast array data from dtype(' Date: Tue, 17 Mar 2020 17:47:44 -0400 Subject: [PATCH 39/42] Add GitHub stats for 3.2-doc changes. --- doc/users/github_stats.rst | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/doc/users/github_stats.rst b/doc/users/github_stats.rst index 88a6dc3ce23b..b334a404a5b2 100644 --- a/doc/users/github_stats.rst +++ b/doc/users/github_stats.rst @@ -7,14 +7,17 @@ GitHub stats for 2020/03/03 - 2020/03/17 (tag: v3.2.0) These lists are automatically generated, and may be incomplete or contain duplicates. -We closed 11 issues and merged 44 pull requests. +We closed 12 issues and merged 54 pull requests. The full list can be seen `on GitHub `__ +and `on GitHub `__ -The following 11 authors contributed 89 commits. +The following 13 authors contributed 158 commits. +* Amy Roberts * Antony Lee * Elliott Sales de Andrade * hannah +* Hugo van Kemenade * Jody Klymak * Kyle Sunden * MarcoGorelli @@ -26,7 +29,7 @@ The following 11 authors contributed 89 commits. GitHub issues and pull requests: -Pull Requests (44): +Pull Requests (54): * :ghpull:`15199`: MNT/TST: generalize check_figures_equal to work with pytest.marks * :ghpull:`15685`: Avoid a RuntimeError at animation shutdown with PySide2. @@ -35,10 +38,13 @@ Pull Requests (44): * :ghpull:`16648`: Document filling of Poly3DCollection * :ghpull:`16649`: Fix typo in docs * :ghpull:`16650`: Backport PR #16649 on branch v3.2.x (Fix typo in docs) +* :ghpull:`16651`: Docs: Change Python 2 note to past tense +* :ghpull:`16654`: Backport PR #16651 on branch v3.2.0-doc (Docs: Change Python 2 note to past tense) * :ghpull:`16656`: Make test_imagegrid_cbar_mode_edge less flaky. * :ghpull:`16661`: added Framework :: Matplotlib to setup * :ghpull:`16665`: Backport PR #16661 on branch v3.2.x (added Framework :: Matplotlib to setup) * :ghpull:`16671`: Fix some readme bits +* :ghpull:`16672`: Update CircleCI and add direct artifact link * :ghpull:`16682`: Avoid floating point rounding causing bezier.get_parallels to fail * :ghpull:`16690`: Backport PR #16682 on branch v3.2.x (Avoid floating point rounding causing bezier.get_parallels to fail) * :ghpull:`16693`: TST: use pytest name in naming files for check_figures_equal @@ -61,19 +67,26 @@ Pull Requests (44): * :ghpull:`16760`: Backport PR #16735 on branch v3.2.x (Make test_stem less flaky.) * :ghpull:`16761`: Backport PR #16745 on branch v3.2.x (Allow numbers to set uvc for all arrows in quiver.set_UVC, fixes #16743) * :ghpull:`16763`: Backport PR #16648 on branch v3.2.x (Document filling of Poly3DCollection) +* :ghpull:`16764`: Backport PR #16672 on branch v3.2.0-doc * :ghpull:`16765`: Backport PR #16736 on branch v3.2.x (xpdf: Set AutoRotatePages to None, not false.) * :ghpull:`16766`: Backport PR #16734 on branch v3.2.x (Disable draw_foo methods on renderer used to estimate tight extents.) * :ghpull:`16767`: Backport PR #15685 on branch v3.2.x (Avoid a RuntimeError at animation shutdown with PySide2.) * :ghpull:`16768`: Backport PR #16725 on branch v3.2.x (TST/CI: also try to run test_user_fonts_win32 on azure) * :ghpull:`16770`: Fix tuple markers +* :ghpull:`16779`: Documentation: make instructions for documentation contributions easier to find, add to requirements for building docs * :ghpull:`16784`: Update CircleCI URL for downloading humor-sans.ttf. * :ghpull:`16790`: Backport PR #16784 on branch v3.2.x (Update CircleCI URL for downloading humor-sans.ttf.) * :ghpull:`16791`: Backport PR #16770 on branch v3.2.x (Fix tuple markers) +* :ghpull:`16794`: DOC: Don't mention drawstyle in ``set_linestyle`` docs. * :ghpull:`16795`: Backport PR #15199 on branch v3.2.x (MNT/TST: generalize check_figures_equal to work with pytest.marks) * :ghpull:`16797`: Backport #15589 and #16693, fixes for check_figures_equal +* :ghpull:`16799`: Backport PR #16794 on branch v3.2.0-doc (DOC: Don't mention drawstyle in ``set_linestyle`` docs.) * :ghpull:`16800`: Fix check_figures_equal for tests that use its fixtures. +* :ghpull:`16803`: Fix some doc issues +* :ghpull:`16806`: Backport PR #16803 on branch v3.2.0-doc (Fix some doc issues) +* :ghpull:`16809`: Backport PR #16779 on branch v3.2.0-doc (Documentation: make instructions for documentation contributions easier to find, add to requirements for building docs) -Issues (11): +Issues (12): * :ghissue:`12820`: [Annotations] ValueError: lines do not intersect when computing tight bounding box containing arrow with filled paths * :ghissue:`16538`: xpdf distiller seems broken @@ -86,6 +99,7 @@ Issues (11): * :ghissue:`16731`: PGF backend + savefig.bbox results in I/O error in 3.2 * :ghissue:`16739`: a length check fails (_axes.py @ 4386): new to 3.2.0; not present in 3.1.3 * :ghissue:`16743`: Breaking change in 3.2: quiver.set_UVC does not support single numbers any more +* :ghissue:`16801`: Doc: figure for colormaps off Previous GitHub Stats From 13e21ad690cd8d66b520efb3869d49c1b57e3bee Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 17 Mar 2020 19:08:26 -0400 Subject: [PATCH 40/42] DOC: Fix broken links. --- doc/index.rst | 2 +- doc/users/prev_whats_new/whats_new_1.0.rst | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/doc/index.rst b/doc/index.rst index 19a3c9e1ca9c..6e091938979a 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -198,7 +198,7 @@ Open source Matplotlib is a Sponsored Project of NumFOCUS, a 501(c)(3) nonprofit charity in the United States. NumFOCUS provides Matplotlib with fiscal, legal, and administrative support to help ensure the health -and sustainability of the project. Visit `numfocus.org `_ for more +and sustainability of the project. Visit `numfocus.org `_ for more information. Donations to Matplotlib are managed by NumFOCUS. For donors in the diff --git a/doc/users/prev_whats_new/whats_new_1.0.rst b/doc/users/prev_whats_new/whats_new_1.0.rst index 981f8ea8a8c9..e8bb8f190bff 100644 --- a/doc/users/prev_whats_new/whats_new_1.0.rst +++ b/doc/users/prev_whats_new/whats_new_1.0.rst @@ -142,8 +142,6 @@ developers for the heavy lifting. Bugfix marathon ---------------- -Eric Firing went on a bug fixing and closing marathon, closing over -100 bugs on the `bug tracker -`__ with -help from Jae-Joon Lee, Michael Droettboom, Christoph Gohlke and -Michiel de Hoon. +Eric Firing went on a bug fixing and closing marathon, closing over 100 bugs on +the (now-closed) SourceForge bug tracker with help from Jae-Joon Lee, Michael +Droettboom, Christoph Gohlke and Michiel de Hoon. From 098d12ec37c6edacd0718f9a002e8031ccfa5f78 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Wed, 18 Mar 2020 00:05:48 -0400 Subject: [PATCH 41/42] Remove GitHub stats that aren't on this milestone. --- doc/users/github_stats.rst | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/doc/users/github_stats.rst b/doc/users/github_stats.rst index b334a404a5b2..5f127bc364bd 100644 --- a/doc/users/github_stats.rst +++ b/doc/users/github_stats.rst @@ -7,11 +7,11 @@ GitHub stats for 2020/03/03 - 2020/03/17 (tag: v3.2.0) These lists are automatically generated, and may be incomplete or contain duplicates. -We closed 12 issues and merged 54 pull requests. +We closed 11 issues and merged 52 pull requests. The full list can be seen `on GitHub `__ and `on GitHub `__ -The following 13 authors contributed 158 commits. +The following 12 authors contributed 154 commits. * Amy Roberts * Antony Lee @@ -23,13 +23,12 @@ The following 13 authors contributed 158 commits. * MarcoGorelli * Maximilian Nöthe * Sandro Tosi -* terrycojones * Thomas A Caswell * Tim Hoffmann GitHub issues and pull requests: -Pull Requests (54): +Pull Requests (52): * :ghpull:`15199`: MNT/TST: generalize check_figures_equal to work with pytest.marks * :ghpull:`15685`: Avoid a RuntimeError at animation shutdown with PySide2. @@ -49,13 +48,11 @@ Pull Requests (54): * :ghpull:`16690`: Backport PR #16682 on branch v3.2.x (Avoid floating point rounding causing bezier.get_parallels to fail) * :ghpull:`16693`: TST: use pytest name in naming files for check_figures_equal * :ghpull:`16695`: Restart pgf's latex instance after bad latex inputs. -* :ghpull:`16703`: Use ASCII hyphen in README.rst to prevent setup.py from raising UnicodeDecodeError when reading that file to set long_description * :ghpull:`16705`: Backport PR #16656 on branch v3.2.x (Make test_imagegrid_cbar_mode_edge less flaky.) * :ghpull:`16708`: Backport PR #16671: Fix some readme bits * :ghpull:`16709`: Fix saving PNGs to file objects in some places * :ghpull:`16722`: Deprecate rcParams["datapath"] in favor of mpl.get_data_path(). * :ghpull:`16725`: TST/CI: also try to run test_user_fonts_win32 on azure -* :ghpull:`16732`: Fix pgf+bbox_inches=tight combo * :ghpull:`16734`: Disable draw_foo methods on renderer used to estimate tight extents. * :ghpull:`16735`: Make test_stem less flaky. * :ghpull:`16736`: xpdf: Set AutoRotatePages to None, not false. @@ -86,7 +83,7 @@ Pull Requests (54): * :ghpull:`16806`: Backport PR #16803 on branch v3.2.0-doc (Fix some doc issues) * :ghpull:`16809`: Backport PR #16779 on branch v3.2.0-doc (Documentation: make instructions for documentation contributions easier to find, add to requirements for building docs) -Issues (12): +Issues (11): * :ghissue:`12820`: [Annotations] ValueError: lines do not intersect when computing tight bounding box containing arrow with filled paths * :ghissue:`16538`: xpdf distiller seems broken @@ -97,7 +94,6 @@ Issues (12): * :ghissue:`16704`: 3.2.0: ``setup.py clean`` fails with ``NameError: name 'long_description' is not defined`` * :ghissue:`16721`: nbAgg backend does not allow saving figures as png * :ghissue:`16731`: PGF backend + savefig.bbox results in I/O error in 3.2 -* :ghissue:`16739`: a length check fails (_axes.py @ 4386): new to 3.2.0; not present in 3.1.3 * :ghissue:`16743`: Breaking change in 3.2: quiver.set_UVC does not support single numbers any more * :ghissue:`16801`: Doc: figure for colormaps off From ca3d653536dec38a0c1ac3b80413961ca1bcdda6 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Wed, 18 Mar 2020 00:07:16 -0400 Subject: [PATCH 42/42] REL: v3.2.1 This is the first bugfix release of the 3.2.x series. This release contains several critical bug-fixes: - fix `Quiver.set_UVC` calls with scalar inputs - fix `bezier.get_parallels` failure from floating point rounding errors - fix markers specified as tuples (polygons, stars, or asterisks) - fix saving PNGs to file objects in some places - fix saving figures using the nbAgg/notebook backend - fix saving with tight layout using the PGF backend - fix setting custom datapath in rcParams (note: it is still deprecated) - fix various issues running setup.py in non-CI environments - fix xpdf distiller - various minor bug and documentation fixes