Ë
    µ2Úi†E  ã                   óº	  — d dl Z d dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z
d dlZd dlZd dlmZ d dlmZ d dlmZ  ej&                  «       d„ «       Z G d„ dej*                  «      Zd	„ Zej0                  j3                  d
 ee¬«      gd
g¬«      d„ «       Zd„ Zej:                  j=                  d«       G d„ de«      «       Zg d¢Z d„ Z!ej0                  j3                  d e!«       «      ej0                  j3                  d
 ee¬«      gd
g¬«      d„ «       «       Z"ej0                  j3                  d e!«       «      d„ «       Z#ej0                  j3                  d ejH                  dej0                  jK                  ejL                  jO                  «        d¬«      ¬«       ejH                  dej0                  jK                  ejP                  jO                  «        d¬«      ¬«      g«      ej0                  j3                  dg d¢«      ej0                  j3                  d
 ee¬«      gd
g¬«      d „ «       «       «       Z)ej0                  j3                  d
d! e* e+d"«      «      d#œgd
g¬«      d$„ «       Z,d%„ Z-ej0                  j3                  d& ejH                  d'ej0                  jK                  ej:                  j]                  ej^                  d(   «       d)¬«      ¬«      d*g«      ej0                  j3                  d
 ed+¬,«      gd
g¬«      d-„ «       «       Z0ej0                  j3                  d& ejH                  d'ej0                  jK                  ej:                  j]                  ej^                  d(   «       d)¬«      ¬«      d*g«      ej0                  j3                  d
 ed+¬,«      gd
g¬«      d.„ «       «       Z1ej0                  jK                   ejd                  d/«      du d0¬«      d1„ «       Z3ej0                  j3                  d2d3d4g«      d5„ «       Z4ej0                  j3                  d6g d7¢«      d8„ «       Z5d9„ Z6d:„ Z7 ed;g¬<«      d=„ «       Z8ej0                  j3                  d
 ee¬«      gd
g¬«      d>„ «       Z9ej0                  j3                  d
 ee¬«      gd
g¬«      d?„ «       Z:ej0                  j3                  d
 ee¬«      gd
g¬«      d@„ «       Z;dA„ Z<y)Bé    N)ÚPath)Úpyplot)Ú	animation)Úcheck_figures_equalc                 óL  ‡— t        j                  «       \  }}|j                  g g «      \  Š|j                  dd«       |j	                  dd«       ˆfd„}ˆfd„}t        t        | di «      «      }|j                  dt        j                  «      }d	|vrd
|d	<    |d|||dœ|¤ŽS )z)Create a simple animation (with options).r   é
   éÿÿÿÿé   c                  ó.   •— ‰ j                  g g «       ‰ fS ©N©Úset_data©Úlines   €úV/var/www/html/acx/venv/lib/python3.12/site-packages/matplotlib/tests/test_animation.pyÚinitzanim.<locals>.init   ó   ø€ Ø�‰�b˜"ÔØˆuˆó    c                 óŒ   •— t        j                  ddd«      }t        j                  || z   «      }‰j                  ||«       ‰fS )Nr   r   éd   )ÚnpÚlinspaceÚsinr   )ÚiÚxÚyr   s      €r   Úanimatezanim.<locals>.animate    s;   ø€ Ü�K‰K˜˜2˜sÓ#ˆÜ�F‰F�1�q‘5‹MˆØ�‰�a˜ÔØˆuˆr   ÚparamÚklassÚframesé   )ÚfigÚfuncÚ	init_func© )
ÚpltÚsubplotsÚplotÚset_xlimÚset_ylimÚdictÚgetattrÚpopr   ÚFuncAnimation)Úrequestr"   Úaxr   r   Úkwargsr   r   s          @r   Úanimr2      sŸ   ø€ ô �l‰l‹n�G€CˆØ�G‰G�B˜‹O�E€Dà‡K�K��2ÔØ‡K�K��AÔôôô ”'˜' 7¨BÓ/Ó0€FØ�J‰J�w¤	× 7Ñ 7Ó8€EØ�vÑØˆˆxÑÙÐA�S˜w°$ÑA¸&ÑAÐAr   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚNullMovieWriteraž  
    A minimal MovieWriter.  It doesn't actually write anything.
    It just saves the arguments that were given to the setup() and
    grab_frame() methods as attributes, and counts how many times
    grab_frame() is called.

    This class doesn't have an __init__ method with the appropriate
    signature, and it doesn't define an isAvailable() method, so
    it cannot be added to the 'writers' registry.
    c                 óJ   — || _         || _        || _        || _        d| _        y )Nr   )r"   ÚoutfileÚdpiÚargsÚ_count)Úselfr"   r6   r7   r8   s        r   ÚsetupzNullMovieWriter.setup:   s%   € ØˆŒØˆŒØˆŒØˆŒ	Øˆ�r   c                 óX   — ddl m}  ||«       || _        | xj                  dz  c_        y )Nr   )Ú_validate_grabframe_kwargsr
   )Úmatplotlib.animationr=   Úsavefig_kwargsr9   )r:   r?   r=   s      r   Ú
