§
    ‡ÛgBV  ã                   ó²
  — 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	Z	d dl
Z
d dlZd dlm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„ ZdZd„ Zd	„ Zej                             d
 e¦   «         ¦  «        ej                             dddg¦  «        ej                             d¬¦  «        d„ ¦   «         ¦   «         ¦   «         Zd„ Z  e¦   «         Z!e!D �]³Z"e"j#        d          d         Z$de$v r9e"j%         &                    ej         '                    ej(        ¬¦  «        ¦  «         ŒSe$dk    r9e"j%         &                    ej         '                    ej(        ¬¦  «        ¦  «         Œ’e$dk    rpd dl)m*Z*  ej+        ¦   «         d          Z+e+rQ e*e+¦  «         e*d¦  «        k     r9e"j%         &                    ej         '                    ej,        d¬¦  «        ¦  «         �Œe"j#        d           -                    d¦  «        dk    r:e"j%         &                    ej         '                    ej(        ¬¦  «        ¦  «         �Œfe$dk    rG ej.        ¦   «         dk    r4e"j%         &                    ej         '                    dd¬ ¦  «        ¦  «         �Œµej                             d
e!¦  «        ej                             d¬¦  «        d!„ ¦   «         ¦   «         Z/d"„ Z0d#„ Z1d$„ Z2d%„ Z3d&„ Z4d'„ Z5d(„ Z6d)„ Z7ej         8                    d*ej9        v d+¬,¦  «        ej         8                    ej:        d-k    d.¬,¦  «        d/„ ¦   «         ¦   «         Z;d0„ Z<ej         8                    ej        d1k    d2¬,¦  «        ej                             d
 e¦   «         ¦  «        d3„ ¦   «         ¦   «         Z=d4„ Z>ej         $                    d5d¬6¦  «        d7„ ¦   «         Z?d8„ Z@ e¦   «         ZAeAD ]¿Z"e"j#        d          d         Z$e$d9k    r3e"j%         &                    ej         B                    d:¦  «        ¦  «         ŒNe$d;k    r3e"j%         &                    ej         B                    d<¦  «        ¦  «         Œ‡e$dk    r2e"j%         &                    ej         B                    d=¦  «        ¦  «         ŒÀej                             d
eA¦  «        ej                             d>¬¦  «        d?„ ¦   «         ¦   «         ZCd@„ ZDej         8                    ej        dAk    dB¬,¦  «        ej                             d
 e¦   «         ¦  «        ej                             dCdDdEg¦  «        dF„ ¦   «         ¦   «         ¦   «         ZEdS )Gé    N)ÚImage)Ú_c_internal_utils)ÚToolToggleBase)Úsubprocess_run_helperc            
      óT  — g } g d„ dD ¦   «         ¢d„ dD ¦   «         ¢d„ dD ¦   «         ¢dgddif‘d	gdd	if‘d	gdd
