§
    ‚ØjTH  ã                   óÖ	  — 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 d dlmZ  ej        ¦   «         d„ ¦   «         Zd„ Z G d	„ d
ej        ¦  «        Zd„ 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%¦   «         ¦  «        ¦  «        ej                             d ee¬¦  «        gdg¬¦  «        d„ ¦   «         ¦   «         Z'ej                             d e& e%¦   «         ¦  «        ¦  «        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/ e0d%¦  «        ¦  «        d&œgdg¬¦  «        d'„ ¦   «         Z1ej         *                    ej        d(k    d)¬¦  «        d*„ ¦   «         Z2ej                             d+ ej)        d,ej         *                    ej!         3                    ej4        d-         ¦  «         d.¬¦  «        ¬¦  «        d/g¦  «        ej                             d ed0¬1¦  «        gdg¬¦  «        d2„ ¦   «         ¦   «         Z5ej         *                    ej        d(k    d)¬¦  «        ej         *                     ej6        d3¦  «        du d4¬¦  «        d5„ ¦   «         ¦   «         Z7ej                             d6d7d8g¦  «        d9„ ¦   «         Z8ej                             d:g d;¢¦  «        d<„ ¦   «         Z9d=„ Z:d>„ Z; e¦   «         d?„ ¦   «         Z<ej                             d ee¬¦  «        gdg¬¦  «        d@„ ¦   «         Z=ej                             d ee¬¦  «        gdg¬¦  «        dA„ ¦   «         Z>ej                             d ee¬¦  «        gdg¬¦  «        dB„ ¦   «         Z?dC„ Z@dD„ ZAdS )Eé    N)ÚPath)Úpyplot)Ú	animation)ÚPillowWriter)Ú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   €ú”/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/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   Úanimr3      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                  ó’   — t          j        t          d¬¦  «        5  t          j        d          d d d ¦  «         d S # 1 swxY w Y   d S )NzB'pllow' is not a valid value for writer\. Did you mean: 'pillow'\?©ÚmatchÚpllow)ÚpytestÚraisesÚ
ValueErrorr   Úwritersr&   r   r   Útest_invalid_writerr<   /   s”   € å	Œ•zð9ð
:ñ 
:ô 
:ð #ð #õ 	Ô˜'Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð #ð #s   œ<¼A ÁA 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#   r@   rA   rB   s        r   ÚsetupzNullMovieWriter.setupC   s)   € ØˆŒØˆŒØˆŒØˆŒ	ØˆŒˆˆr   c                 óV   — ddl m}  ||¦  «         || _        | xj        dz  c_        d S )Nr   )Ú_validate_grabframe_kwargsr   )Úmatplotlib.animationrG   Úsavefig_kwargsrC   )rD   rI   rG   s      r   Ú
grab_framezNullMovieWriter.grab_frameJ   sA   € ØCÐCÐCÐCÐCÐCØ"Ð" >Ñ2Ô2Ð2Ø,ˆÔØˆŒ�qÑˆŒˆˆr   c                 ó   — d S r   r&   ©rD   s    r   ÚfinishzNullMovieWriter.finishP   s   € Øˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rE   rJ   rM   r&   r   r   r>   r>   7   sK   € € € € € ð	ð 	ðð ð ðð ð ðð ð ð ð r   r>   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)rA   ÚwriterrI   r   r&   )r'   ÚrcParamsr,   r>   Úsaver#   Úfigurer@   rA   rB   ÚitemsrI   rC   Ú_save_count)r3   ÚfilenamerA   rI   rW   ÚkÚvs          r   Útest_null_movie_writerr`   T   s  € à(.…C„LÐ$Ñ%Ø€HØ
€CÝ˜a�[‘[”[€NÝÑÔ€Fà‡I‚Iˆh˜C¨Ø+ð ñ -ô -ð -ð Œ:�œ A™œÒ&Ð&Ð&Ð&ØŒ>˜XÒ%Ð%Ð%Ð%ØŒ:˜ÒÐÐÐØŒ;˜"ÒÐÐÐð ×$Ò$Ñ&Ô&ð -ð -‰ˆˆ1ØÔ$ QÔ'¨1Ò,Ð,Ð,Ð,Ð,ØŒ=˜DÔ,Ò,Ð,Ð,Ð,Ð,Ð,r   c                  óX  — t          j        dd¬¦  «        } | j        j        dk     sJ ‚| j                             ¦   «         dk    sJ ‚t          j        | d„ d¬¦  «        }t          ¦   «         }| 	                    d	d|¬
¦  «         |j
        | j                             ¦   «         k    sJ ‚d S )N)r   g=
×£p= @r   )ÚfigsizerA   éË   )r   rc   c                 ó   — t          ¦   «         S r   )Útuple©Úframes    r   ú<lambda>z!test_frame_size.<locals>.<lambda>p   s
   € µe±g´g€ r   r   ©r!   rT   )rA   rW   )r'   rZ   ÚbboxÚheightÚcanvasÚget_width_heightr   r/   r>   rY   Ú