grab_framezNullMovieWriter.grab_frameA   s#   € ÝCÙ" >Ô2Ø,ˆÔØ�Š�qÑŽr   c                  ó   — y r   r%   ©r:   s    r   ÚfinishzNullMovieWriter.finishG   s   € Ør   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r;   r@   rC   r%   r   r   r4   r4   .   s   „ ñ	òòór   r4   c                 óÄ  — dt         j                  d<   d}d}t        d¬«      }t        «       }| j	                  ||||¬«       |j
                  t        j                  d«      k(  sJ ‚|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j                  d	k(  sJ ‚|j                  «       D ]  \  }}|j                  |   |k(  rŒJ ‚ |j                  | j                  k(  sJ ‚y )
NÚautozsavefig.facecolorúunused.nullé2   r   )Úfoo)r7   Úwriterr?   r
   r%   )r&   ÚrcParamsr+   r4   Úsaver"   Úfigurer6   r7   r8   Úitemsr?   r9   Ú_save_count)r2   Úfilenamer7   r?   rM   ÚkÚvs          r   Útest_null_movie_writerrV   K   sç   € à(.„C‡L�LÐ$Ñ%Ø€HØ
€CÜ˜a”[€NÜÓ€Fà‡I�Iˆh˜C¨Ø+ð ô -ð �:‰:œŸ™ A›Ò&Ð&Ð&Ø�>‰>˜XÒ%Ð%Ð%Ø�:‰:˜ÒÐÐØ�;‰;˜"ÒÐÐð ×$Ñ$Ó&ò -‰ˆˆ1Ø×$Ñ$ QÑ'¨1Ó,Ð,Ð,ð-à�=‰=˜D×,Ñ,Ò,Ð,Ñ,r   r2   )r   )Úindirectc                 ó6  — t        j                  «       dk(  rt        j                  j	                  «        t        j                  di | ¤Ž} t        j                  t        d¬«      5  ~ t        j                  j	                  «        d d d «       y # 1 sw Y   y xY w)NÚPyPyzAnimation was deleted©Úmatchr%   )
ÚplatformÚpython_implementationr   ÚtestingÚbreak_cyclesr   r.   ÚpytestÚwarnsÚWarning©r2   s    r   Útest_animation_deleterd   a   so   € ä×%Ñ%Ó'¨6Ò1ô 	�
‰
×ÑÔ!Ü×"Ñ"Ñ* TÑ*€DÜ	�‰”gÐ%<Ô	=ñ "ØÜ
�
‰
×ÑÔ!÷"÷ "ñ "ús   Á& BÂBc                  óä   —  G d„ dt         j                  «      } t        j                  «       }d}d}d}d}dg} | ||||«      }|j	                  ||«       |j
                  |j
                  k(  sJ ‚y )Nc                   ó   — e Zd Zd„ Zy)ú7test_movie_writer_dpi_default.<locals>.DummyMovieWriterc                  ó   — y r   r%   rB   s    r   Ú_runz<test_movie_writer_dpi_default.<locals>.DummyMovieWriter._runp   s   € Ør   N)rD   rE   rF   ri   r%   r   r   ÚDummyMovieWriterrg   o   s   „ ó	r   rj   rJ   r!   Úunusedr
   )r   ÚMovieWriterr&   rP   r;   r7   )rj   r"   rS   ÚfpsÚcodecÚbitrateÚ
extra_argsrM   s           r   Útest_movie_writer_dpi_defaultrq   n   sp   € ôœ9×0Ñ0ô ô
 �*‰*‹,€Cà€HØ