if‘dgddif‘D �]á\  }}d }d„ |D ¦   «         }t           j        dk    rt          j        ¦   «         sd}n»|r)d                     d                     |¦  «        ¦  «        }n�|d         dk    r"t          j                             d¦  «        rd}nb|d          	                    d¦  «        rGdd l
}|d         d         }|j                             ¦   «         }|› d�|                     d¦  «        vrd}g }|r:|                     t          j                             d|› d|› �¬¦  «        ¦  «         n^|d          	                    d	¦  «        rCt           j        dk    r3|                     t          j                             d¬¦  «        ¦  «         |                      t          j        i |¥dd                      |¦  «        i¥|t)          |¦  «        ¬!¦  «        ¦  «         �Œã| S )"Nc                 ó   — g | ]
}|gd |dœf‘ŒS )Úqtagg©Ú
MPLBACKENDÚQT_API© ©Ú.0Úqt_apis     ú`/granary/edev/quantum/lib/python3.11/site-packages/matplotlib/tests/test_backends_interactive.pyú
<listcomp>z6_get_testable_interactive_backends.<locals>.<listcomp>   s@   € ð Fð Fð Fàð ˆxØ%°Ð8Ð8ð:ð Fð Fð Fó    )ÚPyQt6ÚPySide6ÚPyQt5ÚPySide2c                 ó    — g | ]}|d gd|dœf‘ŒS )Ú	cairocffiÚqtcairor
   r   r   s     r   r   z6_get_testable_interactive_backends.<locals>.<listcomp>"   sC   € ð Fð Fð Fàð ˜Ð$Ø'°6Ð:Ð:ð<ð Fð Fð Fr   c                 ó2   — g | ]}d D ]}ddgdd|› |› �if‘ŒŒS ))ÚaggÚcairor   Úgir   Úgtkr   )r   ÚversionÚrenderers      r   r   z6_get_testable_interactive_backends.<locals>.<listcomp>%   sb   € ð Fð Fð FØÐ4DðFð FØ(0ð ˜ˆ Ð/H°WÐ/H¸hÐ/HÐ/HÐ IÐJð Fð Fð Fð Fr   )é   é   Útkinterr   ÚtkaggÚwxÚwxaggzmatplotlib.backends._macosxÚmacosxc                 óP   — g | ]#}t           j                             |¦  «        °!|‘Œ$S r   ©Ú	importlibÚutilÚ	find_spec©r   Údeps     r   r   z6_get_testable_interactive_backends.<locals>.<listcomp>-   s-   € ÐLÐLÐL˜3­i¬n×.FÒ.FÀsÑ.KÔ.KÐL�3ÐLÐLÐLr   Úlinuxz'$DISPLAY and $WAYLAND_DISPLAY are unsetz{} cannot be importedz, ÚTF_BUILDzmacosx backend fails on Azurer   r   r"   z.0ÚGtkzno usable GTK bindingsz	Skipping z	 because ©ÚreasonÚdarwinzgithub #16849ÚBACKEND_DEPSú,)ÚmarksÚid)ÚsysÚplatformr   Údisplay_is_validÚformatÚjoinÚosÚenvironÚgetÚ
startswithr   Ú
RepositoryÚget_defaultÚenumerate_versionsÚappendÚpytestÚmarkÚskipÚxfailÚparamÚstr)	ÚenvsÚdepsÚenvr4   Úmissingr   r    Úrepor8   s	            r   Ú"_get_testable_interactive_backendsrR      sâ  € Ø€DððFð FàDðFñ Fô FððFð FàDðFñ Fô Fð	ðFð FØ#ðFñ Fô Fðð ˆ[˜<¨Ð1Ð2ðð ˆV�l DÐ)Ð*ðð ˆV�l GÐ,Ð-ðð ,Ð,¨|¸XÐ.FÐGðð )
ñ )
‰	ˆˆcð ˆØLÐL $ÐLÑLÔLˆÝŒL˜GÒ#Ð#Ý%Ô6Ñ8Ô8ð $à>ˆFˆFØð 		2Ø,×3Ò3°D·I²I¸gÑ4FÔ4FÑGÔGˆFˆFØ�Ô (Ò*Ð*­r¬z¯~ª~¸jÑ/IÔ/IÐ*Ø4ˆFˆFØ�Ô×)Ò)¨%Ñ0Ô0ð 	2ØˆIˆIˆIØ˜,Ô'¨Ô*ˆGØ”=×,Ò,Ñ.Ô.ˆDØˆ~ˆ~ˆ~ T×%<Ò%<¸UÑ%CÔ%CÐCÐCØ1�ØˆØð 	DØ�LŠL�œ×)Ò)Ø9 3Ð9Ð9°Ð9Ð9ð *ñ ;ô ;ñ <ô <ð <ð <à�Ô×)Ò)¨$Ñ/Ô/ð 	DµC´LÀHÒ4LÐ4Là�LŠL�œ×*Ò*°/Ð*ÑBÔBÑCÔCÐCØ�ŠÝŒLØ7�3Ð7˜¨¯ª°©¬Ð7Ð7Ø¥ C¡¤ðñ ô ñ	
ô 	
ð 	
ñ 	
ð €Kr   éx   c                 óº  ‡— t          j        ¦   «         5 }t          j        dd¦  «        }t          j                             |d¦  «        Š|                     ‰¦  «          G ˆfd„dt          ¦  «        }| j	        j
        j        }| j	        j
        j        }|                     d|¦  «         |                     dd¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚLA)é   rV   ztest_la_icon.pngc                   ó   •— e Zd Z” ZdZdS )ú5_test_toolbar_button_la_mode_icon.<locals>.CustomToolÚ N)Ú__name__Ú
__module__Ú__qualname__ÚimageÚdescription)Útmp_img_paths   €r   Ú
CustomToolrX   V   s   ø€ € € € € Ø ˆEØˆKˆKˆKr   r`   ÚtestÚgroup)ÚtempfileÚTemporaryDirectoryr   Únewr?   Úpathr>   Úsaver   ÚcanvasÚmanagerÚtoolmanagerÚtoolbarÚadd_tool)ÚfigÚtempdirÚimgr`   rj   rk   r_   s         @r   Ú!_test_toolbar_button_la_mode_iconrp   N   s*  ø€ õ 
Ô	$Ñ	&Ô	&ð *¨'ÝŒi˜˜hÑ'Ô'ˆÝ”w—|’| GÐ-?Ñ@Ô@ˆØ�Š�ÑÔÐð	ð 	ð 	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð ”jÔ(Ô4ˆØ”*Ô$Ô,ˆØ×Ò˜V ZÑ0Ô0Ð0Ø×Ò˜ Ñ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð *ð *s   •B.CÃCÃCc                  ó.  ‡‡‡‡— dd l } dd l}dd l}dd l}ddlm} dd lŠddlmŠ ddlm	} ‰j
                             dddœ¦  «         ‰j
                              |j        |j        d         ¦  «        ¦  «         ‰j
        d                              ¦   «         } |¦   «         j        Š |¦   «         j        }|                     d	¦  «        r«|                     d
¦  «        s–‰                     ¦   «          |dk    r: |t(          ¦  «        5   ‰j        dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   ˆˆˆfd„}| j                             d¦  «        r ||d d…         dz   ¦  «          |d¦  «          ‰j        |d¬¦  «         ‰                     ¦   «         \  }	}
 ‰t3          |	j        ¦  «        j        d                     |¦  «        ¦  «         ‰j
        d         dk    rt;          |	¦  «         |
                     ddgddg¦  «         |	j        j        r#|	j        j                              d dddd¦  «         |	j         !                    d¦  «        Š‰ "                     |d|	j        d¦  «        j#        ¦  «         |	j         $                    dˆfd„¦  «         |	j         $                    dtJ          ¦  «         | &                    ¦   «         }|	 '                    |d¬ ¦  «         ‰ (                    ¦   «          ‰ )                    d!¦  «         | &                    ¦   «         }|	 '                    |d¬ ¦  «         |                     d"¦  «        s=|j*        d#k    r4 ‰| +                    ¦   «         | +                    ¦   «         ¦  «         d S d S d S )$Nr   )ÚTestCase©Úpyplot)ÚKeyEventFé   ©zwebagg.open_in_browserzwebagg.port_retriesÚbackendr   )r   Úwebr%   T©Úforcec                 óÀ   •—  ‰j         | d¬¦  «         ‰                     ¦   «         } ‰t          |j        ¦  «        j        d                     | ¦  «        ¦  «         d S )NTrz   úmatplotlib.backends.backend_{})ÚuseÚfigureÚtyperh   r[   r=   )Úalt_backendrm   Úassert_equalÚmplÚplts     €€€r   Úcheck_alt_backendz1_test_interactive_impl.<locals>.check_alt_backend‰   sk   ø€ ØˆCŒG�K tÐ,Ñ,Ô,Ð,Ø—*’*‘,”,ˆCØˆLÝ�S”ZÑ Ô Ô+Ø0×7Ò7¸ÑDÔDñFô Fð Fð Fð Fr   r   éýÿÿÿr   Úsvgr}   rk   rj   é   r"   g      ð?g       @Úkey_press_eventÚqÚ
draw_eventc                 ó,   •— ‰                      ¦   «         S ©N)Ústart)ÚeventÚtimers    €r   ú<lambda>z(_test_interactive_impl.<locals>.<lambda>¥   s   ø€ °u·{²{±}´}€ r   Úclose_eventÚpng)r=   ç      à?Úqt5r5   ),Úimportlib.utilÚioÚjsonr:   Úunittestrr   Ú
matplotlibrt   Úmatplotlib.backend_basesru   ÚrcParamsÚupdateÚloadsÚargvÚlowerÚassertEqualÚassertRaisesÚendswithrB   r   ÚImportErrorr~   r,   r-   Úsubplotsr€   rh   r[   r=   rp   Úplotrk   Údraw_rubberbandÚ	new_timerÚadd_callbackÚ_processÚmpl_connectÚprintÚBytesIOÚsavefigÚshowÚpauser;   Úgetvalue)r+   r—   r˜   r:   rr   ru   rx   Úassert_raisesr…   rm   ÚaxÚresultÚresult_afterr‚   rƒ   r„   r�   s                @@@@r   Ú_test_interactive_implr¶   e   s6  øøøø€ ØÐÐÐØ€I€I€IØ€K€K€KØ€J€J€JØ!Ð!Ð!Ð!Ð!Ð!àÐÐÐØ(Ð(Ð(Ð(Ð(Ð(Ø1Ð1Ð1Ð1Ð1Ð1Ø„L×ÒØ"'Ø ðð ñ ô ð ð
 „L×Ò˜
˜œ
 3¤8¨A¤;Ñ/Ô/Ñ0Ô0Ð0ØŒl˜9Ô%×+Ò+Ñ-Ô-€GØ�8‘:”:Ô)€LØ�H‘J”JÔ+€Mà×Ò˜ÑÔð ! w×'9Ò'9¸.Ñ'IÔ'Ið !à�
Š
‰Œˆð �gÒÐØ��{Ñ+Ô+ð -ð -Ø�”˜ tÐ,Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð Œ>×#Ò# KÑ0Ô0ð 	6ØÐ˜g c r cœl¨WÑ4Ñ5Ô5Ð5ØÐ˜%Ñ Ô Ð Ø€C„GˆG˜4Ð Ñ Ô Ð à�lŠl‰nŒn�G€CˆØ€LÝˆSŒZÑÔÔ#Ø(×/Ò/°Ñ8Ô8ñ:ô :ð :ð „|�IÔ -Ò/Ð/å)¨#Ñ.Ô.Ð.à‡G‚GˆQ�ˆF�Q˜�FÑÔÐØ
„zÔð ?ØŒ
Ô×*Ò*¨4°°Q¸¸AÑ>Ô>Ð>àŒJ× Ò  Ñ$Ô$€EØ	×Ò�x�xÐ 1°3´:¸sÑCÔCÔLÑMÔMÐMà„J×Ò˜<Ð)DÐ)DÐ)DÐ)DÑEÔEÐEØ„J×Ò˜=­%Ñ0Ô0Ð0à�ZŠZ‰\Œ\€FØ‡K‚K�˜u€KÑ%Ô%Ð%à‡H‚H�J„J€Jð ‡I‚Iˆc�N„N€Nð —:’:‘<”<€LØ‡K‚K� U€KÑ+Ô+Ð+à×Ò˜eÑ$Ô$ð A¨¬¸Ò)AÐ)Að 	ˆ�V—_’_Ñ&Ô&¨×(=Ò(=Ñ(?Ô(?Ñ@Ô@Ð@Ð@Ð@ðAð AÐ)AÐ)As   ÄD+Ä+D/Ä2D/rO   rk   Útoolbar2rj   r"   )Úrerunsc                 óÂ  — | d         dk    r|dk    rt          j        d¦  «         | d         dk    rt          j        d¦  «         	 t          t          t	          j        d|i¦  «        t          | ¬¦  «        }nE# t          j        $ r3}t          j	        d	t          |j        ¦  «        z   ¦  «         Y d }~nd }~ww xY w|j                             d
¦  «        dk    sJ ‚d S )Nr   r(   rj   z*toolmanager is not implemented for macosx.r&   ú2wx backend is deprecated; tests failed on appveyorrk   ©ÚtimeoutÚ	extra_envz,Subprocess failed to test intended behavior
Ú
CloseEventrv   )rG   rI   Ú_run_helperr¶   r˜   ÚdumpsÚ_test_timeoutÚ
subprocessÚCalledProcessErrorÚfailrL   ÚstderrÚstdoutÚcount)rO   rk   ÚprocÚerrs       r   Útest_interactive_backendrÊ   »   s  € ð ˆ<Ô˜HÒ$Ð$Ø�mÒ#Ð#ÝŒKÐDÑEÔEÐEØ
ˆ<Ô˜DÒ Ð ÝŒÐHÑIÔIÐIð
#ÝÝ&Ý”
˜I wÐ/Ñ0Ô0Ý%Øð	ñ ô ˆˆøõ Ô(ð #ð #ð #ÝŒØ?Ý�c”j‘/”/ñ"ñ	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøøð#øøøð Œ;×Ò˜\Ñ*Ô*¨aÒ/Ð/Ð/Ð/Ð/Ð/s   Á1A: Á:B<Â	)B7Â7B<c                  ó¨  — ddl m}  dd l}ddlm} |j                             dddœ¦  «         |                     ¦   «         \  }}|                     d¦  «          | ¦   «                              |j	        g d¢¦  «        }| 
                    ¦   «          |j                             d	t          ¦  «          | ¦   «                              |j        j        ¦  «        }|                     d¦  «         | 
                    ¦   «          |                     ¦   «          |j        d
                              d¦  «        r|j                             ¦   «          d S d S )Nr   )ÚThreadPoolExecutorrs   Frv   rw   r”   )rv   r"   é   r’   rx   ÚWX)Úconcurrent.futuresrÌ   rš   rt   rœ   r�   r¥   r°   Úsubmitr¦   r´   rh   r«   r¬   ÚdrawÚcloserB   Úflush_events)rÌ   rƒ   r„   rm   r³   Úfutures         r   Ú_test_thread_implrÕ   Ò   sQ  € Ø5Ð5Ð5Ð5Ð5Ð5àÐÐÐØ(Ð(Ð(Ð(Ð(Ð(à„L×ÒØ"'Ø ðð ñ ô ð ð �lŠl‰nŒn�G€Cˆà‡I‚Iˆc�N„N€NàÐÑ!Ô!×(Ò(¨¬°)°)°)Ñ<Ô<€FØ
‡M‚M�O„O€Oà„J×Ò˜=­%Ñ0Ô0Ð0ØÐÑ!Ô!×(Ò(¨¬¬Ñ9Ô9€FØ‡I‚Iˆc�N„N€NØ
‡M‚M�O„O€OØ‡I‚I�K„K€KØ
„|�IÔ×)Ò)¨$Ñ/Ô/ð "àŒ
×ÒÑ!Ô!Ð!Ð!Ð!ð"ð "r   r   r   )Úraisesr&   r(   )Úparsez10.16T)rÖ   Ústrictr   r   r%   ÚCPythonzZPyPy does not support Tkinter threading: https://foss.heptapod.net/pypy/pypy/-/issues/1929)r4   rØ   c                 ó~   — t          t          t          | ¬¦  «        }|j                             d¦  «        dk    sJ ‚d S )Nr»   r¾   rv   )r¿   rÕ   rÁ   rÆ   rÇ   ©rO   rÈ   s     r   Útest_interactive_thread_safetyrÜ     s@   € õ Õ(µ-È3ÐOÑOÔO€DØŒ;×Ò˜\Ñ*Ô*¨aÒ/Ð/Ð/Ð/Ð/Ð/r   c                  ó,  — dd l } dd lm} | j                             d¦  «        }t          |t          ¦  «        rJ ‚|j        �J ‚|                     d¦  «         |j        €J ‚| j                             d¦  «        }t          |t          ¦  «        sJ ‚d S )Nr   rx   é   )	rš   Úmatplotlib.pyplotrt   rœ   Ú_getÚ
isinstancerL   Ú_backend_modr¦   )rš   r„   Úbks      r   Ú&_impl_test_lazy_auto_backend_selectionrä     s«   € ØÐÐÐØ#Ð#Ð#Ð#Ð#Ð#à	Ô	×	!Ò	! )Ñ	,Ô	,€BÝ˜"�cÑ"Ô"Ð"Ð"Ð"ØÔÐ#Ð#Ð#à‡H‚HˆQ�K„K€KØÔÐ'Ð'Ð'Ø	Ô	×	!Ò	! )Ñ	,Ô	,€BÝ�b�#ÑÔÐÐÐÐÐr   c                  ó<   — t          t          t          ¬¦  «         d S ©N©r¼   )r¿   rä   rÁ   r   r   r   Ú test_lazy_auto_backend_selectionrè   %  s)   € ÝÕ6Ý%ð'ñ 'ô 'ð 'ð 'ð 'r   c                  óü   — dd l } dd l}d|j        vsJ ‚d|j        vsJ ‚d|j        v sd|j        v sJ ‚dd l} t	          j        t          d¬¦  «        5  | j        j        j	         d d d ¦  «         d S # 1 swxY w Y   d S ©Nr   r   Úpyside6r   Úpyside2úQtWidgets.QApplication.instance©Úmatch)
Ú"matplotlib.backends.backend_qt5aggr:   ÚmodulesÚmatplotlib.backends.backend_qt5rG   ÚwarnsÚDeprecationWarningÚbackendsÚbackend_qt5ÚqApp©rš   r:   s     r   Ú_implqt5aggrù   *  sø   € Ø-Ð-Ð-Ð-Ø€J€J€Jà˜#œ+Ð%Ð%Ð%Ð%Ø˜CœKÐ'Ð'Ð'Ð'Ø�c”kÐ!Ð! Y°#´+Ð%=Ð%=Ð%=Ð%=à*Ð*Ð*Ð*Ý	ŒÕ(Ø=ð
?ñ 
?ô 
?ð -ð -àÔÔ'Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -ó   ÁA1Á1A5Á8A5c                  óü   — dd l } dd l}d|j        vsJ ‚d|j        vsJ ‚d|j        v sd|j        v sJ ‚dd l} t	          j        t          d¬¦  «        5  | j        j        j	         d d d ¦  «         d S # 1 swxY w Y   d S rê   )
Ú$matplotlib.backends.backend_qt5cairor:   rñ   rò   rG   ró   rô   rõ   rö   r÷   rø   s     r   Ú
_implcairorý   8  sø   € Ø/Ð/Ð/Ð/Ø€J€J€Jà˜#œ+Ð%Ð%Ð%Ð%Ø˜CœKÐ'Ð'Ð'Ð'Ø�c”kÐ!Ð! Y°#´+Ð%=Ð%=Ð%=Ð%=à*Ð*Ð*Ð*Ý	ŒÕ(Ø=ð
?ñ 
?ô 
?ð -ð -àÔÔ'Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -rú   c                  óô   — dd l } dd l}d|j        vsJ ‚d|j        vsJ ‚d|j        v sd|j        v sJ ‚t          j        t
          d¬¦  «        5  | j        j        j         d d d ¦  «         d S # 1 swxY w Y   d S rê   )	rò   r:   rñ   rG   ró   rô   rõ   rö   r÷   rø   s     r   Ú	_implcorerÿ   F  sì   € Ø*Ð*Ð*Ð*Ø€J€J€Jà˜#œ+Ð%Ð%Ð%Ð%Ø˜CœKÐ'Ð'Ð'Ð'Ø�c”kÐ!Ð! Y°#´+Ð%=Ð%=Ð%=Ð%=å	ŒÕ(Ø=ð
?ñ 
?ô 
?ð -ð -àÔÔ'Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   ÁA-Á-A1Á4A1c                  óŠ  — d„ dD ¦   «         } d„ dD ¦   «         }t          | ¦  «        dk    st          |¦  «        dk    rt          j        d¦  «         t          t          t
          ¬¦  «         t          j                             d¦  «        �t          t          t
          ¬¦  «         t          t          t
          ¬¦  «         d S )	Nc                 óP   — g | ]#}t           j                             |¦  «        ®!|‘Œ$S r�   r*   r.   s     r   r   z-test_qt5backends_uses_qt5.<locals>.<listcomp>T  ó8   € ð ð ð ØÝŒ>×#Ò# CÑ(Ô(Ð4ð 	Ø4Ð4Ð4r   )r   rì   c                 óP   — g | ]#}t           j                             |¦  «        ®!|‘Œ$S r�   r*   r.   s     r   r   z-test_qt5backends_uses_qt5.<locals>.<listcomp>X  r  r   )r   rë   r   úneed both QT6 and QT5 bindingsrç   Úpycairo)ÚlenrG   rI   r¿   rù   rÁ   r+   r,   r-   rý   rÿ   )Úqt5_bindingsÚqt6_bindingss     r   Útest_qt5backends_uses_qt5r	  S  sË   € ðð Ø+ðñ ô €Lðð Ø+ðñ ô €Lõ ˆ<ÑÔ˜AÒÐ¥ \Ñ!2Ô!2°aÒ!7Ð!7ÝŒÐ4Ñ5Ô5Ð5Ý•¥]Ð3Ñ3Ô3Ð3Ý„~×Ò 	Ñ*Ô*Ð6Ý•J­Ð6Ñ6Ô6Ð6Ý•	¥=Ð1Ñ1Ô1Ð1Ð1Ð1r   c                  óv  — dd l } dd l}dd l}| j        \  }}} |j        |› d�¦  «          |j        |› d�¦  «        }dd l} |j        |› d�¦  «        }|                     dg¦  «        }	 |j        t          d¬¦  «        5  |j	        j
                             ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nr   z.QtCorez
.QtWidgetszmpl testingzMixing Qt majorrî   )r:   r+   rG   rŸ   Úimport_moduleÚmatplotlib.backends.backend_qtÚQApplicationró   ÚUserWarningrõ   Ú
backend_qtÚ_create_qApp)
r:   r+   rG   Ú_Úhost_bindingÚmpl_bindingÚmpl_binding_qwidgetsrš   Úhost_qwidgetsÚhost_apps
             r   Ú_impl_test_cross_Qt_importsr  d  s6  € Ø€J€J€JØÐÐÐØ€M€M€Mà#&¤8Ñ €A€|�[à€IÔ˜{Ð3Ð3Ð3Ñ4Ô4Ð4Ø2˜9Ô2°kÐ3MÐ3MÐ3MÑNÔNÐØ)Ð)Ð)Ð)Ø+�IÔ+¨|Ð,GÐ,GÐ,GÑHÔH€Mà×)Ò)¨=¨/Ñ:Ô:€HØ	ˆŒ•kÐ):Ð	;Ñ	;Ô	;ð 6ð 6ØÔÔ&×3Ò3Ñ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6ð 6ð 6s   ÂB.Â.B2Â5B2c                  ó¦  — d„ dD ¦   «         } d„ dD ¦   «         }t          | ¦  «        dk    st          |¦  «        dk    rt          j        d¦  «         | D ]{}|D ]v}||g||gfD ]k}	 t          t          g|¢R dt
          iŽ Œ# t          j        $ r<}|j        t          j
         k    rY d }~ŒH|j        t          j         k    rY d }~Œc‚ d }~ww xY wŒwŒ|d S )Nc                 óP   — g | ]#}t           j                             |¦  «        ®!|‘Œ$S r�   r*   r.   s     r   r   z)test_cross_Qt_imports.<locals>.<listcomp>v  r  r   )r   r   c                 óP   — g | ]#}t           j                             |¦  «        ®!|‘Œ$S r�   r*   r.   s     r   r   z)test_cross_Qt_imports.<locals>.<listcomp>z  r  r   )r   r   r   r  r¼   )r  rG   rI   r¿   r  rÁ   rÂ   rÃ   Ú
returncodeÚsignalÚSIGSEGVÚSIGABRT)r  r  r•   Úqt6ÚpairÚexs         r   Útest_cross_Qt_importsr"  u  s`  € ðð Ø+ðñ ô €Lðð Ø+ðñ ô €Lõ ˆ<ÑÔ˜AÒÐ¥ \Ñ!2Ô!2°aÒ!7Ð!7ÝŒÐ4Ñ5Ô5Ð5àð ð ˆØð 	ð 	ˆCØ˜s˜ c¨3 ZÐ0ð ð �ðÝÕ ;ð 7Ø!%ð7ð 7ð 7å(5ð7ð 7ð 7ð 7øõ "Ô4ð 	ð 	ð 	ð ”}­¬¨Ò7Ð7Ø ˜˜˜˜ð œ­6¬>¨/Ò9Ð9Ø ˜˜˜˜Øøøøøð	øøøðð	ðð s$   Á&BÂC	ÂC	Â+C	ÃC	ÃC	r1   z,this test fails an azure for unknown reasonsr3   ÚntzCannot send SIGINT on Windows.c                  ó  — t          j        d¦  «         t          j        t          j        dt          j        t          ¦  «        dz   dgi t          j
        ¥dddœ¥¬¦  «        } d	                     t          j        d
         t          j        d         ¦  «        }t          j        ¦   «         t           z   }	 	 |                      ¦   «         }|�J ‚t$          j                             |¦  «        }nI# t$          j        j        $ r1 t          j        ¦   «         |k    rt          j        d¦  «         nY Œ|Y nw xY wŒ‚|                     ¦   «          |                      t4          j        ¦  «         |                      t           ¬¦  «        dk    sJ ‚d S )NÚtornadoz-cz