frame_size)r#   r3   rW   s      r   Útest_frame_sizero   j   s°   € å
Œ*˜Y¨CÐ
0Ñ
0Ô
0€CØŒ8Œ?˜SÒ Ð Ð Ð ØŒ:×&Ò&Ñ(Ô(¨JÒ6Ð6Ð6Ð6åÔ" 3Ð(=Ð(=ÀaÐHÑHÔH€DÝÑÔ€FØ‡I‚Iˆm ¨V€IÑ4Ô4Ð4àÔ ¤
× ;Ò ;Ñ =Ô =Ò=Ð=Ð=Ð=Ð=Ð=r   r3   )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 deletedr5   r&   )
ÚplatformÚpython_implementationr   ÚtestingÚbreak_cyclesr   r/   r8   ÚwarnsÚWarning©r3   s    r   Útest_animation_deleterz   w   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&   rL   s    r   Ú_runz<test_movie_writer_dpi_default.<locals>.DummyMovieWriter._run†   s   € ØˆDr   N)rN   rO   rP   r   r&   r   r   ÚDummyMovieWriterr}   …   s#   € € € € € ð	ð 	ð 	ð 	ð 	r   r€   rT   r"   Úunusedr   )r   ÚMovieWriterr'   rZ   rE   rA   )r€   r#   r]   ÚfpsÚcodecÚbitrateÚ
extra_argsrW   s           r   Útest_movie_writer_dpi_defaultr‡   „   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&   )rD   rƒ   r„   r…   r†   Úmetadatas         r   Ú__init__z"RegisteredNullMovieWriter.__init__    s   € àˆr   c                 ó   — dS )NTr&   )Úclss    r   ÚisAvailablez%RegisteredNullMovieWriter.isAvailable¤   s   € àˆtr   )NNNNN)rN   rO   rP   r�   Úclassmethodr�   r&   r   r   rŠ   rŠ   —   sK   € € € € € ð 6:Ø+/ðð ð ð ð ðð ñ „[ðð ð r   rŠ   ))Úffmpegú	movie.mp4)Úffmpeg_filer“   )Úimagemagickú	movie.gif)Úimagemagick_filer–   )Úpillowr–   )Úhtmlz
movie.html)rˆ   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   r;   Úis_availabler8   ÚmarkÚskipr   r   r-   )rW   Úoutputr    Úwriter_classÚframe_formats        r   Úgen_writersr¥   ´   s  è è € Ý'ð 
5ð 
5‰ˆ�ÝÔ ×-Ò-¨fÑ5Ô5ð 	Ý”;×#Ò#Ð$U¨vÐ$UÐ$UÐ$UÑVÔVˆ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}|                     | |z  d|d||¬¦  «         ~d S )
Núanimation.frame_formatr’   ©g33333³%@gìQ¸…k"@ç      Y@Úh264é   iô  )rƒ   rW   r…   rA   r„   r&   )r'   rX   r   r/   Ú_figÚset_size_inchesrY   )Útmp_pathrW   r¤   r¢   r3   rA   r„   s          r   Útest_save_animation_smoketestr¯   Å   s˜   € ð ÐØ1=�ŒÐ-Ñ.ÝÔ"Ð*Ð* TÐ*Ð*€DØ
€CØ€EØ�ÒÐàŒ	×!Ò! -Ñ0Ô0Ð0ØˆØˆà‡I‚Iˆh˜Ñ R°ÀÈØð ñ ô ð ð 	ˆˆr   c           
      ó  — t           j        |         }|�|t          j        d<   t          j        ¦   «         \  }}d }d }|dk    r|                     d¦  «         d}d} |¦   «         }	|	                     || |z  |¦  «        5  |	                     ¦   «          dD ]S}
