Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Trac #34693: Further support for matplotlib 3.6
#34668 was focusing on making doctests pass but did not test docbuilding. The following plot in `src/sage/plot/plot.py` {{{ .. PLOT:: g = plot(2*x+1,(x,0,5),ticks=[[0,1,e,pi,sqrt(20)],2],tick_formatter="latex") sphinx_plot(g) }}} is causing the building of the documentation to fail horribly. {{{ [plotting ] from /home/portage/sci-mathematics/sage-doc-9999/work/sage- doc-9999/src/doc/en/reference/plotting/sage/plot/plot.rst: [plotting ] Traceback (most recent call last): [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/artist.py", line 1378, in _get_tightbbox_for_layout_only [plotting ] return obj.get_tightbbox(*args, **{**kwargs, "for_layout_only": True}) [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/axis.py", line 1251, in get_tightbbox [plotting ] ticks_to_draw = self._update_ticks() [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/axis.py", line 1198, in _update_ticks [plotting ] minor_locs = self.get_minorticklocs() [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/axis.py", line 1431, in get_minorticklocs [plotting ] mask = np.isclose(tr_minor_locs[:, None], tr_major_locs[None, :], [plotting ] File "<__array_function__ internals>", line 180, in isclose [plotting ] File "/usr/lib/python3.10/site- packages/numpy/core/numeric.py", line 2373, in isclose [plotting ] yfin = isfinite(y) [plotting ] TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'' [plotting ] During handling of the above exception, another exception occurred: [plotting ] Traceback (most recent call last): [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/artist.py", line 1378, in _get_tightbbox_for_layout_only [plotting ] return obj.get_tightbbox(*args, **{**kwargs, "for_layout_only": True}) [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/axes/_base.py", line 4428, in get_tightbbox [plotting ] ba = martist._get_tightbbox_for_layout_only(axis, renderer) [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/artist.py", line 1380, in _get_tightbbox_for_layout_only [plotting ] return obj.get_tightbbox(*args, **kwargs) [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/axis.py", line 1251, in get_tightbbox [plotting ] ticks_to_draw = self._update_ticks() [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/axis.py", line 1198, in _update_ticks [plotting ] minor_locs = self.get_minorticklocs() [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/axis.py", line 1431, in get_minorticklocs [plotting ] mask = np.isclose(tr_minor_locs[:, None], tr_major_locs[None, :], [plotting ] File "<__array_function__ internals>", line 180, in isclose [plotting ] File "/usr/lib/python3.10/site- packages/numpy/core/numeric.py", line 2373, in isclose [plotting ] yfin = isfinite(y) [plotting ] TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'' [plotting ] During handling of the above exception, another exception occurred: [plotting ] Traceback (most recent call last): [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/artist.py", line 1378, in _get_tightbbox_for_layout_only [plotting ] return obj.get_tightbbox(*args, **{**kwargs, "for_layout_only": True}) [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/axis.py", line 1251, in get_tightbbox [plotting ] ticks_to_draw = self._update_ticks() [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/axis.py", line 1198, in _update_ticks [plotting ] minor_locs = self.get_minorticklocs() [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/axis.py", line 1431, in get_minorticklocs [plotting ] mask = np.isclose(tr_minor_locs[:, None], tr_major_locs[None, :], [plotting ] File "<__array_function__ internals>", line 180, in isclose [plotting ] File "/usr/lib/python3.10/site- packages/numpy/core/numeric.py", line 2373, in isclose [plotting ] yfin = isfinite(y) [plotting ] TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'' [plotting ] During handling of the above exception, another exception occurred: [plotting ] Traceback (most recent call last): [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/sphinxext/plot_directive.py", line 515, in _run_code [plotting ] exec(code, ns) [plotting ] File "<string>", line 2, in <module> [plotting ] File "<string>", line 37, in sphinx_plot [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/figure.py", line 3448, in tight_layout [plotting ] engine.execute(self) [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/layout_engine.py", line 180, in execute [plotting ] kwargs = get_tight_layout_figure( [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/_tight_layout.py", line 305, in get_tight_layout_figure [plotting ] kwargs = _auto_adjust_subplotpars(fig, renderer, [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/_tight_layout.py", line 82, in _auto_adjust_subplotpars [plotting ] bb += [martist._get_tightbbox_for_layout_only(ax, renderer)] [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/artist.py", line 1380, in _get_tightbbox_for_layout_only [plotting ] return obj.get_tightbbox(*args, **kwargs) [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/axes/_base.py", line 4428, in get_tightbbox [plotting ] ba = martist._get_tightbbox_for_layout_only(axis, renderer) [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/artist.py", line 1380, in _get_tightbbox_for_layout_only [plotting ] return obj.get_tightbbox(*args, **kwargs) [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/axis.py", line 1251, in get_tightbbox [plotting ] ticks_to_draw = self._update_ticks() [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/axis.py", line 1198, in _update_ticks [plotting ] minor_locs = self.get_minorticklocs() [plotting ] File "/usr/lib/python3.10/site- packages/matplotlib/axis.py", line 1431, in get_minorticklocs [plotting ] mask = np.isclose(tr_minor_locs[:, None], tr_major_locs[None, :], [plotting ] File "<__array_function__ internals>", line 180, in isclose [plotting ] File "/usr/lib/python3.10/site- packages/numpy/core/numeric.py", line 2373, in isclose [plotting ] yfin = isfinite(y) [plotting ] TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'' }}} Tests of this plot were disabled in #34668 and now we need to remove the plot. The whole example needs to be replaced by something that works. We could not overcome the problem of symbolic values that numpy rejects, but instead made a fix to circumvent numpy and revived the doctest and the example. URL: https://trac.sagemath.org/34693 Reported by: fbissey Ticket author(s): Kwankyu Lee Reviewer(s): Matthias Koeppe
- Loading branch information