_test_interactive_impl()z{}ÚwebaggÚ0)r   ÚSOURCE_DATE_EPOCH)rO   zhttp://{}:{}zwebagg.addresszwebagg.portTz'Failed to connect to the webagg server.rç   r   )rG   ÚimportorskiprÂ   ÚPopenr:   Ú
executableÚinspectÚ	getsourcer¶   r?   r@   r=   rƒ   rœ   ÚtimeÚperf_counterrÁ   ÚpollÚurllibÚrequestÚurlopenÚerrorÚURLErrorrÄ   rÒ   Úsend_signalr  ÚSIGINTÚwait)rÈ   Úurlr¼   ÚretcodeÚconns        r   Útest_webaggr<  ”  sŒ  € õ Ô˜	Ñ"Ô"Ð"ÝÔÝ	Œ˜Ý	Ô	Õ1Ñ	2Ô	2Ø'ñ
(Ø)-ð	/ð M�rŒzÐL¨ÈÐLÐLÐLð	Nñ Nô N€Dð
 ×
Ò
ÝŒÐ%Ô&­¬°]Ô(CñEô E€CåÔÑ!Ô!¥MÑ1€Gðð
	Ø—i’i‘k”kˆGà�?�?�?Ý”>×)Ò)¨#Ñ.Ô.ˆDØøÝŒ|Ô$ð 	ð 	ð 	ÝÔ Ñ"Ô" WÒ,Ð,Ý”ÐEÑFÔFÐFÐFà�ð GÐFð	øøøðð 	‡J‚J�L„L€LØ×Ò•V”]Ñ#Ô#Ð#Ø�9Š9�]ˆ9Ñ+Ô+¨qÒ0Ð0Ð0Ð0Ð0Ð0s   Â77C/ Ã/A D4Ä3D4c                  ó  — dd l } dd l}|j        dd …         \  }}|                     d¦  «        }| j                             dd ¦  «         | j                             dd ¦  «         |D ]}||j        vsJ ‚Œdd lm} | 	                    ¦   «         dk    sJ ‚|D ]}||j        vsJ ‚Œ|D ]!}t          j        |¦  «         ||j        v sJ ‚Œ"	 |                     |¦  «          |j        d¦  «         d S # t          $ r Y d S w xY w)Nr   rv   r7   ÚDISPLAYÚWAYLAND_DISPLAYr   )r?   r:   rŸ   Úsplitr@   Úpoprñ   rß   rt   Úget_backendr+   r  Úswitch_backendÚexitr¤   )r?   r:   rx   rN   r/   r„   s         r   Ú_lazy_headlessrE  ²  sh  € Ø€I€I€IØ€J€J€Jà”H˜Q˜R˜R”L�M€GˆTØ�:Š:�c‰?Œ?€Dð „J‡N‚N�9˜dÑ#Ô#Ð#Ø„J‡N‚NÐ$ dÑ+Ô+Ð+Øð &ð &ˆØ˜#œ+Ð%Ð%Ð%Ð%Ð%ð $Ð#Ð#Ð#Ð#Ð#Ø�?Š?ÑÔ Ò%Ð%Ð%Ð%Øð &ð &ˆØ˜#œ+Ð%Ð%Ð%Ð%Ð%ð ð "ð "ˆÝÔ Ñ$Ô$Ð$Ø�c”kÐ!Ð!Ð!Ð!Ð!ðØ×Ò˜7Ñ#Ô#Ð#ð 	ˆŒ�‰Œˆˆˆøõ ð ð ð Øˆˆðøøøs   ÃC2 Ã2
