ó
    [h’"  ã                   óð  • S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r
  SrSS jr\" SS9S 5       r\" S	S9S
 5       r\R                  R!                  \R"                  " 5       S:g  SS9\R                  R%                  SS9\" S	S9S 5       5       5       r\R                  R%                  SS9\" S S9S 5       5       r\" SS9S 5       r\" SS9S 5       r\" S	S9S 5       r\" SS9S 5       rg)é    N)Ú_c_internal_utils)Úsubprocess_run_helperé<   c                 óä  ^ ^• Tc  [         R                  " [        T 5      $ S[        R                  ;   a  T$ [
        R                  R                  [        R                  R                  S5      (       + SS9[
        R                  R                  [        R                  S:H  =(       a    [        R                  " 5       (       + SS9[
        R                  R                  S[        R                  ;   =(       d    S	[        R                  ;   =(       a0    [        R                  S
:H  =(       a    [        R                   SS S:  SS9[         R"                  " T5      UU 4S j5       5       5       5       nU$ )zå
A decorator to run *func* in a subprocess and assert that it prints
"success" *success_count* times and nothing on stderr.

TkAgg tests seem to have interactions between tests, so isolate each test
in a subprocess. See GH#18261
NÚMPL_TEST_ESCAPE_HATCHÚtkinterzmissing tkinter©ÚreasonÚlinuxz$DISPLAY is unsetÚTF_BUILDÚGITHUB_ACTIONÚdarwiné   )é   é   z%Tk version mismatch on Azure macOS CIc            	      óF  >^• [         R                  " S5         [        T[        [	        SSS9S9n / SQnU R
                  R                  5        V^s/ s H!  m[        U4S jU 5       5      (       d  M  TPM#     sn(       a   eU R                  R                  S5      T:X  d   eg s  snf ! [        R                   a    [         R                  " S	5         g [        R                   a6  n[         R                  " S
[        UR
                  5      -   5         S nAg S nAff = f)Nr   ÚTkAggÚ1)Ú
MPLBACKENDr   )ÚtimeoutÚ	extra_env)ÚOpenGLz!CFMessagePort: bootstrap_registerz%/usr/include/servers/bootstrap_defs.hc              3   ó,   >#   • U  H	  oT;  v •  M     g 7f©N© )Ú.0ÚmsgÚlines     €Úo/home/gothic/public_html/Fooocus/fooocus_env/lib64/python3.13/site-packages/matplotlib/tests/test_backend_tk.pyÚ	<genexpr>Ú7_isolated_tk_test.<locals>.test_func.<locals>.<genexpr>E   s   øé € ÐHº-°3¨$žº-ùs   ƒÚsuccesszSubprocess timed outz,Subprocess failed to test intended behavior
)ÚpytestÚimportorskipr   Ú_test_timeoutÚdictÚstderrÚ
splitlinesÚallÚstdoutÚcountÚ
subprocessÚTimeoutExpiredÚfailÚCalledProcessErrorÚstr)ÚprocÚignored_linesr   ÚeÚfuncÚsuccess_counts     ` €€r   Ú	test_funcÚ$_isolated_tk_test.<locals>.test_func!   sü   ù€ ô" 	×Ò˜IÔ&ð	AÜ(Øœm´tØ&¸cñ8CñDˆDòFˆMà)-¯©×)?Ñ)?Ô)Aô JÒ)A ÜÔH¹-ÓH×H÷ Ñ)A÷ Jð Jð Jà—;‘;×$Ñ$ YÓ/°=Ó@Ð@Ñ@ùòJøô ×(Ñ(ó 	0Ü�KŠKÐ.Ö/Ü×,Ñ,ó 	)Ü�KŠKÐGÜ˜aŸh™h›-ñ(÷ )ñ )ûð	)ús)   šB+ ÁB&Á4B&Â+*D ÃD Ã*,DÄD )Ú	functoolsÚpartialÚ_isolated_tk_testÚosÚenvironr#   ÚmarkÚskipifÚ	importlibÚutilÚ	find_specÚsysÚplatformr   Úxdisplay_is_validÚxfailÚversion_infoÚwraps)r5   r4   r6   s   `` r   r:   r:      s1  ù€ ð �|Ü× Ò Ô!2°MÓBÐBà¤"§*¡*Ó,àˆä‡[�[×ÑÜ�N‰N×$Ñ$ YÓ/Ô/Ø ð ð ô ‡[�[×ÑÜ�‰˜Ñ×MÔ(9×(KÒ(KÓ(MÔ$MØ"ð ð ô ‡[�[×ÑØ	”r—z‘zÑ	!×	B _¼¿
¹
Ñ%B÷ 	DÜ�‰˜Ñ ÷	DÜ%(×%5Ñ%5°b°qÐ%9¸GÑ%CØ6ð ð ô
 ‡_‚_�TÓõAó óó	ó	ðAð2 Ðó    é   )r5   c            	      óÌ  • SS K Jn   SS KnSS KnSSKJnJn  U R                  5       u  pVUR                  R                  nUR                  SUR                  S9nSn	U	 HE  n
 UR                  UR                  R                  5       [        U5      UUR                   SU
5        MG     U R'                  U5        UR                  XxS5        g ! ["         a    [%        S5         M…  f = f)Nr   )Ú_backend_tkÚ_tkagg)é   rM   rM   )Údtype))éÿÿÿÿr   r   r   )r   r   r   r   )é   rI   r   r   )r   r   rO   r   )r   r   r   r   )r   r   rP   rI   )r   rP   r   r   r"   )Úmatplotlib.pyplotÚpyplotÚnumpyÚ!matplotlib.backends.backend_tkaggÚmatplotlib.backendsrK   rL   ÚsubplotsÚcanvasÚ_tkphotoÚonesÚuint8ÚblitÚtkÚ
interpaddrr0   ÚTK_PHOTO_COMPOSITE_OVERLAYÚ
ValueErrorÚprintÚclose)ÚpltÚnpÚ
matplotlibrK   rL   ÚfigÚaxÚ
photoimageÚdataÚ	bad_boxesÚbad_boxs              r   Ú	test_blitrk   K   sÀ   € å#ÛÛ,ß7à�l‰l‹n�G€CØ—‘×$Ñ$€JØ�7‰7�9 B§H¡Hˆ7Ð-€Dð€Ió ˆð	Ø�K‰KØ—‘×(Ñ(Ó*¬C°
«O¸TØ×1Ñ1°<ÀöJñ ð ‡I�Iˆc„NØ×Ñ�Z |Õ4øô ó 	Ü�)×ð	ús   Á!AC
Ã
C#Ã"C#rP   c                  óÌ   ^^^^• SS K n SS KJm  / mUUU4S jnUU4S jmU R                  5       mTR	                  SU5        TR                  5         T(       a  [        S5        g g )Nr   c                  ó–   >• TR                  5         TR                  SS/SS/5        TR                  5         TR                  ST 5        g )NrP   r   r   é   r   )ÚfigureÚplotra   Úafter)Úlegitimate_quitrb   Úroots   €€€r   Údo_plotÚ;test_figuremanager_preserves_host_mainloop.<locals>.do_ploto   s9   ø€ Ø�
‰
ŒØ�‰�!�Q�˜!˜Q˜Ô Ø�	‰	ŒØ�
‰
�1�oÕ&rH   c                  óH   >• T R                  5         TR                  S5        g ©NT)ÚquitÚappend)rs   r"   s   €€r   rr   ÚCtest_figuremanager_preserves_host_mainloop.<locals>.legitimate_quitu   s   ø€ Ø�	‰	ŒØ�‰�tÕrH   r"   )r   rQ   rR   ÚTkrq   Úmainloopr`   )r   rt   rr   rb   rs   r"   s     @@@@r   Ú*test_figuremanager_preserves_host_mainloopr}   i   sL   û€ ãÝ#Ø€G÷'öð �:‰:‹<€DØ‡J�Jˆq�'ÔØ‡M�M„OæÜˆiÕð rH   ÚCPythonzZPyPy does not support Tkinter threading: https://foss.heptapod.net/pypy/pypy/-/issues/1929r	   r   )Úrerunsc                  óX  ^^^^• SS K n SS KmSS KJm  SS KnSSKJm  U R                  5       nTR                  / SQ/ SQ5        UUUU4S jnUR                  5       mUR                  USS9nUR                  5         TR                  SS9  TR                  5         UR                  5         g )	Nr   )Ú"_get_running_interactive_framework©rP   r   r   )rP   r   rn   c                  óº   >• ST " 5       :X  d  TR                  S5        ST " 5       :X  d  M  TR                  5         TR                  5       (       a  [        S5        g g )Nr\   g{®Gáz„?r"   )Úsleepra   Úwaitr`   )r�   rb   Úshow_finished_eventÚtimes   €€€€r   ÚtargetÚ6test_figuremanager_cleans_own_mainloop.<locals>.target�   sM   ø€ ØÑ<Ó>Ó>Ø�J‰J�sŒOð Ñ<Ó>Õ>à�	‰	ŒØ×#Ñ#×%Ñ%Ü�)Õð &rH   T)rˆ   Údaemon©Úblock)r   r‡   rQ   rR   Ú	threadingÚmatplotlib.cbookr�   r{   rp   ÚEventÚThreadÚstartÚshowÚsetÚjoin)	r   r�   rs   rˆ   Úthreadr�   rb   r†   r‡   s	        @@@@r   Ú&test_figuremanager_cleans_own_mainloopr–   �   s‡   û€ ó ÛÝ#ÛÝCà�:‰:‹<€DØ‡H�HŠYš	Ô"÷ð ð $Ÿ/™/Ó+ÐØ×Ñ V°DÐÐ9€FØ
‡L�L„NØ‡H�H�4€HÑØ×ÑÔØ
‡K�K…MrH   c                  óv  • SS K n U R                  ?U R                  ?SS KJn  UR                  5       nUR                  SS9  UR                  5         UR                  R                  R                  5         UR                  R                  5       R                  SUR                  U5        UR                  SS9  g )Nr   Fr‹   éd   T)r   ÚMiscÚupdateÚupdate_idletasksrQ   rR   ro   r’   ÚdrawrW   ÚtoolbarÚconfigure_subplotsÚget_tk_widgetrq   ra   )r   rb   re   s      r   Útest_never_updater    Ÿ   s‰   € ó Ø�‰ÐØ�‰Ð%å#Ø
�*‰*‹,€CØ‡H�H�5€HÑà‡H�H„JØ‡J�J×Ñ×)Ñ)Ô+à‡J�J×ÑÓ×$Ñ$ S¨#¯)©)°SÔ9ð ‡H�H�4€HÒrH   r   c                  óè   ^• SS K Jn   SSKJm   " U4S jST5      nU R	                  5       n[        S5        U" UR                  UR                  R                  R                  5        [        S5        g )Nr   )ÚNavigationToolbar2Tkc                   óx   >• \ rS rSr YR                   V Vs/ s H  nUS   S;   d  M  UPM     snn rSrgs  snn f )Ú)test_missing_back_button.<locals>.Toolbaré¼   r   )ÚHomeÚPanÚZoomr   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú	toolitemsÚ__static_attributes__)r   Útr¢   s   00€r   ÚToolbarr¤   ¼   s8   ø† á 4× >Ò >ô 6Ò >˜1Ø�q‘TÐ4Ñ4÷ Ñ >ò 6‹	ùó 6s   ˜6©6r°   r"   )	rQ   rR   rT   r¢   ro   r`   rW   ÚmanagerÚwindow)rb   r°   re   r¢   s      @r   Útest_missing_back_buttonr³   ·   sQ   ø€ å#ÝF÷6Ð&ô 6ð
 �*‰*‹,€CÜ	ˆ)ÔÙˆC�J‰J˜Ÿ
™
×*Ñ*×1Ñ1Ô2Ü	ˆ)ÕrH   c                  ó  • SS K Jn   SSKJn  U R	                  5       nSnUR                  USS9   UR                  R                  R                  R                  5       n[        R                  " S5        US:X  d   e[        S5        S S S 5        UR                  USS9   UR                  R                  R                  R                  5       nUb   e[        S5        S S S 5        g ! , (       d  f       Nf= f! , (       d  f       g = f)Nr   )Úmockz$tkinter.filedialog.asksaveasfilenamez
foobar.png)Úreturn_valuer"   Ú )rQ   rR   Úunittestrµ   ro   ÚpatchrW   r±   r�   Úsave_figurer;   Úremover`   )rb   rµ   re   ÚpropÚfnames        r   Útest_save_figure_returnr¾   Ç   sÉ   € å#ÝØ
�*‰*‹,€CØ1€DØ	�‰�D |ˆÒ	4Ø—
‘
×"Ñ"×*Ñ*×6Ñ6Ó8ˆÜ
�	Š	�,ÔØ˜Ó$Ð$Ð$ÜˆiÔ÷	 
5ð
 
�‰�D rˆÒ	*Ø—
‘
×"Ñ"×*Ñ*×6Ñ6Ó8ˆØ‰}Ðˆ}ÜˆiÔ÷ 
+Ð	*÷ 
5Õ	4ú÷
 
+Õ	*ús   ¯AC'Â?C8Ã'
C5Ã8
Dc                  ó>  ^^^^• SS K n SS KJm  / mUUUU4S jnU R                  5       mTR	                  5       mTR                  / SQ5        TR                  STR                  5        TR                  SU5        TR                  5         T(       a  [        S5        g g )Nr   c                  ó  >• TR                   R                  5       n U R                  5       (       d  U R                  5         U R	                  5       U :X  a  TR                  S5        TR                  5         TR                  5         g rw   )rW   rŸ   Úwinfo_viewableÚwait_visibilityÚfocus_lastforry   ra   Údestroy)Útkcanvasre   rb   rs   r"   s    €€€€r   Úcheck_focusÚ&test_canvas_focus.<locals>.check_focusÞ   sa   ø€ Ø—:‘:×+Ñ+Ó-ˆà×&Ñ&×(Ñ(Ø×$Ñ$Ô&ð ×!Ñ!Ó# xÓ/Ø�N‰N˜4Ô Ø�	‰	ŒØ�‰�rH   r‚   r˜   r"   )
r   rQ   rR   r{   ro   rp   rq   r’   r|   r`   )r\   rÆ   re   rb   rs   r"   s     @@@@r   Útest_canvas_focusrÈ   Ø   su   û€ ãÝ#Ø€G÷
ð 
ð �5‰5‹7€DØ
�*‰*‹,€CØ‡H�HŠYÔØ‡J�Jˆq�#—(‘(ÔØ‡J�Jˆs�KÔ Ø‡M�M„OæÜˆiÕð rH   c                  óÜ   ^^^^• SS K n SSKJmJm  SSKJm  SSKJm  U R                  5       nUUUU4S jnU" U5        [        S5        UR                  SSS	S
9  U" U5        [        S5        g )Nr   )ÚFigureCanvasTkAggr¢   )Úkey_press_handler)ÚFigurec                 óp  >• T" 5       nUR                  5       nUR                  / SQ5        T" XS9nUR                  5         UR                  ST5        UR	                  5       R                  SSS9  T" X0SS9nUR                  SS	S9  UR	                  5       R                  5         UR                  5         g )
Nr‚   )ÚmasterÚkey_press_eventTÚboth)ÚexpandÚfillF)Úpack_toolbarÚx)Úadd_subplotrp   rœ   Úmpl_connectrŸ   ÚpackÚforget)	rÎ   re   rf   rW   r�   rÌ   rÊ   r¢   rË   s	        €€€€r   Útest_figureÚ#test_embedding.<locals>.test_figureÿ   sž   ø€ Ù‹hˆØ�_‰_ÓˆØ
�‰’	Ôá" 3Ñ6ˆØ�‰ŒØ×ÑÐ,Ð.?Ô@Ø×ÑÓ×#Ñ#¨4°fÐ#Ñ=á& vÀEÑJˆØ�‰˜D sˆÑ+à×ÑÓ×%Ñ%Ô'Ø�‰ÕrH   r"   zsky bluezmidnight blueÚwhite)Ú
backgroundÚselectColorÚ
foreground)r   rT   rÊ   r¢   Úmatplotlib.backend_basesrË   Úmatplotlib.figurerÌ   r{   r`   Útk_setPalette)r\   rs   rÙ   rÌ   rÊ   r¢   rË   s      @@@@r   Útest_embeddingrâ   õ   sd   û€ ã÷1å:Ý(à�5‰5‹7€D÷ð ñ  �ÔÜ	ˆ)Ôð
 	×Ñ *¸/Ø")ð ñ +á�ÔÜ	ˆ)ÕrH   r   )r8   r?   r;   rC   r,   rB   r#   rd   r   Úmatplotlib.testingr   r%   r:   rk   r}   r=   r>   Úpython_implementationÚflakyr–   r    r³   r¾   rÈ   râ   r   rH   r   Ú<module>ræ      s_  ðÛ Û Û 	Û Û Û 
ã å (Ý 4ð €ô7ñt  Ñ#ñ5ó $ð5ñ:  Ñ#ñó $ðð. ‡�×Ñ�H×2Ò2Ó4¸	ÑAðOð ð Pð ‡�×Ñ˜!ÐÐÙ Ñ#ñó $ó óPð
ð2 ‡�×Ñ˜!ÐÐÙ Ñ#ñó $ó ðñ,  Ñ#ñó $ðñ  Ñ#ñó $ðñ   Ñ#ñó $ðñ8  Ñ#ñ"ó $ñ"rH   