From d526148038fc33cf7257d373fcc8231462b4ed52 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 2 Mar 2023 12:34:15 -0500 Subject: [PATCH] Backport PR #25339: Disable discarded animation warning on save --- lib/matplotlib/animation.py | 14 +++++++++----- lib/matplotlib/tests/test_animation.py | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/matplotlib/animation.py b/lib/matplotlib/animation.py index 8decf5e87237..2d8156a51599 100644 --- a/lib/matplotlib/animation.py +++ b/lib/matplotlib/animation.py @@ -992,6 +992,15 @@ def func(current_frame: int, total_frames: int) -> Any is a `.MovieWriter`, a `RuntimeError` will be raised. """ + all_anim = [self] + if extra_anim is not None: + all_anim.extend(anim for anim in extra_anim + if anim._fig is self._fig) + + # Disable "Animation was deleted without rendering" warning. + for anim in all_anim: + anim._draw_was_started = True + if writer is None: writer = mpl.rcParams['animation.writer'] elif (not isinstance(writer, str) and @@ -1030,11 +1039,6 @@ def func(current_frame: int, total_frames: int) -> Any if metadata is not None: writer_kwargs['metadata'] = metadata - all_anim = [self] - if extra_anim is not None: - all_anim.extend(anim for anim in extra_anim - if anim._fig is self._fig) - # If we have the name of a writer, instantiate an instance of the # registered class. if isinstance(writer, str): diff --git a/lib/matplotlib/tests/test_animation.py b/lib/matplotlib/tests/test_animation.py index 9f41ff5cc69c..49e6a374ea57 100644 --- a/lib/matplotlib/tests/test_animation.py +++ b/lib/matplotlib/tests/test_animation.py @@ -514,5 +514,5 @@ def test_movie_writer_invalid_path(anim): else: match_str = re.escape("[Errno 2] No such file or directory: '/foo") with pytest.raises(FileNotFoundError, match=match_str): - _ = anim.save("/foo/bar/aardvark/thiscannotreallyexist.mp4", - writer=animation.FFMpegFileWriter()) + anim.save("/foo/bar/aardvark/thiscannotreallyexist.mp4", + writer=animation.FFMpegFileWriter())