D Ã?D r0   zthis a linux-only testc           
      óœ   — t          t          |                      d¦  «        |                      d¦  «        t          i | ¥dddœ¥¬¦  «        }d S )Nr   r6   rY   )r>  r?  r»   )r¿   rE  rA  rÁ   rÛ   s     r   Útest_lazy_linux_headlessrG  Ó  sT   € õ ÝØ�Š�ÑÔ˜sŸwšw ~Ñ6Ô6ÝØ?�SÐ? R¸BÐ?Ð?Ð?ð	ñ ô €D€D€Dr   c                  ó˜   — dd l } dd l} |j        t          d¬¦  «        5  | j        j        j         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rí   rî   )r  rG   ró   rô   rõ   r  r÷   )rš   rG   s     r   Ú_qApp_warn_implrI  Þ  s¬   € Ø)Ð)Ð)Ð)Ø€M€M€Mà	ˆŒÝÐ&Gð
Iñ 
Iô 
Ið ,ð ,àÔÔ&Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s    ?¿AÁAÚQtAgg)Úskip_on_importerrorc                  ó<   — t          t          t          ¬¦  «         d S ræ   )r¿   rI  rÁ   r   r   r   Útest_qApp_warnrM  ç  s   € å•­Ð7Ñ7Ô7Ð7Ð7Ð7r   c                  ó  — dd l m}  |                      ¦   «         \  }}|                     ddgddgd¬¦  «        \  }|                      d¬¦  «         |                      d¦  «         |j                             d	t          ¦  «         |j         	                    |j
        ¦  «        }|                     |¦  «         |j                             |j
        ¦  «         t          d