€CØ€EØ€GØ�€Já˜c 5¨'°:Ó>€FØ
‡L�L��hÔØ�:‰:˜Ÿ™Ò Ð Ñ r   Únullc                   ó(   — e Zd Z	 	 dd„Zed„ «       Zy)ÚRegisteredNullMovieWriterNc                  ó   — y r   r%   )r:   rm   rn   ro   rp   Úmetadatas         r   Ú__init__z"RegisteredNullMovieWriter.__init__Š   s   € àr   c                  ó   — y)NTr%   )Úclss    r   ÚisAvailablez%RegisteredNullMovieWriter.isAvailableŽ   s   € àr   )NNNNN)rD   rE   rF   rw   Úclassmethodrz   r%   r   r   rt   rt   �   s#   „ ð 6:Ø+/óð ñó ñr   rt   ))Úffmpegú	movie.mp4)Úffmpeg_filer}   )Úimagemagickú	movie.gif)Úimagemagick_filer€   )Úpillowr€   )Úhtmlz
movie.html)rr   z
movie.nullc               #   óª  K  — t         D ]Æ  \  } }t        j                  j                  | «      set        j
                  j                  d| › d�«      }t	        j                  | d ||g¬«      –— t	        j                  | d t        |«      |g¬«      –— ŒŠt        j                  |    }t        |dd g«      D ]  }| ||f–— | |t        |«      f–— Œ ŒÈ y ­w)Nzwriter 'z' not available on this system©ÚmarksÚsupported_formats)
ÚWRITER_OUTPUTr   ÚwritersÚis_availabler`   ÚmarkÚskipr   r   r,   )rM   Úoutputr‹   Úwriter_classÚframe_formats        r   Úgen_writersr�   ž   sÍ   è ø€ Ü'ò 5‰ˆ�Ü× Ñ ×-Ñ-¨fÔ5Ü—;‘;×#Ñ#Ø˜6˜(Ð"@ÐAóCˆDä—,‘,˜v t¨V¸D¸6ÔBÒBÜ—,‘,˜v t¬T°&«\À$ÀÔHÒHØä ×(Ñ(¨Ñ0ˆÜ# LÐ2EÈÀvÓNò 	5ˆLØ˜,¨Ð.Ò.Ø˜,¬¨V«Ð4Ó4ñ	5ñ5ùs   ‚CCzwriter, frame_format, outputc           	      ó$  — |�|t         j                  d<   t        j                  d	i |¤Ž}d }d }|dk(  r|j                  j                  d«       d}d}| j                  «       5  |j                  |d|d||¬«       d d d «       ~y # 1 sw Y   ~y xY w)
Núanimation.frame_formatr|   ©g33333³%@gìQ¸…k"@ç      Y@Úh264é   iô  )rm   rM   ro   r7   rn   r%   )r&   rN   r   r.   Ú_figÚset_size_inchesÚas_cwdrO   )ÚtmpdirrM   r�   r�   r2   r7   rn   s          r   Útest_save_animation_smoketestr›   °   s�   € ð ÐØ1=Œ�‰Ð-Ñ.Ü×"Ñ"Ñ* TÑ*€DØ
€CØ€EØ�Òà�	‰	×!Ñ! -Ô0ØˆØˆð 
�‰‹ñ Ø�	‰	�&˜b¨¸À#Øð 	ô 	÷ñ 	÷	ñ 	ús   Á#BÂBc                 ó4  — t         j                  |   }|�|t        j                  d<   t        j                  «       \  }}d }d }|dk(  r|j                  d«       d}d} |«       }	| j                  «       5  |	j                  |||«      5  |	j                  «        dD ]E  }
t        j                  t        d|
›�¬«      5   |	j                  d	i |
t        «       i¤Ž d d d «       ŒG 	 d d d «       d d d «       y # 1 sw Y   ŒcxY w# 1 sw Y   ŒxY w# 1 sw Y   y xY w)
Nr’   r|   r“   r”   r•   >   r7   ÚformatÚbbox_inchesz.grab_frame got an unexpected keyword argument rZ   r%   )r   r‰   r&   rN   r'   r˜   r™   Úsavingr@   r`   ÚraisesÚ	TypeErrorÚobject)rš   rM   r�   r�   ÚWriterClassr"   r0   r7   rn   Útest_writerrT   s              r   Útest_grabframer¥   Ç   s  € ä×#Ñ# FÑ+€KàÐØ1=Œ�‰Ð-Ñ.ä�l‰l‹n�G€Cˆà
€CØ€EØ�Òà×Ñ˜MÔ*ØˆØˆá“-€Kð 
�‰‹ñ 	<Ø×Ñ  V¨SÓ1ñ 	<à×"Ñ"Ô$Ø5ò <�Ü—]‘]Ü!Ø NÈqÈeÐTôñ <ð +�K×*Ñ*Ñ;¨a´³¨]Ò;÷	<ð <ñ<÷	<÷	<ð 	<÷
<ð <ú÷		<ð 	<ú÷	<ð 	<ús<   Á5DÂ	4DÂ=C6	Ã
DÃ%DÃ6C?Ã;DÄD	ÄDÄDrM   r|   úRequires FFMpeg)Úreasonr…   r   zRequires ImageMagickz
html, want))ÚnoneN)Úhtml5z<video width)Újshtmlz<script c                 ó@  — t        j                  «       dk(  rt        j                  j	                  «        | dk(  r8|dk(  r3t
        j                  j                  «       st        j                  d«       t        j                  di |¤Ž}t        j                  | |dœ«      5  |j                  «       }d d d «       |€F|�J ‚t        j                  t        «      5  ~t        j                  j	                  «        d d d «       y ||v sJ ‚y # 1 sw Y   ŒXxY w# 1 sw Y   y xY w)NrY   r   r©   r¦   )úanimation.writerzanimation.htmlr%   )r\   r]   r   r^   r_   r   ÚFFMpegWriterrz   r`   rŒ   r.   r&   Ú
rc_contextÚ_repr_html_ra   ÚUserWarning)rM   rƒ   Úwantr2   s       r   Útest_animation_repr_htmlr²   ç   sú   € ô" ×%Ñ%Ó'¨6Ò1ô 	�
‰
×ÑÔ!Ø�-Ò D¨G¢Oä×*Ñ*×6Ñ6Ô8Ü�‰Ð%Ô&ô ×"Ñ"Ñ* TÑ*€DÜ	�‰¨VØ+/ñ1ó 
2ñ "à×ÑÓ!ˆ÷"ð €|Øˆ|Ðˆ|Ü�\‰\œ+Ó&ñ 	&ØÜ�J‰J×#Ñ#Ô%÷	&ð 	&ð �t‰|Ð‰|÷"ð "ú÷
	&ð 	&ús   Â DÃ DÄDÄDr   r!   )Ú
