Ë
    ¨ehµ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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 G d„ d	ej.                  «      Zd
„ Zej4                  j7                  d ee¬«      gdg¬«      d„ «       Zd„ Zej>                  jA                  d«       G d„ de«      «       Z!g d¢Z"d„ Z#ej4                  j7                  d e#«       «      ej4                  j7                  d ee¬«      gdg¬«      d„ «       «       Z$ej4                  j7                  d e#«       «      d„ «       Z%ej4                  j7                  d ejL                  dej4                  jO                  ejP                  jS                  «        d¬«      ¬«       ejL                  dej4                  jO                  ejT                  jS                  «        d¬«      ¬«      g«      ej4                  j7                  dg d ¢«      ej4                  j7                  d ee¬«      gdg¬«      d!„ «       «       «       Z+ej4                  j7                  dd" e, e-d#«      «      d$œgdg¬«      d%„ «       Z.d&„ Z/ej4                  j7                  d' ejL                  d(ej4                  jO                  ej>                  ja                  ejb                  d)   «       d*¬«      ¬«      d+g«      ej4                  j7                  d ed,¬-«      gdg¬«      d.„ «       «       Z2ej4                  j7                  d' ejL                  d(ej4                  jO                  ej>                  ja                  ejb                  d)   «       d*¬«      ¬«      d+g«      ej4                  j7                  d ed,¬-«      gdg¬«      d/„ «       «       Z3ej4                  jO                   ejh                  d0«      du d1¬«      d2„ «       Z5ej4                  j7                  d3d4d5g«      d6„ «       Z6ej4                  j7                  d7g d8¢«      d9„ «       Z7d:„ Z8d;„ Z9 ed<g¬=«      d>„ «       Z:ej4                  j7                  d ee¬«      gdg¬«      d?„ «       Z;ej4                  j7                  d ee¬«      gdg¬«      d@„ «       Z<ej4                  j7                  d ee¬«      gdg¬«      dA„ «       Z=dB„ Z>dC„ Z?y)Dé    N)ÚPath)Úpyplot)Ú	animation)ÚPillowWriter)Ú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   €ú]/var/www/skyplay_api_hub/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   Úanimr3      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#   r7   r8   r9   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_kwargsr:   )r;   r@   r>   s      r   Ú
grab_framezNullMovieWriter.grab_frameB   s#   € ÝCÙ" >Ô2Ø,ˆÔØ�Š�qÑŽr   c                  ó   — y r   r&   ©r;   s    r   ÚfinishzNullMovieWriter.finishH   s   € Ør   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r<   rA   rD   r&   r   r   r5   r5   /   s   „ ñ	òòór   r5   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)r8   Úwriterr@   r   r&   )r'   ÚrcParamsr,   r5   Úsaver#   Úfigurer7   r8   r9   Úitemsr@   r:   Ú_save_count)r3   Úfilenamer8   r@   rN   ÚkÚvs          r   Útest_null_movie_writerrW   L   sç   € à(.„C‡L�LÐ$Ñ%Ø€HØ
€CÜ˜a”[€NÜÓ€Fà‡I�Iˆh˜C¨Ø+ð ô -ð �:‰:œŸ™ A›Ò&Ð&Ð&Ø�>‰>˜XÒ%Ð%Ð%Ø�:‰:˜ÒÐÐØ�;‰;˜"ÒÐÐð ×$Ñ$Ó&ò -‰ˆˆ1Ø×$Ñ$ QÑ'¨1Ó,Ð,Ð,ð-à�=‰=˜D×,Ñ,Ò,Ð,Ñ,r   r3   )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©r3   s    r   Útest_animation_deletere   b   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&   rC   s    r   Ú_runz<test_movie_writer_dpi_default.<locals>.DummyMovieWriter._runq   s   € Ør   N)rE   rF   rG   rj   r&   r   r   ÚDummyMovieWriterrh   p   s   „ ó	r   rk   rK   r"   Úunusedr   )r   ÚMovieWriterr'   rQ   r<   r8   )rk   r#   rT   ÚfpsÚcodecÚbitrateÚ
extra_argsrN   s           r   Útest_movie_writer_dpi_defaultrr   o   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;   rn   ro   rp   rq   Úmetadatas         r   Ú__init__z"RegisteredNullMovieWriter.__init__‹   s   € àr   c                  ó   — y)NTr&   )Úclss    r   ÚisAvailablez%RegisteredNullMovieWriter.isAvailable�   s   € àr   )NNNNN)rE   rF   rG   rx   Úclassmethodr{   r&   r   r   ru   ru   ‚   s#   „ ð 6:Ø+/óð ñó ñr   ru   ))Úffmpegú	movie.mp4)Úffmpeg_filer~   )Úimagemagickú	movie.gif)Úimagemagick_filer�   )Úpillowr�   )Úhtmlz
movie.html)rs   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_availablera   ÚmarkÚskipr   r   r-   )rN   Ú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ô  )rn   rN   rp   r8   ro   r&   )r'   rO   r   r/   Ú_figÚset_size_inchesÚas_cwdrP   )ÚtmpdirrN   r�   rŽ   r3   r8   ro   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–   >   r8   ÚformatÚbbox_inchesz.grab_frame got an unexpected keyword argument r[   r&   )r   rŠ   r'   rO   r(   r™   rš   ÚsavingrA   ra   ÚraisesÚ	TypeErrorÚobject)r›   rN   r�   rŽ   ÚWriterClassr#   r1   r8   ro   Útest_writerrU   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rN   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)NrZ   r€   rª   r§   )úanimation.writerzanimation.htmlr&   )r]   r^   r   r_   r`   r   ÚFFMpegWriterr{   ra   r�   r/   r'   Ú
rc_contextÚ_repr_html_rb   ÚUserWarning)rN   r„   Úwantr3   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 )NrK   ©rN   )rP   r5   rd   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ÚmplrO   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›   r3   Ú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›   r3   s      r   Útest_cleanup_temporariesrÓ   6  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Úchmodra   r¡   Ú
subprocessÚCalledProcessErrorrP   )r›   Úmonkeypatchr3   Úexe_paths       r   Útest_failing_ffmpegrß   C  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)rE   rF   rG   r&   r   r   ÚFramerã   Z  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>.animateb  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_generatorh  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´   rK   r¶   r"   )r'   r(   r)   r,   r   r/   r5   rP   r½   r   r_   r`   )rà   r#   r1   r   r   rñ   Ú
MAX_FRAMESr3   rN   Úfrä   rð   r   s             @@@r   Ú#test_funcanimation_cache_frame_datarô   U  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)   ra   r¡   ÚRuntimeErrorr   r/   )rõ   r#   r1   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¶   Ú	exhaustedr[   )r'   r(   r   r/   Úiterré   rš   rP   ra   rb   r±   Ú_start©r›   r#   r1   r   r3   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  r[   )r'   r(   r   r/   ra   rb   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š   rP   r   )	r›   Úfig_testÚfig_refr1   r   r   r3   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)=ú.r[   ©r!   r´   r&   )rÐ   ré   r½   ra   rb   r±   ÚreÚescaper   r/   rS   Ú
_init_draw©r3   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  r[   r  r&   )	ra   rb   r±   r  r  r   r/   rS   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`.r[   )rà   r!   Fr&   )r  ré   ra   rb   r±   r  r  r   r/   Ú_cache_frame_datar  )r3   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d}nd}t        j                  t        |¬«      5  | j                  dt        j                  «       ¬«       d d d «       y # 1 sw Y   y xY w)Nrº   z,\[WinError 3] .*'\\\\foo\\\\bar\\\\aardvark'z\[Errno 2] .*'/foor[   z+/foo/bar/aardvark/thiscannotreallyexist.mp4r¶   )rÀ   r]   ra   r¡   ÚFileNotFoundErrorrP   r   ÚFFMpegFileWriter)r3   Ú	match_strs     r   Útest_movie_writer_invalid_pathr.  #  s\   € Ü
‡|�|�wÒØC‰	à)ˆ	Ü	�‰Ô(°	Ô	:ñ 7Ø�	‰	Ð?Ü"×3Ñ3Ó5ð 	ô 	7÷7÷ 7ñ 7ús   ´&A#Á#A,c                  ó²  — t        j                  «       \  } }t        j                  ddddd¬«      }|j                  |«       |j	                  dd«       |j                  dd«       t        d¬«      }|j                  | d	d
¬«       |j                  d¬«       |j                  d   }|j                  «       d   d   dk  sJ ‚t        j                  | «       y)zGTest animation exhaustion with transparency using PillowWriter directly)r   r   r   Úredg      à?)ÚcolorÚalphar   r—   )rn   z
unused.gifr   )r8   T)Útransparentr
   é   éÿ   N)r'   r(   Ú	RectangleÚ	add_patchr*   r+   r   r<   rA   Ú_framesÚ
getextremaÚclose)r#   r1   ÚrectrN   rç   s        r   Ú test_animation_with_transparencyr<  -  s¶   € ä�l‰l‹n�G€CˆÜ�=‰=˜  A¨U¸#Ô>€DØ‡L�L�ÔØ‡K�K��1ÔØ‡K�K��1Ôä˜bÔ!€FØ
‡L�L��l¨€LÔ,Ø
×Ñ $ÐÔ'Ø�N‰N˜2Ñ€Eà×ÑÓ˜aÑ  Ñ# cÒ)Ð)Ð)Ü‡I�Iˆc…Nr   )@r×   Úpathlibr   r]   r  ÚshutilrÛ   rÀ   rí   Únumpyr   ra   Ú
matplotlibr¿   r   r'   r   r?   r   Úmatplotlib.testing.decoratorsr   Úfixturer3   ÚAbstractMovieWriterr5   rW   rŒ   Úparametrizer,   re   rr   rŠ   Úregisterru   r‰   r‘   rœ   r¦   r   Úskipifr®   r{   ÚImageMagickWriterr³   r  ré   r·   rÂ   r‹   rO   rÎ   rÓ   Úwhichrß   rô   rü   r	  r  r  r!  r&  r)  r.  r<  r&   r   r   ú<module>rI     s:  ðÛ 	Ý Û Û 	Û Û Û 
Û ã Û ã Ý $Ý  Ý -Ý =ð €‡�Óñ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ðò&7ór   