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

Reply via email to