
    h\q              	          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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rS SKrS SKJr  S SKJr  S SKJrJr   " S S\R4                  5      r\ R8                  S 5       rS	 r\" 5       (       a  S
OSrS r S r!\RD                  RG                  S\" 5       5      \RD                  RG                  SSS/5      \RD                  RI                  SS9S 5       5       5       r%S r&\" 5       r'\' GHX  r(\(RR                  S    S   r*S\*;   a>  \(RV                  RY                  \RD                  R[                  \R\                  S95        MZ  \*S:X  a>  \(RV                  RY                  \RD                  R[                  \R\                  S95        M  \*S:X  ay  S SK/J0r0  \Rb                  " 5       S    r1\1(       aU  \0" \15      \0" S5      :  a@  \(RV                  RY                  \RD                  R[                  \Rd                  SS95        GM  GM  GM  \(RR                  S    Rg                  S5      S :X  a?  \(RV                  RY                  \RD                  R[                  \R\                  S95        GM~  \*S!:X  aK  \Rh                  " 5       S":w  a6  \(RV                  RY                  \RD                  R[                  S#SS$95        GM  \*S!:X  d  GM  S%\Rj                  ;   d  S&\Rj                  ;   d  GM  \	R                  S':X  d  GM  \	Rl                  SS( S):  d  GM$  \(RV                  RY                  \RD                  R[                  S*5      5        GM[     \RD                  RG                  S\'5      \RD                  RI                  SS9S+ 5       5       r7S, r8S- r9S. r:S/ r;S0 r<S1 r=S2 r>S3 r?S4 r@S5 rA\RD                  R                  \	R                  S6:H  =(       a    \R                  " 5       (       + S7S89\RD                  RG                  S9/ \A" 5       Q5      S: 5       5       rD\RD                  R                  S%\Rj                  ;   S;S89\RD                  R                  \	R                  S<:H  S=S89S> 5       5       rES? rF\RD                  R                  \	R                  S6:g  S@S89\RD                  RG                  S\" 5       5      SA 5       5       rGSB rH\" 5       rI\I GHQ  r(\(RR                  S    S   r*\*SC:X  a6  \(RV                  RY                  \RD                  R                  SD5      5        MR  \*SE:X  a6  \(RV                  RY                  \RD                  R                  SF5      5        M  \*S:X  a6  \(RV                  RY                  \RD                  R                  SG5      5        M  \*S!:X  d  M  S%\Rj                  ;   d  S&\Rj                  ;   d  M  \	R                  S':X  d  GM  \	Rl                  SS( S):  d  GM  \(RV                  RY                  \RD                  R[                  S*5      5        GMT     \RD                  RG                  S\I5      \RD                  RI                  SHS9SI 5       5       rKSJ rL\RD                  RG                  S\" 5       5      SK 5       rMSL rN\RD                  RG                  S\" 5       5      \RD                  RG                  SMSNSOS04SPSQSR04/5      SS 5       5       rOST rP\RD                  R                  \	R                  S<:H  SUS89\RD                  RG                  S\" 5       5      \RD                  RG                  SMSNSOS04SPSQSR04/5      SV 5       5       5       rQg)W    N)Image)_c_internal_utils)ToolToggleBase)subprocess_run_helperis_ci_environmentc                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )_WaitForStringPopen   zD
A Popen that passes flags that allow triggering KeyboardInterrupt.
c                    > [         R                  S:X  a  [        R                  US'   [        TU ]  " U0 UD0 [        R                  ESSS.E[        R                  SS.D6  g )Nwin32creationflagsAgg0
MPLBACKENDSOURCE_DATE_EPOCHT)envstdoutuniversal_newlines)	sysplatform
subprocessCREATE_NEW_CONSOLEsuper__init__osenvironPIPE)selfargskwargs	__class__s      \/var/www/html/env/lib/python3.13/site-packages/matplotlib/tests/test_backends_interactive.pyr   _WaitForStringPopen.__init__   s[    <<7"&0&C&CF?#	=	= N2::MUM??t		=    c                     Sn U R                   R                  S5      nU(       d  [        SU< 35      eX#-  nUR                  U5      (       a  gMN  )z%Read until the terminator is reached.    z)Subprocess died before emitting expected N)r   readRuntimeErrorendswith)r   
terminatorbufcs       r#   wait_for_WaitForStringPopen.wait_for'   sX      #A"?
~NP PHC||J'' r%    )	__name__
__module____qualname____firstlineno____doc__r   r/   __static_attributes____classcell__)r"   s   @r#   r	   r	      s    =
 
r%   r	   c                  
   [         R                  S:H  =(       a    [        R                  " 5       (       + n [         R                  S:H  =(       a    [        R                  " 5       (       + n/ n/ S Vs/ s H  nU/SUS.4PM     snQS Vs/ s H  nUS/SUS.4PM     snQS VVs/ s H  nS  H  nS	S
/SSU U 304PM     M     snnQS/SS04PS/SS04PS/SS04PS/SS04P GHp  u  pgS nU V	s/ s H+  n	[
        R                  R                  U	5      (       a  M)  U	PM-     n
n	U
(       a!  SR                  SR                  U
5      5      nOU(       a%  US   S:X  d  US   R                  S5      (       a  SnOU (       a  SnOUS   S:X  a'  [        R                  R                  S5      (       a  SnO\US   R                  S5      (       aC   SS KnUR                  R!                  5       nUR#                  S5      nUS   S   nU S3U;  a  Sn/ nU(       a3  UR'                  [(        R*                  R-                  SU SU 3S 95        OUS   R                  S5      (       aA  [         R                  S!:X  a-  UR'                  [(        R*                  R/                  S"S 95        OUS   S:X  a  S[        R                  ;   d  S#[        R                  ;   aW  [         R                  S!:X  aC  [         R0                  S S$ S%:  a,  UR'                  [(        R*                  R/                  S&S 95        UR'                  0 UES'S(R                  U5      0EU45        GMs     U$ s  snf s  snf s  snnf s  sn	f ! [$         a    / n GNf = f))Nlinux)PyQt6PySide6PyQt5PySide2qtagg)r   QT_API	cairocffiqtcairo)      )aggcairorF   gir   gtktkintertkaggwxwxaggzmatplotlib.backends._macosxmacosxz{} cannot be imported, z$DISPLAY is unset'$DISPLAY and $WAYLAND_DISPLAY are unsetTF_BUILDzmacosx backend fails on Azurer   GtkrC   z.0zno usable GTK bindingsz	Skipping z	 because reasondarwinzgithub #16849GITHUB_ACTION   rC      %Tk version mismatch on Azure macOS CIBACKEND_DEPS,)r   r   r   display_is_validxdisplay_is_valid	importlibutil	find_specformatjoin
startswithr   r   getrG   
Repositoryget_defaultenumerate_versionsImportErrorappendpytestmarkskipxfailversion_info)_is_linux_and_display_invalid_is_linux_and_xdisplay_invalidenvsqt_apiversionrendererdepsr   rS   depmissingrG   gi_repoavailable_gtk_versionsmarkss                  r#   #_get_available_interactive_backendsr{   8   s   %(\\W%< &N):)K)K)M%M "&)llg&= 'P*;*M*M*O&O #D EFD& x%8:DF EFD& $'6:<DF	 $F#'4D WIhZ/H IJ4D K#F [<12 VlD)* VlG,- ,,|X.FG	 "&L$3inn.F.Fs.K3$L,33DIIg4FGF+L!W,|$//55(F*>F(*rzz~~j/I/I4F))%00	K --335)0)C)CE)J&,'*G"~%;;1LL))9SE6(1S)TU))$//CLLH4LLL**/*BC,7*RZZ'?bjj+Hllh&r"W,LL!!)P!QS<<^SXXd^<eDEmn KmFFF M  , *,&	,s0   0M	M"$!M'2(M-M-M22NNc                      [        5        V Vs/ s HC  u  p[        R                  " 0 U E/ UQSR                  S U R	                  5        5       5      S9PME     snn $ s  snn f )N-c              3   4   #    U  H  u  pU S U 3v   M     g7f)=Nr1   ).0kvs      r#   	<genexpr>5_get_testable_interactive_backends.<locals>.<genexpr>|   s     $HKDAs!A3ZKs   )rz   id)r{   rj   paramrb   items)r   rz   s     r#   "_get_testable_interactive_backendsr   y   sa     BCEC
 LLC%HH$HCIIK$HHJCE E Es   A
Ax      c                   ^ [         R                  " 5        n[        R                  " SS5      n[        R
                  R                  US5      mUR                  T5         " U4S jS[        5      nU R                  R                  R                  nU R                  R                  R                  nUR                  SU5        UR                  SS5        S S S 5        g ! , (       d  f       g = f)NLA)   r   ztest_la_icon.pngc                       > \ rS rSr Y rSrSrg)5_test_toolbar_button_la_mode_icon.<locals>.CustomTool   r'   r1   N)r2   r3   r4   r5   imagedescriptionr7   )tmp_img_paths   r#   
CustomToolr      s     EKr%   r   testgroup)tempfileTemporaryDirectoryr   newr   pathrb   saver   canvasmanagertoolmanagertoolbaradd_tool)figtempdirimgr   r   r   r   s         @r#   !_test_toolbar_button_la_mode_iconr      s     
	$	$	&'iih'ww||G-?@	 	 jj((44**$$,,VZ0) 
'	&	&s   B?C
C-c                    ^^^ SS K n SS KnSS KnSS KnSS KnSS KmSSKJm  SSKJn  TR                  R                  SSS.5        TR                  R                  UR                  " UR                  S   5      5        TR                  S   R                  5       nUR                  S5      (       a  UR                  S	5      (       d  TR!                  5       nTR#                  U5        US
:w  a0  UR$                  " [&        5         TR(                  " S
SS9  S S S 5        UU4S jnU R*                  R-                  S5      (       a  U" US S S-   5        U" S5        TR(                  " USS9  TR/                  5       u  py[1        UR2                  5      R4                  SU 3:X  d   eUR2                  R6                  R9                  5       S:X  d   eTR                  S   S:X  a  [;        U5        U	R=                  SS/SS/5        UR2                  R>                  (       a)  UR2                  R>                  RA                  S SSSS5        UR2                  RC                  S5      mTRE                  U" SUR2                  S5      RF                  5        UR2                  RI                  SU4S j5        UR2                  RI                  S[J        5        URM                  5       n
URO                  U
SS 9  TRQ                  5         TRS                  S!5        URM                  5       nURO                  USS 9  U
RU                  5       URU                  5       :X  d   eg ! , (       d  f       GNG= f)"Nr   pyplot)KeyEventFr(   zwebagg.open_in_browserzwebagg.port_retriesbackendrE   )rH   webrJ   Tforcec                    > TR                   " U SS9  TR                  5       n[        UR                  5      R                  SU  3:X  d   eTR                  S5        g )NTr   matplotlib.backends.backend_all)usefiguretyper   r3   close)alt_backendr   mplplts     r#   check_alt_backend1_test_interactive_impl.<locals>.check_alt_backend   sV    GGKt,**,C$//2;-@A B AIIer%   rA   rF   svgr   zFigure 1r   r   rV   rC   g      ?g       @key_press_eventq
draw_eventc                 $   > TR                  5       $ Nstart)eventtimers    r#   <lambda>(_test_interactive_impl.<locals>.<lambda>   s    u{{}r%   close_eventpng)ra         ?)+importlib.utiliojsonr   rj   
matplotlibr   matplotlib.backend_basesr   rcParamsupdateloadsargvlowerr+   rc   r   r   raisesrh   r   r_   r`   subplotsr   r   r3   r   get_window_titler   plotr   draw_rubberband	new_timeradd_callback_processmpl_connectprintBytesIOsavefigshowpausegetvalue)r^   r   r   r   rj   r   r   r   r   axresultresult_afterr   r   r   s               @@@r#   _test_interactive_implr      s   (1LL"'  
 LL

388A;/0ll9%++-Gw'9'9.'I'Ijjl		# g{+t, ,	 >>##K00gcrlW45% GGG4 llnGC

&&,H	*RRRR::..0J>>>
||I-/)#.GGQFQF
zz

**4QA>JJ  $E	x 13::sCLLMJJ<)DEJJ=%0ZZ\FKKuK%HHJ IIcN ::<LKKUK+?? 5 5 7777_ ,+s   M
M%r   r   toolbar2r   rC   )rerunsc                    U S   S:X  a  US:X  a  [         R                  " S5        U S   S:X  a  [         R                  " S5        U S   S:X  a  US:X  a  [         R                  " S5         [        [        [        R
                  " S	U05      [        U S
9nWR                  R                  S5      S:X  d   eg ! [        R                   a6  n[         R                  " S[        UR                  5      -   5         S nANgS nAff = f)Nr   rM   r   z*toolmanager is not implemented for macosx.rK   2wx backend is deprecated; tests failed on appveyorrL   zMTemporarily deactivated: show() changes figure height and thus fails the testr   timeout	extra_envz,Subprocess failed to test intended behavior

CloseEventr(   )rj   rl   _run_helperr   r   dumps_test_timeoutr   CalledProcessErrorfailstrstderrr   count)r   r   procerrs       r#   test_interactive_backendr      s     <H$m#KKDE
<D HI
<G#=(@ . 	/
"JJ	7+,!	
 ;;\*a///	 (( ;#**o	 	s   +*B7 7D,C<<Dc                     SSK Jn   SS KnSSKJn  UR                  R                  SSS.5        UR                  5       u  p4UR                  S5        U " 5       R                  UR                  / SQ5      nUR                  5         UR                  R                  S	[        5        U " 5       R                  UR                  R                  5      nUR                  S5        UR                  5         UR                  5         UR                  S
   R!                  5       R#                  S5      (       a  UR                  R%                  5         g g )Nr   )ThreadPoolExecutorr   Fr(   r   r   )r(   rC      r   r   rK   )concurrent.futuresr   r   r   r   r   r   r   submitr   r   r   r   r   drawr   r   rc   flush_events)r   r   r   r   r   futures         r#   _test_thread_implr    s    5(LL"'   llnGCIIcN!(()<F
MMOJJ=%0!((9FIIcN
MMOIIK
||I$$&11$77

! 8r%   r   rF   )r   rK   rM   )parsez10.16T)r   strictr@   r>   rJ   CPythonzZPyPy does not support Tkinter threading: https://foss.heptapod.net/pypy/pypy/-/issues/1929)rS   r  rP   rU   rT   rV   rW   rY   c                 l    [        [        [        U S9nUR                  R	                  S5      S:X  d   eg )Nr   r   r(   )r   r  r   r   r   r   r   s     r#   test_interactive_thread_safetyr  K  s0     (-3OD;;\*a///r%   c                  >   SS K n SS KJn  U R                  R	                  S5      n[        U[        5      (       a   eUR                  b   eUR                  S5        UR                  c   eU R                  R	                  S5      n[        U[        5      (       d   eg )Nr   r      )	r   matplotlib.pyplotr   r   _get
isinstancer   _backend_modr   )r   r   bks      r#   &_impl_test_lazy_auto_backend_selectionr  R  s    #				!	!)	,B"c""""###HHQK'''				!	!)	,Bb#r%   c                  (    [        [        [        S9  g Nr   )r   r  r   r1   r%   r#    test_lazy_auto_backend_selectionr  `  s    6%'r%   c                      SS K n SS KnSUR                  ;  d   eSUR                  ;  d   eSUR                  ;   d  SUR                  ;   d   eg g Nr   r;   pyside6r=   pyside2)"matplotlib.backends.backend_qt5aggr   modulesr   r   s     r#   _implqt5aggr  e  sO    -#++%%%CKK'''ckk!Y#++%===%=!r%   c                      SS K n SS KnSUR                  ;  d   eSUR                  ;  d   eSUR                  ;   d  SUR                  ;   d   eg g r  )$matplotlib.backends.backend_qt5cairor   r  r  s     r#   
_implcairor  n  sO    /#++%%%CKK'''ckk!Y#++%===%=!r%   c                      SS K n SS KnSUR                  ;  d   eSUR                  ;  d   eSUR                  ;   d  SUR                  ;   d   eg g r  )matplotlib.backends.backend_qt5r   r  r  s     r#   	_implcorer"  w  sO    *#++%%%CKK'''ckk!Y#++%===%=!r%   c                     S V s/ s H'  n [         R                  R                  U 5      c  M%  U PM)     nn S V s/ s H'  n [         R                  R                  U 5      c  M%  U PM)     nn [        U5      S:X  d  [        U5      S:X  a  [        R
                  " S5        [        [        [        S9  [         R                  R                  S5      b  [        [        [        S9  [        [        [        S9  g s  sn f s  sn f )N)r=   r  )r;   r  r   need both QT6 and QT5 bindingsr  pycairo)r^   r_   r`   lenrj   rl   r   r  r   r  r"  )rv   qt5_bindingsqt6_bindingss      r#   test_qt5backends_uses_qt5r)    s    ++>>##C( 	+  
 ,+>>##C( 	+   <A\!2a!745]3~~	*6J6	=1s   $C4C4$C9!C9c                     SS K n S U R                  S'   S U R                  S'   S U R                  S'   S U R                  S'   SS KJn  [        R
                  " [        SS9   UR                  S5        S S S 5        [        R
                  " [        S	S9   UR                  S
5        S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)Nr   r;   r=   r>   r<   z(Failed to import any of the following Qt)matchr?   z^(?:(?!(PySide6|PyQt6)).)*$qt5agg)r   r  r  r   rj   r   rh   switch_backend)r   r   s     r#   _impl_missingr.    s    CKKCKK!CKK	!CKK	#	{*T	U7# 
V 
{*G	H8$ 
I	H 
V	U 
I	Hs    B.B?.
B<?
Cc                  (    [        [        [        S9  g r  )r   r.  r   r1   r%   r#   test_qt_missingr0    s    }5r%   c                  V   SS K n SS KnSS KnUR                  u  p4nU R                  " U S35        U R                  " U S35      nSS KnU R                  " U S35      nUR                  S/5      n	UR                  SS[        S9  UR                  R                  R                  5         g )Nr   z.QtCorez
.QtWidgetszmpl testingerrorz.*Mixing Qt major.*)messagecategory)r^   r   warningsr   import_modulematplotlib.backends.backend_qtQApplicationfilterwarningsUserWarningbackends
backend_qt_create_qApp)
r^   r   r5  _host_bindingmpl_bindingmpl_binding_qwidgetsr   host_qwidgetshost_apps
             r#   _impl_test_cross_Qt_importsrD    s    #&88 A[{m734$22k]*3MN)++|nJ,GHM))=/:HG-C%0  2""//1r%   c               #     #    S V s/ s H'  n [         R                  R                  U 5      c  M%  U PM)     nn S V s/ s H'  n [         R                  R                  U 5      c  M%  U PM)     nn [        U5      S:X  d  [        U5      S:X  a7  [        R
                  " S S [        R                  R                  S5      /S9v   g U H  nU H  nX4/XC/4 S h  vN   M     M     g s  sn f s  sn f  N7f)N)r=   r>   )r;   r<   r   r$  )rz   )r^   r_   r`   r&  rj   r   rk   rl   )rv   r'  r(  qt5qt6s        r#   qt5_and_qt6_pairsrH    s     ++>>##C( 	+  
 ,+>>##C( 	+   <A\!2a!7ll4"(++"2"23S"T!UW 	WC
SJ///    0s2   C-$C!C!C-$C&#C&)A*C-C+C-r:   rO   rR   z	host, mplc                      [        [        X[        S9nUR                  nSU;   d   eg ! [        R
                   a  nUR                  n S nAN.S nAff = f)Nr  z2Mixing Qt major versions may not work as expected.)r   rD  r   r   r   r   )hostr   r   r   exs        r#   test_cross_Qt_importsrL    sU    
	6#02 ?6III ((  	s   * AAAz,this test fails an azure for unknown reasonsr   zCannot send SIGINT on Windows.c                     [         R                  " S5        [        R                  " [        R
                  S[        R                  " [        5      S-   S/0 [        R                  ESSS.ES9n S	[        R                  S
    S[        R                  S    3n[        R                  " 5       [        -   n   U R!                  5       nUb   e["        R$                  R'                  U5      n UR/                  5         U R1                  [2        R4                  5        U R7                  [        S9S:X  d   e U R!                  5       c  U R9                  5         g g ! ["        R(                  R*                   a5    [        R                  " 5       U:  a  [         R,                  " S5         O M  f = fM  ! U R!                  5       c  U R9                  5         f f = f)Ntornado-cz
_test_interactive_impl()z{}webaggr   r   r   zhttp://zwebagg.address:zwebagg.portz'Failed to connect to the webagg server.r  r   )rj   importorskipr   Popenr   
executableinspect	getsourcer   r   r   r   r   timeperf_counterr   pollurllibrequesturlopenr2  URLErrorr   r   send_signalsignalSIGINTwaitkill)r   urlr   retcodeconns        r#   test_webaggrg    s    	"				1	2'
()-	/ MrzzLL	ND
 CLL!1231S\\-5P4Q
RC!M1G
))+&~~--c2 	

'yyy/144499;IIK  <<(( $$&0KK IJ	   99;IIK s2   5F0 74E +A	F0 AF+%F0 *F++F0 0$Gc                  0   SS K n SS KnUR                  SS  u  p#UR                  S5      nU R                  R                  SS 5        U R                  R                  SS 5        U H  nXAR                  ;  a  M   e   SS KJn  UR                  5       S:X  d   eU H  nXAR                  ;  a  M   e   U H*  n[        R                  " U5        XAR                  ;   a  M*   e    UR                  U5        UR                  " S5        g ! [         a     g f = f)Nr   r(   r[   DISPLAYWAYLAND_DISPLAYrE   )r   r   r   splitr   popr  r  r   get_backendr^   r6  r-  exitrh   )r   r   r   ru   rv   r   s         r#   _lazy_headlessro    s    HHQRLMG::c?D JJNN9d#JJNN$d+++%%%  $??%%%++%%%  $kk!!! 
7# 	  s   $D 
DDzthis a linux-only testc           
      x    [        [        U R                  S5      U R                  S5      [        0 U ESSS.ES9ng )Nr   rZ   r'   )ri  rj  r   )r   ro  rl  r   r  s     r#   test_lazy_linux_headlessrq    s:     sww~6?S?RB?	Dr%   c                     SS K Jn   U R                  5       u  pUR                  SS/SS/SS9u  nU R	                  SS9  U R                  S5        UR                  R                  S	[        5        UR                  R                  UR                  5      nUR                  U5        UR                  R                  UR                  5        [        S
5       H  nUR                  R                  U5        UR                  SS/SS/5      u  nUR                  U5        UR                  R                  UR                  5        UR                  R                  5         M     U R                  S5        g )Nr   r(   rV   T)animatedF)blockg333333?r   
   皙?)r  r   r   r   r   r   r   r   r   copy_from_bboxbboxdraw_artistblitrangerestore_regionr   )r   r   r   lnbgjs         r#   _test_number_of_draws_scriptr  )  s   #llnGC ''1a&1a&4'
0CB HH5HIIcNJJ</ 
	"	"388	,BNN2JJOOCHH2Y

!!"% ggq!fq!f%
r

!

!  IIcNr%   	gtk3cairoz#gtk3cairo does not support blitting	gtk4cairoz#gtk4cairo does not support blittingzwx does not support blittingrD   c                     [        [        [        U S9nUR                  R	                  S5      nSUs=:  a  S:  d   e   eg )Nr   	DrawEventr   r
  )r   r  r   r   r   )r   r   ndrawss      r#   test_blitting_eventsr  j  sA     $msLD [[{+Fv>>>>r%   c                     SS K n SSKJn  SS KJn  U R
                  " S5      (       a  SOSnUR                  5       nUR                  U5        UR                  R                  S5      nU" 5       nUR                  U5        UR                  5         UR                  U5        UR                  5         UR                  S:  d   eSUl        SUl        UR                  5         UR                  U5        UR                  S:X  d   eUR                  5         UR                  U5        UR                  S:X  d   eUR                  S	5        g )
Nr   )MockCIrV   r   rv  r(   Tr   )r   unittest.mockr  r  r   getenvr   r   r   r   r   r   stop
call_countsingle_shotr   )r   r  r   
pause_timer   r   mocks          r#   _impl_test_interactive_timersr  x  s    
 "# iioo3J
**,CIIjJJ  %E6D	t	KKMIIj	JJL??Q DOE	KKMIIj??a 
KKMIIj??aIIer%   c                     U S   S:X  a1  [         R                  " S5      (       a  [        R                  " S5        U S   S:X  a  [        R                  " S5        [	        [
        [        U S9  g )Nr   r  r  z)gtk3cairo timers do not work in remote CIrK   r   r   )r   r  rj   rl   r   r  r   rQ  s    r#   test_interactive_timersr    sR    
<K'BIIdOO?@
<D HI-%6r%   c                 x  ^^	^
 SS K m	SS KJn  SS KmSS KnUR                  U 5        UU	4S jn[        X15      nUR                  SU5      m
UR                  5       nUR                  R                  SS 5        UR                  R                  SU
4S j5         U" S
0 UD6  g ! [         a    [        SSS	9   g f = f)Nr   c                     > TR                   S:X  a  SS Kn U R                  SS5        g SS KnTR                  " TR
                  " 5       UR                  5        g )Nr   r   )r   win32apiGenerateConsoleCtrlEventr`  rc  getpidra  )r  r`  r   r   s     r#   interrupter&_test_sigint_impl.<locals>.interrupter  s=    <<7"--a3GGBIIK/r%   r(   r   c                      [        SSS9$ NDRAWTflushr   r    s    r#   r   #_test_sigint_impl.<locals>.<lambda>  s    eF$/r%   c                  $   > TR                  5       $ r   r   )r    r   s    r#   r   r    s    ekkmr%   SUCCESSTr  r1   )r   r  r   r   	threadingr-  getattrTimerr   r   r   KeyboardInterruptr   )r   target_namer!   r   r  r  targetr   r   r   r   s           @@@r#   _test_sigint_implr    s    #w0 S&FOOA{+E
**,CJJ/ JJ#% %it$%s   B" "B98B9ztarget, kwargsr   rt  r   intervalru  c                    U R                  S5      nUR                  S5      (       d  [        R                  " S5        [	        [
        R                  S[        R                  " [        5      SU< SU< SU< S3-   /5      n UR                  S5        UR                  [        S	9u  pVS
U;   d   eg ! [         a$    UR                  5         UR                  5       u  pVe f = f)Nr   qtrM   -SIGINT currently only tested on qt and macosxrO  z
_test_sigint_impl(rN   )r  r  r  )rd   rc   rj   rl   r	   r   rU  rV  rW  r  r/   communicater   	Exceptionrc  )r   r  r!   r   r   r   r>  s          r#   test_sigintr    s     ggl#G.//CD				,	-{"VJb
!	D
E	FGDf$$]$;	
 	  		$$&	s   &B2 2.C c                   ^ SS K nSS KJn  UR                  U 5        [	        XA5      nUR                  5       nUR                  R                  SS 5        UR                  R                  SS9mSTl	        TR                  [        SSS9  U4S	 jnUR                   " UR                  U5         U" S0 UD6  g ! [         a    [        S
SS9   g f = f)Nr   r   c                      [        SSS9$ r  r  r  s    r#   r   7_test_other_signal_before_sigint_impl.<locals>.<lambda>  s    uV47Pr%   r(   )r  TSIGUSR1r  c                 &   > TR                  5         g r   r   )signumframer   s     r#   custom_signal_handlerD_test_other_signal_before_sigint_impl.<locals>.custom_signal_handler  s    r%   r  r1   )r`  r  r   r-  r  r   r   r   r   r  r   r   r  r  )	r   r  r!   r`  r   r  r   r  r   s	           @r#   %_test_other_signal_before_sigint_implr    s    #wS&F
**,CJJ<)PQJJ  ! ,EE	uit4
MM&.."78% %it$%s   .B7 7CCz,No other signal available to send on Windowsc                    U R                  S5      nUR                  S5      (       d  [        R                  " S5        US:X  a6  UR                  R                  [        R                  R                  SS95        [        R                  S:X  a<  US:X  a6  UR                  R                  [        R                  R                  S	S95        [        [        R                  S
[        R                  " [        5      SU< SU< SU< S3-   /5      n UR                  S5        [         R"                  " UR$                  [&        R(                  5        UR                  S5        [         R"                  " UR$                  [&        R*                  5        UR-                  [.        S9u  pg[3        U5        SU;   d   eg ! [0         a$    UR#                  5         UR-                  5       u  pge f = f)Nr   r  r  rM   zmacosx backend is buggyrR   rT   r   zQt backend is buggy on macOSrO  z'
_test_other_signal_before_sigint_impl(rN   r  r  r  r  r  )rd   rc   rj   rl   node
add_markerrk   rm   r   r   r	   rU  rV  rW  r  r/   r   rc  pidr`  r  ra  r  r   r  r   )r   r  r!   r\  r   r   r   r>  s           r#   test_other_signal_before_sigintr    s    ggl#G.//CD( 1 19R 1 ST
||xFf$4
 	KK%CD	F				@	A	3kF:Rz
4
4	56D
	f
&..)i 
&--($$]$;	
 
&M  		$$&	s   BF8 8.G&)R	functoolsr^   r   rV  r   r   r   r`  r   r   r   rX  urllib.requestr[  PILr   rj   r   r   r   matplotlib.backend_toolsr   matplotlib.testingr   r   r   rT  r	   	lru_cacher{   r   r   r   r   rk   parametrizeflakyr   r  _thread_safe_backendsr   valuesr   rz   ri   rm   r   packaging.versionr  mac_verTimeoutExpiredrd   python_implementationr   rn   r  r  r  r  r  r"  r)  r.  r0  rD  rH  skipifr\   rL  rg  ro  rq  r  _blit_backendsrl   r  r  r  r  r  r  r  r1   r%   r#   <module>r     s        	    
       ( 3 V*** > = =@E )***.P8f  B DEZ$?@!0  A F0."< ;< "Ell1ol+G' 	KKZ%B%BC	E	DKKZ%B%BC	E	H	+""$Q' uW~g6KK!!)B)B)- " /0 77 
a		X	&)	3KKZ%B%BC	E	G	 > > @I MKKK  	
 W
#"**'D
,,(
"s'7'7';g'EKKEF	H? #F  56!0  70
'
>>>2"% 62$0& LLGH$5$F$F$H H4  6 &<(9(;&<=J >6J J"**,I  KCLLG+4TU VK<B CLLG+4LM B DE F N&R 45Ell1ol+G+KKBC	E	K	KKBC	E	DKK;<	>
W
#"**'D
,,(
"


2A

(KKEF	
% . /!  0 F  B DE6 F6%B  B DE)gt_z2, 	 F
$%2 CLLG+I  K B DE)gt_z2, 	 FKr%   