t          j	        t          d|
›�¬¦  «        5   |	j        d	i |
t          ¦   «         i¤Ž d d d ¦  «         n# 1 swxY w Y   ŒT	 d d d ¦  «         d S # 1 swxY w Y   d S )
Nr§   r’   r¨   r©   rª   >   rA   ÚformatÚbbox_inchesz.grab_frame got an unexpected keyword argument r5   r&   )r   r;   r'   rX   r(   r­   ÚsavingrJ   r8   r9   Ú	TypeErrorÚobject)r®   rW   r¤   r¢   ÚWriterClassr#   r1   rA   r„   Útest_writerr^   s              r   Útest_grabframer¸   Ù   s·  € åÔ# FÔ+€KàÐØ1=�ŒÐ-Ñ.åŒl‰nŒn�G€Cˆà
€CØ€EØ�ÒÐà×Ò˜MÑ*Ô*Ð*ØˆØˆà�+‘-”-€KØ	×	Ò	˜C ¨FÑ!2°CÑ	8Ô	8ð 8ð 8à×ÒÑ Ô Ð Ø1ð 	8ð 	8ˆAÝ”ÝØPÈ1ÐPÐPðRñ Rô Rð 8ð 8ð '�Ô&Ð7Ð7¨!­V©X¬X¨Ð7Ð7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8øð	8ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð 8ð 8s6   Â7C:Â8C ÃC:Ã C$Ã$C:Ã'C$Ã(C:Ã:C>ÄC>rW   r’   ú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 )Nrr   r•   r¼   r¹   )úanimation.writerzanimation.htmlr&   )rs   rt   r   ru   rv   r   ÚFFMpegWriterr�   r8   r¡   r/   r'   Ú
rc_contextÚ_repr_html_rw   ÚUserWarning)rW   r™   Úwantr3   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 )NrT   ©rW   )rY   r>   ry   s    r   Útest_no_length_framesrÉ     s&   € ð 	‡I‚Iˆm¥OÑ$5Ô$5€IÑ6Ô6Ð6Ð6Ð6r   Ú
emscriptenz(emscripten does not support subprocessesc                  ó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_pathr’   Úwin32ÚtrueÚwhere)	Úlenr   r;   Ú_registeredÚmplrX   rŸ   Úsysrs   )Ú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   ri   c                 ó2  — |                      d¦  «         t          j        ddi¦  «        5   t          || ¦  «        ¦   «          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Ð   ÚrecordsÚnameÚ	levelname)rÖ   Úcaplogr3   Úrecords       r   Útest_embed_limitrá   3  sé   € ð ×Ò�YÑÔÐÝ	ŒÐ0°$Ð7Ñ	8Ô	8ð %ð %Ø"���kÑ"Ô"Ñ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %åˆvŒ~ÑÔ !Ò#Ð#Ð#Ð#ØŒn�G€FØŒKÐ1Ò1Ð1ØÔ  IÒ-Ð-Ð-ð.Ø-Ð-s   ¬AÁAÁAz/bin/shzrequires a POSIX OSc                 óF  — |                      dt          | ¦  «        d¬¦  «         | dz  }|                     d¦  «         t          j        |d¦  «         t          j        t          j        ¦  «        5  | 	                    d¦  «         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.
    ÚPATHú:)Úprependr’   s   #!/bin/sh