¦  «        D ]…}|j                             |¦  «         |                     ddgddg¦  «        \  }|                     |¦  «         |j                             |j
        ¦  «         |j                             ¦   «          Œ†|                      d¦  «         d S )Nr   rv   rˆ   T)ÚanimatedF)Úblockg333333Ó?r‹   é
   çš™™™™™¹?)rß   rt   r¥   r¦   r¯   r°   rh   r«   r¬   Úcopy_from_bboxÚbboxÚdraw_artistÚblitÚrangeÚrestore_regionrÓ   )r„   rm   r³   ÚlnÚbgÚjs         r   Ú_test_number_of_draws_scriptr\  ì  sd  € Ø#Ð#Ð#Ð#Ð#Ð#à�lŠl‰nŒn�G€Cˆð �'Š'�1�a�&˜1˜a˜&¨4ˆ'Ñ
0Ô
0�C€Bð ‡H‚H�5€HÑÔÐØ‡I‚Iˆc�N„N€Nà„J×Ò˜<­Ñ/Ô/Ð/ð 
Œ×	"Ò	" 3¤8Ñ	,Ô	,€Bà‡N‚N�2ÑÔÐà„J‡O‚O�C”HÑÔÐå�2‰YŒYð "ð "ˆàŒ
×!Ò! "Ñ%Ô%Ð%ð �gŠg�q˜!�f˜q !˜fÑ%Ô%‰ˆà
�Š�rÑÔÐàŒ
�Š˜œÑ!Ô!Ð!àŒ
×ÒÑ!Ô!Ð!Ð!ð ‡I‚Iˆc�N„N€N€N€Nr   Ú	gtk3cairoz#gtk3cairo does not support blittingÚ	gtk4cairoz#gtk4cairo does not support blittingzwx does not support blittingr#   c                 ó”   — t          t          t          | ¬¦  «        }|j                             d¦  «        }d|cxk     rdk     sn J ‚d S )Nr»   Ú	DrawEventr   rÞ   )r¿   r\  rÁ   rÆ   rÇ   )rO   rÈ   Úndrawss      r   Útest_blitting_eventsrb  %  sX   € õ Ý$­mÀsðLñ Lô L€Dð Œ[×Ò˜{Ñ+Ô+€FØˆvˆ>ˆ>Š>ˆ>˜Š>ˆ>ˆ>ˆ>ˆ>ˆ>ˆ>ˆ>r   c                  ó¦  — dd l } dd l}dd l}ddlm} t          |j        d         ¦  «        }|                     ¦   «         }t          d¦  «        D ]B}| 	                    ¦   «         }|r| 
                    |¦  «         |                     |¦  «         ŒC|                     ¦   «         j        }|                      ¦   «          t          d¦  «        D ]V}| 	                    ¦   «         }|r| 
                    |¦  «         |                     |¦  «         |                      ¦   «          ŒW|                     ¦   «         j        |z
  }	t          |	¦  «         d S )Nr   rs   rv   rˆ   rÞ   )Úgcr:   Úpsutilrš   rt   ÚfloatrŸ   ÚProcessrW  r   r°   rÒ   Úmemory_infoÚrssÚcollectr¬   )
rd  r:   re  r„   ÚtÚpr  rm   ÚmemÚgrowths
             r   Ú_test_figure_leakro  5  s5  € Ø€I€I€IØ€J€J€Jà€M€M€MØ(Ð(Ð(Ð(Ð(Ð(åˆcŒh�qŒkÑÔ€AØ�ŠÑÔ€Aõ �1‰XŒXð ð ˆØ�jŠj‰lŒlˆØð 	Ø�IŠI�a‰LŒLˆLØ�	Š	�#‰ŒˆˆØ
�-Š-‰/Œ/Ô
€CØ‡J‚J�L„L€Lå�1‰XŒXð ð ˆØ�jŠj‰lŒlˆØð 	Ø�IŠI�a‰LŒLˆLØ�	Š	�#‰ŒˆØ
�
Š
‰ŒˆˆØ�]Š]‰_Œ_Ô  3Ñ&€Få	ˆ&�M„M€M€M€Mr   Úwin32z0appveyor tests fail; gh-22988 suggests reworkingÚtime_mem)g        i€„ )rR  i€ÃÉc                 ób  — t          j        dd¬¦  «         |\  }}| d         dk    rt          j        d¦  «         | d         dk    s| d         dk    rt          j        d	k    r|d
z  }t          t          t          |¦  «        t          | ¬¦  «        }t          |j
        ¦  «        }||k    sJ ‚d S )Nre  zpsutil needed to run this testr3   r   r&   rº   r(   r%   r5   iÀØ§ r»   )rG   r)  rI   r:   r;   r¿   ro  rL   rÁ   ÚintrÆ   )rO   rq  Ú
pause_timeÚacceptable_memory_leakager´   rn  s         r   Útest_figure_leak_20490rv  T  sÍ   € õ
 Ô˜Ð)IÐJÑJÔJÐJð -5Ñ)€JÐ)Ø
ˆ<Ô˜DÒ Ð ÝŒÐHÑIÔIÐIà
ˆ<Ô˜HÒ$Ð$Ø�Ô Ò(Ð(­S¬\¸XÒ-EÐ-Eà! ZÑ/Ð!åÝ�3˜z™?œ?Ý¨ð.ñ .ô .€Fõ �”ÑÔ€FØÐ.Ò.Ð.Ð.Ð.Ð.Ð.r   )Fr+   r–   r,  r˜   r?   r;   r  rÂ   r:   rc   r.  Úurllib.requestr1  ÚPILr   rG   rš   rƒ   r   Úmatplotlib.backend_toolsr   Úmatplotlib.testingr   r¿   rR   rÁ   rp   r¶   rH   ÚparametrizeÚflakyrÊ   rÕ   Ú_thread_safe_backendsrK   Úvaluesrx   r8   rF   rJ   rÃ   Úpackaging.versionr×   Úmac_verÚTimeoutExpiredrA   Úpython_implementationrÜ   rä   rè   rù   rý   rÿ   r	  r  r"  Úskipifr@   Únamer<  rE  rG  rI  rM  r\  Ú_blit_backendsrI   rb  ro  rv  r   r   r   ú<module>r†     s‚  ðØ Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð à Ð Ð Ð Ð Ð à €€€à Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø CÐ CÐ CÐ CÐ CÐ Cð,ð ,ð ,ð^ €ð*ð *ð *ð.SAð SAð SAðl „×Ò˜Ð BÐ BÑ DÔ DÑEÔEØ„×Ò˜ Z°Ð$?Ñ@Ô@Ø„×Ò˜!ÐÑÔð0ð 0ñ Ôñ AÔ@ñ FÔEð0ð("ð "ð "ð< ;Ð:Ñ<Ô<Ð à"ð ñ €EØŒl˜1Œo˜lÔ+€GØ�'ÐÐð 	Œ×ÒØŒK×Ò ZÔ%BÐÑCÔCñ	Eô 	Eð 	Eð 	Eà	�DŠˆØŒ×ÒØŒK×Ò ZÔ%BÐÑCÔCñ	Eô 	Eð 	Eð 	Eà	�HÒ	Ð	Ø+Ð+Ð+Ð+Ð+Ð+Ø"�(Ô"Ñ$Ô$ QÔ'ˆð ð 	0�u�u˜W‘~”~¨¨¨g©¬Ò6Ð6ØŒK×ÒØ”×!Ò!¨Ô)BØ)-ð "ñ /ô /ñ0ô 0ð 0ùð 
Œ�aŒ×	Ò	˜XÑ	&Ô	&¨)Ò	3Ð	3ØŒ×ÒØŒK×Ò ZÔ%BÐÑCÔCñ	Eô 	Eð 	Eñ 	Eà	�GÒ	Ð	Ð > Ô >Ñ @Ô @ÀIÒ MÐ MØŒ×ÒØŒK×ÒðKàð ñ ô ñ	ô 	ð 	ùð „×Ò˜Ð 5Ñ6Ô6Ø„×Ò˜!ÐÑÔð0ð 0ñ Ôñ 7Ô6ð0ð
ð ð ð'ð 'ð 'ð
-ð -ð -ð-ð -ð -ð
-ð 
-ð 
-ð2ð 2ð 2ð"6ð 6ð 6ð"ð ð ð> „×Ò�J "¤*Ð,ØIð ñ Kô Kà„×Ò�B”G˜t’OÐ,LÐÑMÔMð1ð 1ñ NÔMñKô Kð1ð6ð ð ðB „×Ò�C”L GÒ+Ð4LÐÑMÔMØ„×Ò˜Ð BÐ BÑ DÔ DÑEÔEðð ñ FÔEñ NÔMðð,ð ,ð ,ð „×Ò�W°$ÐÑ7Ô7ð8ð 8ñ 8Ô7ð8ð&ð &ð &ðR 4Ð3Ñ5Ô5€Øð >ð >€EØŒl˜1Œo˜lÔ+€GØ�+ÒÐàŒ×ÒØŒK×ÒÐBÑCÔCñ	Eô 	Eð 	Eð 	Eà	�KÒ	Ð	àŒ×ÒØŒK×ÒÐBÑCÔCñ	Eô 	Eð 	Eð 	Eà	�DŠˆØŒ×ÒØŒK×ÒÐ;Ñ<Ô<ñ	>ô 	>ð 	>øð „×Ò˜ Ñ/Ô/à„×Ò˜!ÐÑÔðð ñ Ôñ 0Ô/ððð ð ð> „×Ò�C”L GÒ+ØMð ñ Oô Oà„×Ò˜Ð BÐ BÑ DÔ DÑEÔEØ„×Ò˜Ð&6Ð8IÐ%JÑKÔKð/ð /ñ LÔKñ FÔEñOô Oð/ð /ð /r   