save_countr    c                 ó:   — | j                  dt        «       ¬«       y )NrJ   ©rM   )rO   r4   rc   s    r   Útest_no_length_framesr¶     s   € ð 	‡I�Iˆm¤OÓ$5€IÕ6r   c                  óR  — t        t        j                  j                  «      dkD  sJ ‚dt        j
                  d<   t        j                  j                  d«      rJ ‚t        j                  dk7  rdnd} | t        j
                  d<   t        j                  j                  d«      sJ ‚y )Nr   Únot_available_ever_xxxxzanimation.ffmpeg_pathr|   Úwin32ÚtrueÚwhere)	Úlenr   r‰   Ú_registeredÚmplrN   rŠ   Úsysr\   )Úbins    r   Útest_movie_writer_registryrÁ     s…   € ÜŒy× Ñ ×,Ñ,Ó-°Ò1Ð1Ð1Ø,E„C‡L�LÐ(Ñ)Ü× Ñ ×-Ñ-¨hÔ7Ð7Ð7ä—L‘L GÒ+‰&°€CØ,/„C‡L�LÐ(Ñ)Ü×Ñ×)Ñ)¨(Ô3Ð3Ñ3r   Úmethod_nameÚto_html5_videor¬   zanimation writer not installedÚ	to_jshtmlr
   )r    c                 óz  — |j                  d«       |j                  «       5  t        j                  ddi«      5   t	        || «      «        d d d «       d d d «       t        |j                  «      dk(  sJ ‚|j                  \  }|j                  dk(  r|j                  dk(  sJ ‚y # 1 sw Y   ŒZxY w# 1 sw Y   Œ^xY w)NÚWARNINGzanimation.embed_limitg�íµ ÷Æ°>r
   zmatplotlib.animation)	Ú	set_levelr™   r¾   r®   r,   r¼   ÚrecordsÚnameÚ	levelname)rÂ   Úcaplogrš   r2   Úrecords        r   Útest_embed_limitrÍ   #  s²   € ð ×Ñ�YÔØ	�‰‹ñ )Ü�^‰^Ð4°dÐ;Ó<ñ 	)Ø&ŒG�D˜+Ó&Ô(÷	)÷)ô ˆv�~‰~Ó !Ò#Ð#Ð#Ø�n‰n�G€FØ�K‰KÐ1Ò1Ø× Ñ  IÒ-ð/ð .Ø-÷	)ð 	)ú÷)ð )ús"   ¢B1ºB%ÁB1Â%B.	Â*B1Â1B:c                 óÒ   — |j                  «       5   t        || «      «        t        t        t	        |«      «      j                  «       «      g k(  sJ ‚	 d d d «       y # 1 sw Y   y xY wr   )r™   r,   Úlistr   ÚstrÚiterdir)rÂ   rš   r2   s      r   Útest_cleanup_temporariesrÒ   5  sV   € ð 
�‰‹ñ 7Ø"Œ��kÓ"Ô$Ü”Dœ˜V›Ó%×-Ñ-Ó/Ó0°BÒ6Ð6Ñ6÷7÷ 7ñ 7ús   ‘AAÁA&z/bin/shzrequires a POSIX OSc                 ó¤  — | j                  «       5  |j                  ddt        j                  d   z   «       t	        t        | «      d«      }|j                  d«       t        j                  |d«       t        j                  t        j                  «      5  |j                  d«       ddd«       ddd«       y# 1 sw Y   ŒxY w# 1 sw Y   yxY w)a!  
    Test that we correctly raise a CalledProcessError when ffmpeg fails.

    To do so, mock ffmpeg using a simple executable shell script that
    succeeds when called with no arguments (so that it gets registered by
    `isAvailable`), but fails otherwise, and add it to the $PATH.
    ÚPATHz.:r|   s   #!/bin/sh
[[ $@ -eq 0 ]]
ií  z	test.mpegN)r™   ÚsetenvÚosÚenvironr   rÐ   Úwrite_bytesÚchmodr`   r    Ú
subprocessÚCalledProcessErrorrO   )rš   Úmonkeypatchr2   Úexe_paths       r   Útest_failing_ffmpegrÞ   B  s¥   € ð 
�‰‹ñ #Ø×Ñ˜6 4¬"¯*©*°VÑ*<Ñ#<Ô=Üœ˜F› XÓ.ˆØ×ÑÐ;Ô<Ü
�‰�˜5Ô!Ü�]‰]œ:×8Ñ8Ó9ñ 	#Ø�I‰I�kÔ"÷	#÷#ð #÷
	#ð 	#ú÷#ð #ús$   ‘BCÂB:Â)CÂ:C	Â?CÃCÚcache_frame_dataFTc                 óœ  ‡
‡‡— t        j                  «       \  }}|j                  g g «      \  Š G d„ dt        «      Š
ˆfd„}ˆfd„}g Šˆ
ˆfd„}d}t	        j
                  ||||| |¬«      }t        «       }|j                  d|¬	«       t        ‰«      d
k(  sJ ‚t        j                  j                  «        ‰D ]  }	 |	«       d u | k7  rŒJ ‚ y )Nc                   ó   — e Zd Zy)ú2test_funcanimation_cache_frame_data.<locals>.FrameN)rD   rE   rF   r%   r   r   ÚFramerâ   Y  s   „ àr   rã   c                  ó.   •— ‰ j                  g g «       ‰ fS r   r   r   s   €r   r   z1test_funcanimation_cache_frame_data.<locals>.init]  r   r   c                 ó:   •— ‰j                  | d   | d   «       ‰fS )Nr   r   r   )Úframer   s    €r   r   z4test_funcanimation_cache_frame_data.<locals>.animatea  s    ø€ Ø�‰�e˜C‘j %¨¡*Ô-Øˆuˆr   c               3   óþ   •K  — t        d«      D ]j  } t        j                  ddd«      }t        j                  j	                  d«      } ‰||¬«      }‰j                  t        j                  |«      «       |–— Œl y ­w)Nr!   r   r   r   )r   r   )Úranger   r   ÚrandomÚrandÚappendÚweakrefÚref)Ú_r   r   ræ   rã   Úframes_generateds       €€r   Úframes_generatorz=test_funcanimation_cache_frame_data.<locals>.frames_generatorg  sg   øè ø€ Ü�q“ò 
	ˆAÜ—‘˜A˜r 3Ó'ˆAÜ—	‘	—‘˜sÓ#ˆAá˜A ”OˆEð ×#Ñ#¤G§K¡K°Ó$6Ô7à‹Kñ
	ùs   ƒA:A=r   )r$   r    rß   r³   rJ   rµ   r!   )r&   r'   r(   r+   r   r.   r4   rO   r¼   r   r^   r_   )rß   r"   r0   r   r   rð   Ú
MAX_FRAMESr2   rM   Úfrã   rï   r   s             @@@r   Ú#test_funcanimation_cache_frame_dataró   T  sÐ   ú€ ä�l‰l‹n�G€CˆØ�G‰G�B˜‹O�E€Dô”ô ôôð Ðõð €JÜ×"Ñ" 3¨¸4Ø*:Ø4DØ.8ô:€Dô
 Ó€FØ‡I�Iˆm F€IÔ+ÜÐÓ  AÒ%Ð%Ð%Ü‡J�J×ÑÔØò 1ˆñ “�t�Ð 0Ó0Ð0Ð0ñ1r   Úreturn_value)NÚstringr
   )rõ   Úartistc                 óö   ‡ ‡— t        j                  «       \  }}|j                  g «      \  Šˆˆ fd„}t        j                  t
        «      5  t        j                  ||dd¬«       d d d «       y # 1 sw Y   y xY w)Nc                 óB   •— ‰j                  ddgd| g«       ‰dk(  r‰S ‰S )Nr   r
   rö   r   )r   r   rô   s    €€r   r   z test_draw_frame.<locals>.animate–  s,   ø€ à�‰�q˜!�f˜q !˜fÔ%Ø˜8Ò#àˆKàÐr   TF)Úblitrß   )r&   r'   r(   r`   r    ÚRuntimeErrorr   r.   )rô   r"   r0   r   r   s   `   @r   Útest_draw_framerû   „  sb   ù€ ô �l‰l‹n�G€CˆØ�G‰G�B‹K�E€Dõ ô 