[[ $@ -eq 0 ]]
ií  z	test.mpegN)
ÚsetenvÚstrÚwrite_bytesÚosÚchmodr8   r9   Ú
subprocessÚCalledProcessErrorrY   )r®   Úmonkeypatchr3   Úexe_paths       r   Útest_failing_ffmpegrï   D  sß   € ð ×Ò�v�s 8™}œ}°cÐÑ:Ô:Ð:Ø˜(Ñ"€HØ×ÒÐ7Ñ8Ô8Ð8Ý„HˆX�uÑÔÐÝ	Œ•zÔ4Ñ	5Ô	5ð ð Ø�	Š	�+ÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á3BÂBÂBÚ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)rN   rO   rP   r&   r   r   ÚFrameró   \  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   )rg   r   s    €r   r   z4test_funcanimation_cache_frame_data.<locals>.animated  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   rg   rô   Úframes_generateds       €€r   Úframes_generatorz=test_funcanimation_cache_frame_data.<locals>.frames_generatorj  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Æ   rT   rÈ   r"   )r'   r(   r)   r,   r   r/   r>   rY   rÐ   r   ru   rv   )rð   r#   r1   r   r   r   Ú
MAX_FRAMESr3   rW   Úfrô   rÿ   r   s             @@@r   Ú#test_funcanimation_cache_frame_datar  W  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>.animate™  s5   ø€ à�Š�q˜!�f˜q !˜fÑ%Ô%Ð%Ø˜8Ò#Ð#àˆKàÐr   TF)Úblitrð   )r'   r(   r)   r8   r9   ÚRuntimeErrorr   r/   )r  r#   r1   r   r   s   `   @r   Útest_draw_framer  ‡  sÝ   øø€ õ Œl‰nŒn�G€CˆØ�GŠG�B‰KŒK�E€Dð ð  ð  ð  ð  ð  õ 
Œ•|Ñ	$Ô	$ð 
ð 
ÝÔØ�˜t°eð	
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   ÁA5Á5A9Á<A9c           	      ób  — t          j        ¦   «         \  }}d„ }t          j        ||t	          t          d¦  «        ¦  «        dd¬¦  «        }|                     | dz  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&   rf   s    r   Úupdatez(test_exhausted_animation.<locals>.update«  ó   € Øˆ	r   r	   F©r!   Úrepeatrð   útest.gifr˜   rÈ   Ú	exhaustedr5   )r'   r(   r   r/   Úiterrø   rY   r8   rw   rÃ   Ú_start)r®   r#   r1   r  r3   s        r   Útest_exhausted_animationr  ¨  sô   € ÝŒl‰nŒn�G€Cˆðð ð õ Ô"ØˆV�D¥ r¡¤™OœO°EØðñ ô €Dð
 	‡I‚Iˆh˜Ñ#¨H€IÑ5Ô5Ð5å	Œ•k¨Ð	5Ñ	5Ô	5ð ð Ø�Š‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÂB$Â$B(Â+B(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&   rf   s    r   r  z%test_no_frame_warning.<locals>.update¼  r  r   Fr  r  r5   )r'   r(   r   r/   r8   rw   rÃ   r  )r#   r1   r  r3   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c                 ó„  ‡‡— |                      ¦   «         }|                     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
¬¦  «        }| 	                    | dz  ¦  «         |                      ¦   «         }|                     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/   rY   r   )	r®   Úfig_testÚfig_refr1   r   r   r3   r   r   s	          @@r   Útest_animation_framer"  È  sS  øø€ ð
 
×	Ò	Ñ	Ô	€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ð 	‡I‚Iˆh˜Ñ#Ñ$Ô$Ð$ð 
×	Ò	Ñ	Ô	€BØ‡K‚K��1•r”u‘9ÑÔÐØ‡K‚K��AÑÔÐð ‡G‚GˆA�rŒv�a˜'‘kÑ"Ô"Ñ#Ô#Ð#Ð#Ð#r   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)=ú.r5   ©r!   rÆ   r&   )Úlistrø   rÐ   r8   rw   rÃ   ÚreÚescaper   r/   r\   Ú
_init_draw©r3   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%  r5   r&  r&   )	r8   rw   rÃ   r(  r)  r   r/   r\   r*  r+  s       r   Ú(test_save_count_override_warnings_scalerr2  ü  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"   r1  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`.r5   )rð   r!   Fr&   )r  rø   r8   rw   rÃ   r(  r)  r   r/   Ú_cache_frame_datar*  )r3   rð   r!   r,  s       r   Útest_disable_cache_warningr5    s  € àÐÝ•%˜‘(”(‰^Œ^€Fð	?ˆ6ð 	?ð 	?à&ð	?ð 	?ð 	?ð õ 
Œ•k­¬°<Ñ)@Ô)@Ð	AÑ	AÔ	Að 
ð 
ÝÔ&ð 
ð 
ØN�ÐNÐ+;ÀvÐNÐNÐNð
ð 
ˆð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð Ô! UÐ*Ð*Ð*Ð*Ø‡O‚OÑÔÐÐÐs   ÁA:Á:A>ÂA>c                 ó  — t           j        dk    rd}nt           j        dk    rd}nd}t          j        t          |¬¦  «        5  |                      dt          j        ¦   «         ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	NrÍ   z+\[WinError 3] .*\\\\foo\\\\bar\\\\aardvark'rÊ   z\[Errno 44] .*'/fooz\[Errno 2] .*'/foor5   z+/foo/bar/aardvark/thiscannotreallyexist.mp4rÈ   )rÓ   rs   r8   r9   ÚFileNotFoundErrorrY   r   ÚFFMpegFileWriter)r3   Ú	match_strs     r   Útest_movie_writer_invalid_pathr:  #  sÓ   € Ý
„|�wÒÐØBˆ	ˆ	Ý	Œ˜Ò	%Ð	%Ø*ˆ	ˆ	à)ˆ	Ý	ŒÕ(°	Ð	:Ñ	:Ô	:ð 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   Á)A:Á:A>ÂA>c                  óð  — t          j        ¦   «         \  } }t          j        ddddd¬¦  «        }|                     |¦  «         |                     dd¦  «         |                     dd¦  «         t          d¬¦  «        }|                     | d	d
¬¦  «         |                     d¬¦  «         |j	        d         }| 
                    ¦   «         d         d         dk     sJ ‚t          j        | ¦  «         dS )zGTest animation exhaustion with transparency using PillowWriter directly)r   r   r   Úredg      à?)ÚcolorÚalphar   r«   )rƒ   z
