Public bug reported:
The test suite fails for with a RecursionError on python 3.14.
Example failure for contourpy:
=================================== FAILURES ===================================
_____________________________ test_save_png[False] _____________________________
transparent = False
tmpdir = local('/tmp/pytest-of-buildd/pytest-0/test_save_png_False_0')
@pytest.mark.image
@pytest.mark.parametrize("transparent", [False, True])
def test_save_png(transparent: bool, tmpdir: LocalPath) -> None:
from PIL import Image
from contourpy.util.mpl_renderer import MplRenderer
renderer = MplRenderer(figsize=(4, 3))
filename = (tmpdir / "mpl.png").strpath
> renderer.save(filename, transparent)
tests/test_renderer.py:197:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
contourpy/util/mpl_renderer.py:232: in save
self._fig.savefig(filename, transparent=transparent)
/usr/lib/python3/dist-packages/matplotlib/figure.py:3490: in savefig
self.canvas.print_figure(fname, **kwargs)
/usr/lib/python3/dist-packages/matplotlib/backend_bases.py:2184: in print_figure
result = print_method(
/usr/lib/python3/dist-packages/matplotlib/backend_bases.py:2040: in <lambda>
print_method = functools.wraps(meth)(lambda *args, **kwargs: meth(
/usr/lib/python3/dist-packages/matplotlib/backends/backend_agg.py:481: in
print_png
self._print_pil(filename_or_obj, "png", pil_kwargs, metadata)
/usr/lib/python3/dist-packages/matplotlib/backends/backend_agg.py:429: in
_print_pil
FigureCanvasAgg.draw(self)
/usr/lib/python3/dist-packages/matplotlib/backends/backend_agg.py:382: in draw
self.figure.draw(self.renderer)
/usr/lib/python3/dist-packages/matplotlib/artist.py:94: in draw_wrapper
result = draw(artist, renderer, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/matplotlib/artist.py:71: in draw_wrapper
return draw(artist, renderer)
^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/matplotlib/figure.py:3257: in draw
mimage._draw_list_compositing_images(
/usr/lib/python3/dist-packages/matplotlib/image.py:134: in
_draw_list_compositing_images
a.draw(renderer)
/usr/lib/python3/dist-packages/matplotlib/artist.py:71: in draw_wrapper
return draw(artist, renderer)
^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/matplotlib/axes/_base.py:3210: in draw
mimage._draw_list_compositing_images(
/usr/lib/python3/dist-packages/matplotlib/image.py:134: in
_draw_list_compositing_images
a.draw(renderer)
/usr/lib/python3/dist-packages/matplotlib/artist.py:71: in draw_wrapper
return draw(artist, renderer)
^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/matplotlib/axis.py:1404: in draw
ticks_to_draw = self._update_ticks()
^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/matplotlib/axis.py:1283: in _update_ticks
major_ticks = self.get_major_ticks(len(major_locs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/matplotlib/axis.py:1666: in get_major_ticks
self._copy_tick_props(self.majorTicks[0], tick)
/usr/lib/python3/dist-packages/matplotlib/axis.py:1612: in _copy_tick_props
dest.tick1line.update_from(src.tick1line)
/usr/lib/python3/dist-packages/matplotlib/lines.py:1358: in update_from
self._marker = MarkerStyle(marker=other._marker)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3/dist-packages/matplotlib/markers.py:248: in __init__
self._set_marker(marker)
/usr/lib/python3/dist-packages/matplotlib/markers.py:323: in _set_marker
self.__dict__ = copy.deepcopy(marker.__dict__)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/copy.py:131: in deepcopy
y = copier(x, memo)
^^^^^^^^^^^^^^^
/usr/lib/python3.14/copy.py:202: in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/copy.py:138: in deepcopy
y = copier(memo)
^^^^^^^^^^^^
/usr/lib/python3/dist-packages/matplotlib/path.py:285: in __deepcopy__
p = copy.deepcopy(super(), memo)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/copy.py:157: in deepcopy
y = _reconstruct(x, memo, *rv)
^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/copy.py:234: in _reconstruct
y = func(*args)
^^^^^^^^^^^
/usr/lib/python3.14/copy.py:233: in <genexpr>
args = (deepcopy(arg, memo) for arg in args)
^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/copy.py:138: in deepcopy
y = copier(memo)
^^^^^^^^^^^^
E RecursionError: maximum recursion depth exceeded
!!! Recursion detected (same locals & position)
Full logs at https://launchpadlibrarian.net/826149079/buildlog_ubuntu-
resolute-amd64.contourpy_1.3.1-1build2_BUILDING.txt.gz
** Affects: contourpy (Ubuntu)
Importance: Undecided
Assignee: Simon Chopin (schopin)
Status: New
** Tags: ftbfs
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2129668
Title:
RecursionError when on Python 3.14
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/contourpy/+bug/2129668/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs