§
    ‡Ûg×@  ã                   óÆ	  — 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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
j                             d
 ee¬¦  «        gd
g¬¦  «        d„ ¦   «         Zd„ Zej                             d¦  «         G d„ de¦  «        ¦   «         Zg d¢Zd„ Z e
j                             d e ¦   «         ¦  «        e
j                             d
 ee¬¦  «        gd
g¬¦  «        d„ ¦   «         ¦   «         Z!e
j                             d e
j"        de
j         #                    ej$         %                    ¦   «          d¬¦  «        ¬¦  «         e
j"        de
j         #                    ej&         %                    ¦   «          d¬¦  «        ¬¦  «        g¦  «        e
j                             dg d¢¦  «        e
j                             d
 ee¬¦  «        gd
g¬¦  «        d„ ¦   «         ¦   «         ¦   «         Z'e
j                             d
d  e( e)d!¦  «        ¦  «        d"œgd
g¬¦  «        d#„ ¦   «         Z*d$„ Z+e
j                             d% e
j"        d&e
j         #                    ej         ,                    ej-        d'         ¦  «         d(¬¦  «        ¬¦  «        d)g¦  «        e
j                             d
 ed*¬+¦  «        gd
g¬¦  «        d,„ ¦   «         ¦   «         Z.e
j                             d% e
j"        d&e
j         #                    ej         ,                    ej-        d'         ¦  «         d(¬¦  «        ¬¦  «        d)g¦  «        e
j                             d
 ed*¬+¦  «        gd
g¬¦  «        d-„ ¦   «         ¦   «         Z/e
j         #                    e j0        d.k    d/¬¦  «        d0„ ¦   «         Z1e
j                             d1d2d3g¦  «        d4„ ¦   «         Z2e
j                             d5g d6¢¦  «        d7„ ¦   «         Z3d8„ Z4d9„ Z5 ed:g¬;¦  «        d<„ ¦   «         Z6e
j                             d
 ee¬¦  «        gd
g¬¦  «        d=„ ¦   «         Z7e
j                             d
 ee¬¦  «        gd
g¬¦  «        d>„ ¦   «         Z8e
j                             d
 ee¬¦  «        gd
g¬¦  «        d?„ ¦   «         Z9d@„ Z:dS )Aé    N)ÚPath)Úpyplot)Ú	animation)Úcheck_figures_equalc                 ór  ‡— t          j        ¦   «         \  }}|                     g g ¦  «        \  Š|                     dd¦  «         |                     dd¦  «         ˆfd„}ˆfd„}t          t          | di ¦  «        ¦  «        }|                     dt          j	        ¦  «        }d	|vrd
|d	<    |d|||dœ|¤ŽS )z)Create a simple animation (with options).r   é
   éÿÿÿÿé   c                  ó6   •— ‰                       g g ¦  «         ‰ fS ©N©Úset_data©Úlines   €úU/granary/edev/quantum/lib/python3.11/site-packages/matplotlib/tests/test_animation.pyÚinitzanim.<locals>.init   ó   ø€ Ø�Š�b˜"ÑÔÐØˆuˆó    c                 ó�   •— t          j        ddd¦  «        }t          j        || z   ¦  «        }‰                     ||¦  «         ‰fS )Nr   r   éd   )ÚnpÚlinspaceÚsinr   )ÚiÚxÚyr   s      €r   Úanimatezanim.<locals>.animate   sB   ø€ ÝŒK˜˜2˜sÑ#Ô#ˆÝŒF�1�q‘5‰MŒ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‰nŒn�G€CˆØ�GŠG�B˜‰OŒO�E€Dà‡K‚K��2ÑÔÐØ‡K‚K��AÑÔÐðð ð ð ð ðð ð ð ð õ •'˜' 7¨BÑ/Ô/Ñ0Ô0€FØ�JŠJ�w¥	Ô 7Ñ8Ô8€EØ�vÐÐØˆˆxÑØˆ5ÐA�S˜w°$ÐAÐA¸&ÐAÐAÐAr   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )Ú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                 óL   — || _         || _        || _        || _        d| _        d S )Nr   )r"   ÚoutfileÚdpiÚargsÚ_count)Úselfr"   r6   r7   r8   s        r   ÚsetupzNullMovieWriter.setup9   s)   € ØˆŒØˆŒØˆŒØˆŒ	ØˆŒˆˆr   c                 ó4   — || _         | xj        dz  c_        d S )Nr
   )Úsavefig_kwargsr9   )r:   r=   s     r   Ú
grab_framezNullMovieWriter.grab_frame@   s   € Ø,ˆÔØˆŒ�qÑˆŒˆˆr   c                 ó   — d S r   r%   ©r:   s    r   ÚfinishzNullMovieWriter.finishD   s   € Øˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r;   r>   rA   r%   r   r   r4   r4   -   sK   € € € € € ð	ð 	ðð ð ðð ð ðð ð ð ð r   r4   c                 ó¤  — dt           j        d<   d}d}t          d¬¦  «        }t          ¦   «         }|                      ||||¬¦  «         |j        t          j        d¦  «        k    sJ ‚|j        |k    sJ ‚|j        |k    sJ ‚|j	        d	k    sJ ‚| 
                    ¦   «         D ]\  }}|j        |         |k    sJ ‚Œ|j        | j        k    sJ ‚d S )
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=   rK   ÚkÚvs          r   Útest_null_movie_writerrT   H   s  € à(.…C„LÐ$Ñ%Ø€HØ
€CÝ˜a�[‘[”[€NÝÑÔ€Fà‡I‚Iˆh˜C¨Ø+ð ñ -ô -ð -ð Œ:�œ A™œÒ&Ð&Ð&Ð&ØŒ>˜XÒ%Ð%Ð%Ð%ØŒ:˜ÒÐÐÐØŒ;˜"ÒÐÐÐð ×$Ò$Ñ&Ô&ð -ð -‰ˆˆ1ØÔ$ QÔ'¨1Ò,Ð,Ð,Ð,Ð,ØŒ=˜DÔ,Ò,Ð,Ð,Ð,Ð,Ð,r   r2   )r   )Úindirectc                 ó8  — t          j        ¦   «         dk    rt          j                             ¦   «          t          j        di | ¤Ž} t          j        t          d¬¦  «        5  ~ t          j                             ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )NÚPyPyzAnimation was deleted©Úmatchr%   )
ÚplatformÚpython_implementationr   ÚtestingÚbreak_cyclesr   r.   ÚpytestÚwarnsÚWarning©r2   s    r   Útest_animation_deleterb   ^   sÓ   € åÔ%Ñ'Ô'¨6Ò1Ð1õ 	Œ
×ÒÑ!Ô!Ð!ÝÔ"Ð*Ð* TÐ*Ð*€DÝ	Œ•gÐ%<Ð	=Ñ	=Ô	=ð "ð "ØÝ
Œ
×ÒÑ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "s   Á" BÂBÂBc                  óÞ   —  G d„ dt           j        ¦  «        } t          j        ¦   «         }d}d}d}d}dg} | ||||¦  «        }|                     ||¦  «         |j        |j        k    sJ ‚d S )Nc                   ó   — e Zd Zd„ ZdS )ú7test_movie_writer_dpi_default.<locals>.DummyMovieWriterc                 ó   — d S r   r%   r@   s    r   Ú_runz<test_movie_writer_dpi_default.<locals>.DummyMovieWriter._runm   s   € ØˆDr   N)rB   rC   rD   rg   r%   r   r   ÚDummyMovieWriterre   l   s#   € € € € € ð	ð 	ð 	ð 	ð 	r   rh   rH   r!   Úunusedr
   )r   ÚMovieWriterr&   rN   r;   r7   )rh   r"   rQ   ÚfpsÚcodecÚbitrateÚ
extra_argsrK   s           r   Útest_movie_writer_dpi_defaultro   k   sœ   € ðð ð ð ð �9Ô0ñ ô ð õ
 Œ*‰,Œ,€Cà€HØ
€CØ€EØ€GØ�€JàÐ˜c 5¨'°:Ñ>Ô>€FØ
‡L‚L��hÑÔÐØŒ:˜œÒ Ð Ð Ð Ð Ð r   Únullc                   ó0   — e Zd Z	 	 dd„Zed„ ¦   «         ZdS )ÚRegisteredNullMovieWriterNc                 ó   — d S r   r%   )r:   rk   rl   rm   rn   Úmetadatas         r   Ú__init__z"RegisteredNullMovieWriter.__init__‡   s   € àˆr   c                 ó   — dS )NTr%   )Úclss    r   ÚisAvailablez%RegisteredNullMovieWriter.isAvailable‹   s   € àˆtr   )NNNNN)rB   rC   rD   ru   Úclassmethodrx   r%   r   r   rr   rr   ~   sK   € € € € € ð 6:Ø+/ðð ð ð ð ðð ñ „[ðð ð r   rr   ))Úffmpegú	movie.mp4)Úffmpeg_filer{   )Úimagemagickú	movie.gif)Úimagemagick_filer~   )Úpillowr~   )Úhtmlz
movie.html)rp   z
movie.nullc               #   ó´  K  — t           D ]Í\  } }t          j                             | ¦  «        sgt          j                             d| › d�¦  «        }t	          j        | d ||g¬¦  «        V — t	          j        | d t          |¦  «        |g¬¦  «        V — Œ‹t          j        |          }t          |dd g¦  «        D ]}| ||fV — | |t          |¦  «        fV — ŒŒÎd S )Nzwriter 'z' not available on this system©ÚmarksÚsupported_formats)
ÚWRITER_OUTPUTr   ÚwritersÚis_availabler^   ÚmarkÚskipr   r   r,   )rK   Úoutputr‰   Úwriter_classÚframe_formats        r   Úgen_writersrŽ   ›   s  è è € Ý'ð 5ð 5‰ˆ�ÝÔ ×-Ò-¨fÑ5Ô5ð 	Ý”;×#Ò#ØA˜6ÐAÐAÐAñCô CˆDå”,˜v t¨V¸D¸6ÐBÑBÔBÐBÐBÐBÝ”,˜v t­T°&©\¬\À$ÀÐHÑHÔHÐHÐHÐHØå Ô(¨Ô0ˆÝ# LÐ2EÈÀvÑNÔNð 	5ð 	5ˆLØ˜,¨Ð.Ð.Ð.Ð.Ø˜,­¨V©¬Ð4Ð4Ð4Ð4Ð4ð	5ð5ð 5r   zwriter, frame_format, outputc           	      ó*  — |�|t           j        d<   t          j        d	i |¤Ž}d }d }|dk    r|j                             d¦  «         d}d}|                      ¦   «         5  |                     |d|d||¬¦  «         d d d ¦  «         n# 1 swxY w Y   ~d S )
Nzanimation.frame_formatrz   )g33333³%@gìQ¸…k"@g      Y@Úh264é   iô  )rk   rK   rm   r7   rl   r%   )r&   rL   r   r.   Ú_figÚset_size_inchesÚas_cwdrM   )ÚtmpdirrK   r�   r‹   r2   r7   rl   s          r   Útest_save_animation_smoketestr–   ­   sø   € ð ÐØ1=�ŒÐ-Ñ.ÝÔ"Ð*Ð* TÐ*Ð*€DØ
€CØ€EØ�ÒÐàŒ	×!Ò! -Ñ0Ô0Ð0ØˆØˆð 
�Š‰Œð ð Ø�	Š	�&˜b¨¸À#Øð 	ñ 	ô 	ð 	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð 	ˆˆs   ÁBÂBÂBrK   rz   úRequires FFMpeg)Úreasonrƒ   r}   zRequires ImageMagickz
html, want))ÚnoneN)Úhtml5z<video width)Újshtmlz<script c                 óR  — t          j        ¦   «         dk    rt          j                             ¦   «          | dk    r8|dk    r2t
          j                             ¦   «         st          j	        d¦  «         t          j
        di |¤Ž}t          j        | |dœ¦  «        5  |                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   |€W|�J ‚t          j        t          ¦  «        5  ~t          j                             ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S ||v sJ ‚d S )NrW   r}   rš   r—   )úanimation.writerzanimation.htmlr%   )rZ   r[   r   r\   r]   r   ÚFFMpegWriterrx   r^   rŠ   r.   r&   Ú
rc_contextÚ_repr_html_r_   ÚUserWarning)rK   r�   Úwantr2   s       r   Útest_animation_repr_htmlr£   Ä   s¸  € õ" Ô%Ñ'Ô'¨6Ò1Ð1õ 	Œ
×ÒÑ!Ô!Ð!Ø�-ÒÐ D¨G¢O OåÔ*×6Ò6Ñ8Ô8ð %4õ 	ŒÐ%Ñ&Ô&Ð&õ Ô"Ð*Ð* TÐ*Ð*€DÝ	Œ¨VØ+/ð1ð 1ñ 
2ô 
2ð "ð "à×ÒÑ!Ô!ˆð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð €|Øˆ|ˆ|ˆ|ÝŒ\�+Ñ&Ô&ð 	&ð 	&ØÝŒJ×#Ò#Ñ%Ô%Ð%ð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð �tˆ|ˆ|ˆ|ˆ|ˆ|ˆ|s$   ÂB=Â=CÃCÃ' DÄDÄDr   r!   )Ú
save_countr    c                 óL   — |                       dt          ¦   «         ¬¦  «         d S )NrH   ©rK   )rM   r4   ra   s    r   Útest_no_length_framesr§   í   s&   € ð 	‡I‚Iˆm¥OÑ$5Ô$5€IÑ6Ô6Ð6Ð6Ð6r   c                  ó6  — t          t          j        j        ¦  «        dk    sJ ‚dt          j        d<   t          j                             d¦  «        rJ ‚t          j        dk    rdnd} | t          j        d<   t          j                             d¦  «        sJ ‚d S )Nr   Únot_available_ever_xxxxzanimation.ffmpeg_pathrz   Úwin32ÚtrueÚwhere)	Úlenr   r‡   Ú_registeredÚmplrL   rˆ   ÚsysrZ   )Úbins    r   Útest_movie_writer_registryr²   ö   s�   € Ý�yÔ Ô,Ñ-Ô-°Ò1Ð1Ð1Ð1Ø,E…C„LÐ(Ñ)ÝÔ ×-Ò-¨hÑ7Ô7Ð7Ð7Ð7å”L GÒ+Ð+ˆ&ˆ&°€CØ,/…C„LÐ(Ñ)ÝÔ×)Ò)¨(Ñ3Ô3Ð3Ð3Ð3Ð3Ð3r   Úmethod_nameÚto_html5_videor�   zanimation writer not installedÚ	to_jshtmlr
   )r    c                 óŠ  — |                      d¦  «         |                     ¦   «         5  t          j        ddi¦  «        5   t	          || ¦  «        ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          |j        ¦  «        dk    sJ ‚|j        \  }|j        dk    r|j        dk    sJ ‚d S )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¾      sL  € ð ×Ò�YÑÔÐØ	�Š‰Œð )ð )ÝŒ^Ð4°dÐ;Ñ<Ô<ð 	)ð 	)Ø&�G�D˜+Ñ&Ô&Ñ(Ô(Ð(ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )õ ˆvŒ~ÑÔ !Ò#Ð#Ð#Ð#ØŒn�G€FØŒKÐ1Ò1Ð1ØÔ  IÒ-Ð-Ð-Ð-Ð-Ð-s5   ªA=ÁA&ÁA=Á&A*	Á*A=Á-A*	Á.A=Á=BÂBc                 ó  — |                      ¦   «         5   t          || ¦  «        ¦   «          t          t          t	          |¦  «        ¦  «                             ¦   «         ¦  «        g k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S r   )r”   r,   Úlistr   ÚstrÚiterdir)r³   r•   r2   s      r   Útest_cleanup_temporariesrÃ     sÄ   € ð 
�Š‰Œð 7ð 7Ø"���kÑ"Ô"Ñ$Ô$Ð$Ý•D�˜V™œÑ%Ô%×-Ò-Ñ/Ô/Ñ0Ô0°BÒ6Ð6Ð6Ð6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð 7ð 7s   •AA=Á=BÂBÚposixzrequires a POSIX OSc                 óÖ  — |                       ¦   «         5  |                     ddt          j        d         z   ¦  «         t	          t          | ¦  «        d¦  «        }|                     d¦  «         t          j        |d¦  «         t          j	        t          j        ¦  «        5  |                     d¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )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.:rz   s   #!/bin/sh
[[ $@ -eq 0 ]]
ií  z	test.mpegN)r”   ÚsetenvÚosÚenvironr   rÁ   Úwrite_bytesÚchmodr^   ÚraisesÚ
subprocessÚCalledProcessErrorrM   )r•   Úmonkeypatchr2   Úexe_paths       r   Útest_failing_ffmpegrÑ     sN  € ð 
�Š‰Œð #ð #Ø×Ò˜6 4­"¬*°VÔ*<Ñ#<Ñ=Ô=Ð=Ý�˜F™œ XÑ.Ô.ˆØ×ÒÐ;Ñ<Ô<Ð<Ý
Œ�˜5Ñ!Ô!Ð!ÝŒ]�:Ô8Ñ9Ô9ð 	#ð 	#Ø�IŠI�kÑ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s6   •BCÂ$CÂ:CÃC
	Ã
CÃC
	ÃCÃC"Ã%C"Úcache_frame_dataFTc                 óÈ  ‡
‡‡— t          j        ¦   «         \  }}|                     g g ¦  «        \  Š G d„ dt          ¦  «        Š
ˆfd„}ˆfd„}g Šˆ
ˆfd„}d}t	          j        ||||| |¬¦  «        }t          ¦   «         }|                     d|¬	¦  «         t          ‰¦  «        d
k    sJ ‚t          j
                             ¦   «          ‰D ]}	 |	¦   «         d u | k    sJ ‚Œd S )Nc                   ó   — e Zd ZdS )ú2test_funcanimation_cache_frame_data.<locals>.FrameN)rB   rC   rD   r%   r   r   ÚFramerÕ   6  s   € € € € € àˆr   rÖ   c                  ó6   •— ‰                       g g ¦  «         ‰ fS r   r   r   s   €r   r   z1test_funcanimation_cache_frame_data.<locals>.init:  r   r   c                 óN   •— ‰                      | d         | d         ¦  «         ‰fS )Nr   r   r   )Úframer   s    €r   r   z4test_funcanimation_cache_frame_data.<locals>.animate>  s&   ø€ Ø�Š�e˜C”j %¨¤*Ñ-Ô-Ð-Øˆuˆr   c               3   ó
  •K  — t          d¦  «        D ]o} t          j        ddd¦  «        }t          j                             d¦  «        } ‰||¬¦  «        }‰                     t          j        |¦  «        ¦  «         |V — Œpd S )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_generatorD  sˆ   øè è € Ý�q‘”ð 
	ð 
	ˆAÝ”˜A˜r 3Ñ'Ô'ˆAÝ”	—’˜sÑ#Ô#ˆAà�E˜A �O‘O”OˆEð ×#Ò#¥G¤K°Ñ$6Ô$6Ñ7Ô7Ð7àˆKˆKˆKˆKð
	ð 
	r   r   )r$   r    rÒ   r¤   rH   r¦   r!   )r&   r'   r(   r+   r   r.   r4   rM   r­   r   r\   r]   )rÒ   r"   r0   r   r   rã   Ú
MAX_FRAMESr2   rK   ÚfrÖ   râ   r   s             @@@r   Ú#test_funcanimation_cache_frame_dataræ   1  sa  øøø€ åŒl‰nŒn�G€CˆØ�GŠG�B˜‰OŒO�E€Dðð ð ð ð •ñ ô ð ðð ð ð ð ðð ð ð ð ð Ððð ð ð ð ð ð €JÝÔ" 3¨¸4Ø*:Ø4DØ.8ð:ñ :ô :€Dõ
 ÑÔ€FØ‡I‚Iˆm F€IÑ+Ô+Ð+ÝÐÑ Ô  AÒ%Ð%Ð%Ð%Ý„J×ÒÑÔÐØð 1ð 1ˆð �‘”�t�Ð 0Ò0Ð0Ð0Ð0Ð0ð1ð 1r   Úreturn_value)NÚstringr
   )rè   Úartistc                 ó  ‡ ‡— t          j        ¦   «         \  }}|                     g ¦  «        \  Šˆˆ fd„}t          j        t
          ¦  «        5  t          j        ||dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 óL   •— ‰                      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>.animates  s5   ø€ à�Š�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î   a  sÝ   øø€ õ Œl‰nŒn�G€CˆØ�GŠG�B‰KŒK�E€Dð ð  ð  ð  ð  ð  õ 
Œ•|Ñ	$Ô	$ð 
ð 
ÝÔØ�˜t°eð	
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ÁA5Á5A9Á<A9c           	      ó´  — t          j        ¦   «         \  }}d„ }t          j        ||t	          t          d¦  «        ¦  «        dd¬¦  «        }|                      ¦   «         5  |                     dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j	        t          d¬	¦  «        5  |                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )
Nc                 ó   — g S r   r%   ©rÙ   s    r   Úupdatez(test_exhausted_animation.<locals>.update…  ó   € Øˆ	r   r   F©r    ÚrepeatrÒ   útest.gifr€   r¦   Ú	exhaustedrX   )r&   r'   r   r.   ÚiterrÛ   r”   rM   r^   r_   r¡   Ú_start©r•   r"   r0   rò   r2   s        r   Útest_exhausted_animationrû   ‚  sT  € ÝŒl‰nŒn�G€Cˆðð ð õ Ô"ØˆV�D¥ r¡¤™OœO°EØðñ ô €Dð
 
�Š‰Œð /ð /Ø�	Š	�* Xˆ	Ñ.Ô.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /õ 
Œ•k¨Ð	5Ñ	5Ô	5ð ð Ø�Š‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s$   Á!BÂB	ÂB	Â+CÃCÃCc                 óú   — t          j        ¦   «         \  }}d„ }t          j        ||g dd¬¦  «        }t	          j        t          d¬¦  «        5  |                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nc                 ó   — g S r   r%   rñ   s    r   rò   z%test_no_frame_warning.<locals>.update—  ró   r   Frô   r÷   rX   )r&   r'   r   r.   r^   r_   r¡   rù   rú   s        r   Útest_no_frame_warningrþ   ”  sÍ   € ÝŒl‰nŒn�G€Cˆðð ð õ Ô"ØˆV˜B uØðñ ô €Dõ
 
Œ•k¨Ð	5Ñ	5Ô	5ð ð Ø�Š‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁA0Á0A4Á7A4Úpng)Ú
extensionsc                 óÖ  ‡‡— |                      ¦   «         }|                     ddt          j        z  ¦  «         |                     dd¦  «         t          j        ddt          j        z  d¦  «        Š|                     g g ¦  «        \  Šˆfd„}ˆˆfd„}t          j        |||dd	d
¬¦  «        }|  	                    ¦   «         5  | 
                    d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      ¦   «         }|                     ddt          j        z  ¦  «         |                     dd¦  «         |                     ‰t          j        ‰dz   ¦  «        ¦  «         d S )Nr   é   r	   r
   r   c                  ó6   •— ‰                       g g ¦  «         ‰ fS r   r   r   s   €r   r   z"test_animation_frame.<locals>.init®  r   r   c                 óf   •— ‰                      ‰t          j        ‰| dz  z   ¦  «        ¦  «         ‰fS )Nr   )r   r   r   )r   r   r   s    €€r   r   z%test_animation_frame.<locals>.animate²  s0   ø€ Ø�Š�a�œ  A¨¡G¡Ñ,Ô,Ñ-Ô-Ð-Øˆuˆr   r!   TF)r$   r    rì   rõ   rö   g{®Gáz¤?)Úadd_subplotr)   r   Úpir*   r   r(   r   r.   r”   rM   r   )	r•   Úfig_testÚfig_refr0   r   r   r2   r   r   s	          @@r   Útest_animation_framer	  £  s±  øø€ ð
 
×	Ò	Ñ	Ô	€BØ‡K‚K��1•r”u‘9ÑÔÐØ‡K‚K��AÑÔÐÝ
Œ�A�q�2œ5‘y #Ñ&Ô&€AØ�GŠG�B˜‰OŒO�E€Dðð ð ð ð ðð ð ð ð ð õ Ô"Ø�' T°!Ø˜%ð!ñ !ô !€Dð 
�Š‰Œð ð Ø�	Š	�*ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð 
×	Ò	Ñ	Ô	€BØ‡K‚K��1•r”u‘9ÑÔÐØ‡K‚K��AÑÔÐð ‡G‚GˆA�rŒv�a˜'‘kÑ"Ô"Ñ#Ô#Ð#Ð#Ð#s   ÃC&Ã&C*Ã-C*c           	      ó„  — d}t          t          d¦  «        ¦  «        }d|›dt          |¦  «        ›d�}t          j        t
          t          j        |¦  «        ¬¦  «        5  t          j	        di i | ¥||dœ¥¤Ž} d d d ¦  «         n# 1 swxY w Y   | j
        t          |¦  «        k    sJ ‚|                      ¦   «          d S )	Nr!   r  ú%You passed in an explicit save_count=z0 which is being ignored in favor of len(frames)=ú.rX   ©r    r¤   r%   )rÀ   rÛ   r­   r^   r_   r¡   ÚreÚescaper   r.   rP   Ú
_init_draw©r2   r¤   r    Úmatch_targets       r   Ú,test_save_count_override_warnings_has_lengthr  Å  s!  € ð €JÝ•%˜‘(”(‰^Œ^€Fð	 Zð 	ð 	åˆv‰;Œ;ð	ð 	ð 	ð õ 
Œ•k­¬°<Ñ)@Ô)@Ð	AÑ	AÔ	Að 
ð 
ÝÔ&ð 
ð 
ØB�ÐB °zÐBÐBÐBð
ð 
ˆð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð Ô�s 6™{œ{Ò*Ð*Ð*Ð*Ø‡O‚OÑÔÐÐÐs   Á"BÂBÂB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 ¦  «         n# 1 swxY w Y   | j        |k    sJ ‚|                      ¦   «          d S )Nr!   é   r  ú z#which is being ignored in favor of úframes=r  rX   r  r%   )	r^   r_   r¡   r  r  r   r.   rP   r  r  s       r   Ú(test_save_count_override_warnings_scalerr  Ø  s
  € à€JØ€Fà3 ZÐ3Ð3Ð3Ø-ñ	.àˆ6ˆˆˆñ	ð õ 
Œ•k­¬°<Ñ)@Ô)@Ð	AÑ	AÔ	Að 
ð 
ÝÔ&ð 
ð 
ØB�ÐB °zÐBÐBÐBð
ð 
ˆð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð
 Ô˜vÒ%Ð%Ð%Ð%Ø‡O‚OÑÔÐÐÐs   ÁA'Á'A+Á.A+c           	      óL  — d}t          t          d¦  «        ¦  «        }d|›d|›d�}t          j        t          t          j        |¦  «        ¬¦  «        5  t          j        d	i i | ¥||dœ¥¤Ž} d d d ¦  «         n# 1 swxY w Y   | j	        du sJ ‚|  
                    ¦   «          d S )
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`.rX   )rÒ   r    Fr%   )rø   rÛ   r^   r_   r¡   r  r  r   r.   Ú_cache_frame_datar  )r2   rÒ   r    r  s       r   Útest_disable_cache_warningr  ë  s  € àÐÝ•%˜‘(”(‰^Œ^€Fð	?ˆ6ð 	?ð 	?à&ð	?ð 	?ð 	?ð õ 
Œ•k­¬°<Ñ)@Ô)@Ð	AÑ	AÔ	Að 
ð 
ÝÔ&ð 
ð 
ØN�ÐNÐ+;ÀvÐNÐNÐNð
ð 
ˆð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð Ô! UÐ*Ð*Ð*Ð*Ø‡O‚OÑÔÐÐÐs   ÁA:Á:A>ÂA>c                 ó0  — t           j        dk    rt          j        d¦  «        }nt          j        d¦  «        }t	          j        t          |¬¦  «        5  |                      dt          j	        ¦   «         ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrª   z7[WinError 3] The system cannot find the path specified:z*[Errno 2] No such file or directory: '/foorX   z+/foo/bar/aardvark/thiscannotreallyexist.mp4r¦   )
r°   rZ   r  r  r^   rÌ   ÚFileNotFoundErrorrM   r   ÚFFMpegFileWriter)r2   Ú	match_strs     r   Útest_movie_writer_invalid_pathr   ÿ  sÕ   € Ý
„|�wÒÐÝ”IÐWÑXÔXˆ	ˆ	å”IÐJÑKÔKˆ	Ý	ŒÕ(°	Ð	:Ñ	:Ô	:ð 7ð 7Ø�	Š	Ð?Ý"Ô3Ñ5Ô5ð 	ñ 	7ô 	7ð 	7ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð 7ð 7s   Á)BÂBÂB);rÈ   Úpathlibr   rZ   r  rÍ   r°   rß   Únumpyr   r^   Ú
matplotlibr¯   r   r&   r   Úmatplotlib.testing.decoratorsr   Úfixturer2   ÚAbstractMovieWriterr4   rT   r‰   Úparametrizer+   rb   ro   r‡   Úregisterrr   r†   rŽ   r–   r   Úskipifrž   rx   ÚImageMagickWriterr£   rø   rÛ   r§   r²   rˆ   rL   r¾   rÃ   rº   rÑ   ræ   rî   rû   rþ   r	  r  r  r  r   r%   r   r   ú<module>r+     sC  ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø €€€à Ð Ð Ð Ø €€€à Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø  Ð  Ð  Ð  Ð  Ð  Ø =Ð =Ð =Ð =Ð =Ð =ð €„ÑÔðBð Bñ ÔðBð4ð ð ð ð �iÔ3ñ ô ð ð6-ð -ð -ð, „×Ò˜ $ $¨TÐ"2Ñ"2Ô"2Ð!3¸v¸hÐÑGÔGð	"ð 	"ñ HÔGð	"ð!ð !ð !ð& Ô×Ò˜FÑ#Ô#ðð ð ð ð  ñ ô ñ $Ô#ðð"ð ð €ð5ð 5ð 5ð$ „×ÒÐ7¸¸¹¼ÑGÔGØ„×Ò˜ $ $¨TÐ"2Ñ"2Ô"2Ð!3¸v¸hÐÑGÔGðð ñ HÔGñ HÔGðð* „×Ò˜Ø€F„LØ˜œ×*Ò*ØÔ&×2Ò2Ñ4Ô4Ð4Ø$ð +ñ &ô &ð'ñ 'ô 'ð €F„LØ˜Vœ[×/Ò/ØÔ+×7Ò7Ñ9Ô9Ð9Ø)ð 0ñ +ô +ð,ñ ,ô ,ð	$ñ 	ô 	ð „×Ò˜ð (ð (ð (ñ ô ð
 „×Ò˜ $ $¨TÐ"2Ñ"2Ô"2Ð!3¸v¸hÐÑGÔGðð ñ HÔGñô ñ	ô 	ð ð2 „×ÒØ
Ø $ $ u u¨Q¡x¤x¡.¤.Ð1Ð1Ð2ØˆXð ñ ô ð
7ð 7ñô ð
7ð4ð 4ð 4ð „×ÒØØ€V„\Ð"¨&¬+×*<Ò*<ØÔ×*Ò*¨3¬<Ð8JÔ+KÑLÔLÐLØ/ð +=ñ +1ô +1ð 2ñ 2ô 2ð ðñô ð „×Ò˜ $ $¨a .¡.¤.Ð!1¸V¸HÐÑEÔEð/ð /ñ FÔEñô ð/ð „×ÒØØ€V„\Ð"¨&¬+×*<Ò*<ØÔ×*Ò*¨3¬<Ð8JÔ+KÑLÔLÐLØ/ð +=ñ +1ô +1ð 2ñ 2ô 2ð ðñô ð „×Ò˜ $ $¨a .¡.¤.Ð!1¸V¸HÐÑEÔEð7ð 7ñ FÔEñô ð7ð „×Ò�B”G˜wÒ&Ð/DÐÑEÔEð#ð #ñ FÔEð#ð" „×ÒÐ+¨e°T¨]Ñ;Ô;ð,1ð ,1ñ <Ô;ð,1ð^ „×Ò˜ð *ð *ð *ñ ô ð
ð 
ñô ð
ð*ð ð ð$ð ð ð Ð  Ð(Ñ(Ô(ð$ð $ñ )Ô(ð$ðB „×Ò˜ $ $¨TÐ"2Ñ"2Ô"2Ð!3¸v¸hÐÑGÔGðð ñ HÔGðð$ „×Ò˜ $ $¨TÐ"2Ñ"2Ô"2Ð!3¸v¸hÐÑGÔGðð ñ HÔGðð$ „×Ò˜ $ $¨TÐ"2Ñ"2Ô"2Ð!3¸v¸hÐÑGÔGðð ñ HÔGðð&7ð 7ð 7ð 7ð 7r   