unused.gifr   )rA   T)Útransparentr
   é   éÿ   N)r'   r(   Ú	RectangleÚ	add_patchr*   r+   r   rE   rJ   Ú_framesÚ
getextremaÚclose)r#   r1   ÚrectrW   rg   s        r   Ú test_animation_with_transparencyrH  /  sè   € åŒl‰nŒn�G€CˆÝŒ=˜  A¨U¸#Ð>Ñ>Ô>€DØ‡L‚L�ÑÔÐØ‡K‚K��1ÑÔÐØ‡K‚K��1ÑÔÐå˜bÐ!Ñ!Ô!€FØ
‡L‚L��l¨€LÑ,Ô,Ð,Ø
×Ò $ÐÑ'Ô'Ð'ØŒN˜2Ô€Eà×ÒÑÔ˜aÔ  Ô# cÒ)Ð)Ð)Ð)Ý„Iˆc�N„N€N€N€Nr   )Bré   Úpathlibr   rs   r(  Úshutilrë   rÓ   rü   Únumpyr   r8   Ú
matplotlibrÒ   r   r'   r   rH   r   Úmatplotlib.testing.decoratorsr   Úfixturer3   r<   ÚAbstractMovieWriterr>   r`   ro   r    Úparametrizer,   rz   r‡   r;   ÚregisterrŠ   rž   r¥   r'  r¯   r¸   r   ÚskipifrÀ   r�   ÚImageMagickWriterrÅ   r  rø   rÉ   rÕ   rŸ   rX   rá   Úwhichrï   r  r  r  r  r"  r-  r2  r5  r:  rH  r&   r   r   ú<module>rU     s}  ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø €€€à Ð Ð Ð Ø €€€à Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø  Ð  Ð  Ð  Ð  Ð  Ø -Ð -Ð -Ð -Ð -Ð -Ø =Ð =Ð =Ð =Ð =Ð =ð €„ÑÔðBð Bñ ÔðBð4#ð #ð #ðð ð ð ð �iÔ3ñ ô ð ð:-ð -ð -ð,
>ð 
>ð 
>ð „×Ò˜ $ $¨TÐ"2Ñ"2Ô"2Ð!3¸v¸hÐÑGÔGð	"ð 	"ñ HÔGð	"ð!ð !ð !ð& Ô×Ò˜FÑ#Ô#ðð ð ð ð  ñ ô ñ $Ô#ðð"ð ð €ð5ð 5ð 5ð" „×ÒÐ7¸¸¸k¸k¹m¼mÑ9LÔ9LÑMÔMØ„×Ò˜ $ $¨TÐ"2Ñ"2Ô"2Ð!3¸v¸hÐÑGÔGðð ñ HÔGñ NÔMðð$ „×ÒÐ7¸¸¸k¸k¹m¼mÑ9LÔ9LÑMÔMð8ð 8ñ NÔMð8ð6 „×Ò˜Ø€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ð „×Ò�C”L LÒ0ØEð ñ Gô Gð4ð 4ñGô Gð4ð „×ÒØØ€V„\Ð"¨&¬+×*<Ò*<ØÔ×*Ò*¨3¬<Ð8JÔ+KÑLÔLÐLØ/ð +=ñ +1ô +1ð 2ñ 2ô 2ð ðñô ð „×Ò˜ $ $¨a .¡.¤.Ð!1¸V¸HÐÑEÔEð/ð /ñ FÔEñô ð/ð „×Ò�C”L LÒ0ØEð ñ Gô Gà„×Ò�L�F”L Ñ+Ô+¨tÐ3Ð<QÐÑRÔRðð ñ SÔRñGô Gðð  „×ÒÐ+¨e°T¨]Ñ;Ô;ð,1ð ,1ñ <Ô;ð,1ð^ „×Ò˜ð *ð *ð *ñ ô ð
ð 
ñô ð
ð*ð ð ð"ð ð ð ÐÑÔð$ð $ñ Ôð$ð@ „×Ò˜ $ $¨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ðð ð ð ð r   