�‰”|Ó	$ñ 
Ü×ÑØ�˜t°eõ	
÷
÷ 
ñ 
ús   ÁA/Á/A8c           	      ó€  — t        j                  «       \  }}d„ }t        j                  ||t	        t        d«      «      dd¬«      }| j                  «       5  |j                  dd¬«       d d d «       t        j                  t        d¬	«      5  |j                  «        d d d «       y # 1 sw Y   Œ>xY w# 1 sw Y   y xY w)
Nc                 ó   — g S r   r%   ©ræ   s    r   Úupdatez(test_exhausted_animation.<locals>.update¨  ó   € Øˆ	r   r   F©r    Úrepeatrß   útest.gifr‚   rµ   Ú	exhaustedrZ   )r&   r'   r   r.   Úiterrè   r™   rO   r`   ra   r°   Ú_start©rš   r"   r0   rÿ   r2   s        r   Útest_exhausted_animationr  ¥  sŸ   € Ü�l‰l‹n�G€Cˆòô ×"Ñ"ØˆVœD¤ r£›O°EØô€Dð
 
�‰‹ñ /Ø�	‰	�* Xˆ	Ô.÷/ô 
�‰”k¨Ô	5ñ Ø�‰Œ÷ð ÷/ð /ú÷ð ús   ÁB(ÂB4Â(B1Â4B=c                 óì   — t        j                  «       \  }}d„ }t        j                  ||g dd¬«      }t	        j
                  t        d¬«      5  |j                  «        d d d «       y # 1 sw Y   y xY w)Nc                 ó   — g S r   r%   rþ   s    r   rÿ   z%test_no_frame_warning.<locals>.updateº  r   r   Fr  r  rZ   )r&   r'   r   r.   r`   ra   r°   r  r  s        r   Útest_no_frame_warningr  ·  sb   € Ü�l‰l‹n�G€Cˆòô ×"Ñ"ØˆV˜B uØô€Dô
 
�‰”k¨Ô	5ñ Ø�‰Œ÷÷ ñ ús   ÁA*Á*A3Úpng)Ú
extensionsc                 óœ  ‡‡— |j                  «       }|j                  ddt        j                  z  «       |j	                  dd«       t        j
                  ddt        j                  z  d«      Š|j                  g g «      \  Šˆfd„}ˆˆfd„}t        j                  |||dd	d
¬«      }| j                  «       5  |j                  d«       d d d «       |j                  «       }|j                  ddt        j                  z  «       |j	                  dd«       |j                  ‰t        j                  ‰dz   «      «       y # 1 sw Y   ŒwxY w)Nr   é   r	   r
   r   c                  ó.   •— ‰ j                  g g «       ‰ fS r   r   r   s   €r   r   z"test_animation_frame.<locals>.initÑ  r   r   c                 ó`   •— ‰j                  ‰t        j                  ‰| dz  z   «      «       ‰fS )Nr   )r   r   r   )r   r   r   s    €€r   r   z%test_animation_frame.<locals>.animateÕ  s)   ø€ Ø�‰�aœŸ™  A¨¡G¡Ó,Ô-Øˆuˆr   r!   TF)r$   r    rù   r  r  g{®Gáz¤?)Úadd_subplotr)   r   Úpir*   r   r(   r   r.   r™   rO   r   )	rš   Úfig_testÚfig_refr0   r   r   r2   r   r   s	          @@r   Útest_animation_framer  Æ  s	  ù€ ð
 
×	Ñ	Ó	€BØ‡K�K��1”r—u‘u‘9ÔØ‡K�K��AÔÜ
�‰�A�qœ2Ÿ5™5‘y #Ó&€AØ�G‰G�B˜‹O�E€Dôõô ×"Ñ"Ø�' T°!Ø˜%ô!€Dð 
�‰‹ñ Ø�	‰	�*Ô÷ð 
×	Ñ	Ó	€BØ‡K�K��1”r—u‘u‘9ÔØ‡K�K��AÔð ‡G�GˆAŒr�v‰v�a˜'‘kÓ"Õ#÷ð ús   Â:EÅEc           	      óf  — d}t        t        d«      «      }d|›dt        |«      ›d�}t        j                  t
        t        j                  |«      ¬«      5  t        j                  di i | ¥||dœ¥¤Ž} d d d «       | j                  t        |«      k(  sJ ‚| j                  «        y # 1 sw Y   Œ4xY w)	Nr!   r  ú%You passed in an explicit save_count=z0 which is being ignored in favor of len(frames)=ú.rZ   ©r    r³   r%   )rÏ   rè   r¼   r`   ra   r°   ÚreÚescaper   r.   rR   Ú
_init_draw©r2   r³   r    Úmatch_targets       r   Ú,test_save_count_override_warnings_has_lengthr   è  s­   € ð €JÜ”%˜“(‹^€Fà
0 Z Mð 2äˆv‹;ˆ.˜ð	ð ô 
�‰”k¬¯©°<Ó)@Ô	Añ 
Ü×&Ñ&ñ 
ØB�ÐB °zÒBñ
ˆ÷
ð ×Ñœs 6›{Ò*Ð*Ð*Ø‡O�OÕ÷
ð 
ús   ÁB'Â'B0c           	      ó,  — d}d}d|›d�dz   d|›d�z   }t        j                  t        t        j                  |«      ¬«      5  t        j                  d
i i | ¥||d	œ¥¤Ž} d d d «       | j                  |k(  sJ ‚| j                  «        y # 1 sw Y   Œ+xY w)Nr!   é   r  ú z#which is being ignored in favor of úframes=r  rZ   r  r%   )	r`   ra   r°   r  r  r   r.   rR   r  r  s       r   Ú(test_save_count_override_warnings_scalerr%  û  s§   € à€JØ€Fà
0 Z M°Ð3Ø-ñ	.àˆ6ˆ)�1ˆñ	ð ô 
�‰”k¬¯©°<Ó)@Ô	Añ 
Ü×&Ñ&ñ 
ØB�ÐB °zÒBñ
ˆ÷
ð
 ×Ñ˜vÒ%Ð%Ð%Ø‡O�OÕ÷
ð 
ús   ÁB
Â
Bc           	      ó@  — d}t        t        d«      «      }d|›d|›d�}t        j                  t        t        j                  |«      ¬«      5  t        j                  d	i i | ¥||dœ¥¤Ž} d d d «       | j                  du sJ ‚| j                  «        y # 1 sw Y   Œ*xY w)
NTr!   r$  ze which we can infer the length of, did not pass an explicit *save_count* and passed cache_frame_data=z§.  To avoid a possibly unbounded cache, frame data caching has been disabled. To suppress this warning either pass `cache_frame_data=False` or `save_count=MAX_FRAMES`.rZ   )rß   r    Fr%   )r  rè   r`   ra   r°   r  r  r   r.   Ú_cache_frame_datar  )r2   rß   r    r  s       r   Útest_disable_cache_warningr(    s©   € àÐÜ”%˜“(‹^€Fàˆ6ˆ+ð (à&Ð(ð )?ð	?ð ô 
�‰”k¬¯©°<Ó)@Ô	Añ 
Ü×&Ñ&ñ 
ØN�ÐNÐ+;ÀvÒNñ
ˆ÷
ð ×!Ñ! UÑ*Ð*Ð*Ø‡O�OÕ÷
ð 
ús   ÁBÂBc                 ó*  — t         j                  dk(  rt        j                  d«      }nt        j                  d«      }t	        j
                  t        |¬«      5  | j                  dt        j                  «       ¬«       d d d «       y # 1 sw Y   y xY w)Nr¹   z7[WinError 3] The system cannot find the path specified:z*[Errno 2] No such file or directory: '/foorZ   z+/foo/bar/aardvark/thiscannotreallyexist.mp4rµ   )
r¿   r\   r  r  r`   r    ÚFileNotFoundErrorrO   r   ÚFFMpegFileWriter)r2   Ú	match_strs     r   Útest_movie_writer_invalid_pathr-  "  sp   € Ü
‡|�|�wÒÜ—I‘IÐWÓX‰	ä—I‘IÐJÓKˆ	Ü	�‰Ô(°	Ô	:ñ 7Ø�	‰	Ð?Ü"×3Ñ3Ó5ð 	ô 	7÷7÷ 7ñ 7ús   Á&B	Â	B)=rÖ   Úpathlibr   r\   r  ÚshutilrÚ   r¿   rì   Únumpyr   r`   Ú
matplotlibr¾   r   r&   r   Úmatplotlib.testing.decoratorsr   Úfixturer2   ÚAbstractMovieWriterr4   rV   r‹   Úparametrizer+   rd   rq   r‰   Úregisterrt   rˆ   r�   r›   r¥   r   Úskipifr­   rz   ÚImageMagickWriterr²   r  rè   r¶   rÁ   rŠ   rN   rÍ   rÒ   ÚwhichrÞ   ró   rû   r  r  r  r   r%  r(  r-  r%   r   r   ú<module>r:     s2  ðÛ 	Ý Û Û 	Û Û Û 
Û ã Û ã Ý $Ý  Ý =ð €‡�ÓñBó ðBô4�i×3Ñ3ô ò:-ð, ‡�×Ñ˜¡$¨TÔ"2Ð!3¸v¸hÐÓGñ	"ó Hð	"ò!ð& ×Ñ×Ñ˜FÓ#ô ó ó $ðò"€ò5ð$ ‡�×ÑÐ7¹»ÓGØ‡�×Ñ˜¡$¨TÔ"2Ð!3¸v¸hÐÓGñó Hó Hðð* ‡�×ÑÐ7¹»ÓGñ<ó Hð<ð> ‡�×Ñ˜Ø€F‡L�LØ˜Ÿ™×*Ñ*Ø×&Ñ&×2Ñ2Ó4Ð4Ø$ð +ó &ô'ð €F‡L�LØ˜VŸ[™[×/Ñ/Ø×+Ñ+×7Ñ7Ó9Ð9Ø)ð 0ó +ô,ð	$ó 	ð ‡�×Ñ˜ò (ó ð
 ‡�×Ñ˜¡$¨TÔ"2Ð!3¸v¸hÐÓGñó Hóó	ð ð2 ‡�×ÑØ
Ø¡$¡u¨Q£x£.Ñ1Ð2ØˆXð ó ñ
7óð
7ò4ð ‡�×ÑØØ€V‡\�\Ð"¨&¯+©+×*<Ñ*<Ø×Ñ×*Ñ*¨3¯<©<Ð8JÑ+KÓLÐLØ/ð +=ó +1ô 2ð ðóð ‡�×Ñ˜¡$¨a¤.Ð!1¸V¸HÐÓEñ/ó Fóð/ð ‡�×ÑØØ€V‡\�\Ð"¨&¯+©+×*<Ñ*<Ø×Ñ×*Ñ*¨3¯<©<Ð8JÑ+KÓLÐLØ/ð +=ó +1ô 2ð ðóð ‡�×Ñ˜¡$¨a¤.Ð!1¸V¸HÐÓEñ7ó Fóð7ð ‡�×Ñ�L�F—L‘L Ó+¨tÐ3Ð<QÐÓRñ#ó Sð#ð" ‡�×ÑÐ+¨e°T¨]Ó;ñ,1ó <ð,1ð^ ‡�×Ñ˜ò *ó ñ
óð
ò*ò$ñ   Ô(ñ$ó )ð$ðB ‡�×Ñ˜¡$¨TÔ"2Ð!3¸v¸hÐÓGñó Hðð$ ‡�×Ñ˜¡$¨TÔ"2Ð!3¸v¸hÐÓGñó Hðð$ ‡�×Ñ˜¡$¨TÔ"2Ð!3¸v¸hÐÓGñó Hðó&7r   