
    
3j9u              	          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rS SKJ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\" 5       (       a  SOS r S r!S r"\RF                  RI                  S\" 5       5      \RF                  RI                  SSS/5      \RF                  RK                  \ S9S 5       5       5       r&S r'\" 5       r(\( GHX  r)\)RT                  S    S   r+S\+;   a>  \)RX                  R[                  \RF                  R]                  \	R^                  S95        MZ  \+S:X  a>  \)RX                  R[                  \RF                  R]                  \	R^                  S95        M  \+S:X  ay  S SK0J1r1  \Rd                  " 5       S    r2\2(       aU  \1" \25      \1" S5      :  a@  \)RX                  R[                  \RF                  R]                  \	Rf                  SS95        GM  GM  GM  \)RT                  S    Ri                  S5      S :X  a?  \)RX                  R[                  \RF                  R]                  \	R^                  S95        GM~  \+S!:X  aK  \Rj                  " 5       S":w  a6  \)RX                  R[                  \RF                  R]                  S#SS$95        GM  \+S!:X  d  GM  S%\Rl                  ;   d  S&\Rl                  ;   d  GM  \
R                  S':X  d  GM  \
Rn                  SS( S):  d  GM$  \)RX                  R[                  \RF                  R]                  S*5      5        GM[     \RF                  RI                  S\(5      \RF                  RK                  \ S9S+ 5       5       r8S, r9S- r:S. r;S/ r<S0 r=S1 r>S2 r?S3 r@S4 rAS5 rB\RF                  R                  \
R                  S6:H  =(       a    \R                  " 5       (       + S7S89\RF                  RI                  S9/ \B" 5       Q5      S: 5       5       rE\RF                  R                  S%\Rl                  ;   S;S89\RF                  R                  \
R                  S<:H  S=S89S> 5       5       rFS? rG\RF                  R                  \
R                  S6:g  S@S89\RF                  RI                  S\" 5       5      SA 5       5       rHSB rI\" 5       rJ\J GHQ  r)\)RT                  S    S   r+\+SC:X  a6  \)RX                  R[                  \RF                  R                  SD5      5        MR  \+SE:X  a6  \)RX                  R[                  \RF                  R                  SF5      5        M  \+S:X  a6  \)RX                  R[                  \RF                  R                  SG5      5        M  \+S!:X  d  M  S%\Rl                  ;   d  S&\Rl                  ;   d  M  \
R                  S':X  d  GM  \
Rn                  SS( S):  d  GM  \)RX                  R[                  \RF                  R]                  S*5      5        GMT     \RF                  RI                  S\J5      \RF                  RK                  \ S9SH 5       5       rLSI rMSJ rNSK rO\RF                  RI                  S\" 5       5      SL 5       rPSM rQ\RF                  RI                  S\" 5       5      \RF                  RI                  SNSOSPS04SQSRSS04/5      ST 5       5       rRSU rS\RF                  R                  \
R                  S<:H  SVS89\RF                  RI                  S\" 5       5      \RF                  RI                  SNSOSPS04SQSRSS04/5      SW 5       5       5       rTg)X    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      d/home/wildlama/miniconda3/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  U$ MO  )z%Read until the terminator is reached.    z)Subprocess died before emitting expected )r   readRuntimeErrorendswith)r   
terminatorbufcs       r"   wait_for_WaitForStringPopen.wait_for'   sZ      #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H  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        OYUS   R                  S5      (       a@  [         R                  S!:X  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M     U$ s  snf s  snf s  snnf s  sn	f ! [$         a    / n Nf = f)%Nlinux)PyQt6PySide6PyQt5PySide2qtagg)r   QT_API	cairocffiqtcairo)      )aggcairorE   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   GtkrB   z.0zno usable GTK bindingsz	Skipping z	 because reasondarwinzgithub #16849BACKEND_DEPS,)r   r   r   display_is_validxdisplay_is_valid	importlibutil	find_specformatjoin
startswithr   r   getrF   
Repositoryget_defaultenumerate_versionsImportErrorappendpytestmarkskipxfail)_is_linux_and_display_invalid_is_linux_and_xdisplay_invalidenvsqt_apiversionrendererdepsr   rR   depmissingrF   gi_repoavailable_gtk_versionsmarkss                  r"   #_get_available_interactive_backendsrt   8   sI   %(\\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<<^SXXd^<eDEab KaFFF M  , *,&	,s0   0K	K$!K2(K$K$K))K87K8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)=Nr0   ).0kvs      r"   	<genexpr>5_get_testable_interactive_backends.<locals>.<genexpr>v   s     $HKDAs!A3ZKs   )rs   id)rt   rd   paramr\   items)r   rs   s     r"   "_get_testable_interactive_backendsr   s   sa     BCEC
 LLC%HH$HCIIK$HHJCE E Es   A
Ax      rB   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&   r0   N)r1   r2   r3   r4   imagedescriptionr6   )tmp_img_paths   r"   
CustomToolr      s     EKr$   r   testgroup)tempfileTemporaryDirectoryr   newr   pathr\   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J	n  TR                  R                  SS0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  a/  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R1                  5       u  p[3        UR4                  5      R6                  SU 3:X  d   eUR4                  R8                  R;                  5       S:X  d   eTR                  S   S:X  a  [=        U5        U
R?                  SS/SS/5        UR4                  R@                  (       a)  UR4                  R@                  RC                  S SSSS5        US:X  a3  URD                  S:  a#  SS K#nURI                  URK                  5       5        UR4                  RM                  S5      mTRO                  U" SUR4                  S5      RP                  5        UR4                  RS                  SU4S j5        UR4                  RS                  S [T        5        URW                  5       nURY                  US!S"S#9  TR[                  5         TR]                  S$5        [3        UR4                  5      U:X  d   [_        UR4                  5      5       eURW                  5       nURY                  US!S"S#9  UR                  S5      (       a%  URa                  5       URa                  5       :X  d   eg g ! , (       d  f       GN= f)%Nr   pyplot)KeyEventFigureCanvasBasewebagg.open_in_browserFr'   backendrD   )rG   webrI   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   r2   close)alt_backendr   mplplts     r"   check_alt_backend1_test_interactive_impl.<locals>.check_alt_backend   sX    GGKtG,**,C$//2;-@A B AIIer$   r@   rE   svgr   zFigure 1r   r      rB   g      ?g       @webagg)rB      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pngd   )r[   dpi      ?)1importlib.utiliojsonr   rd   
matplotlibr   matplotlib.backend_basesr   r   rcParamsupdateloadsargvlowerr*   r]   r   r   raisesrb   r   rY   rZ   subplotsr   r   r2   r   get_window_titler   plotr   draw_rubberbandversion_infoasyncioset_event_loopnew_event_loop	new_timeradd_callback_processmpl_connectprintBytesIOsavefigshowpausestrgetvalue)rX   r   r   r   rd   r   r   r   r   r   axr   resultresult_afterr   r   r   s                 @@@r"   _test_interactive_implr      s   (CLL %  LL

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

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

**4QA>(s//7:w5578JJ  $E	x 13::sCLLMJJ<)DEJJ=%0ZZ\FKKu#K.HHJ IIcN 

//@SZZ@/::<LKKUK4  L$9$9$;;;; i ,+s   O
O)r   r   toolbar2r   )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   rL   r   z*toolmanager is not implemented for macosx.rJ   2wx backend is deprecated; tests failed on appveyorrK   zMTemporarily deactivated: show() changes figure height and thus fails the testr   timeout	extra_envz,Subprocess failed to test intended behavior

CloseEventr'   )rd   rf   _run_helperr   r   dumps_test_timeoutr   CalledProcessErrorfailr   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                  nUR                  5         UR                  S
   R!                  5       R#                  S5      (       a  UR%                  5         g g )Nr   )ThreadPoolExecutorr   Fr'   )r   zwebagg.port_retriesr   )r'   rB      r   r   rJ   )concurrent.futuresr   r   r   r   r   r   r   submitr   r   r   r   r   drawr   r   r]   flush_events)r   r   r   r   r   futurer   s          r"   _test_thread_implr  
  s    5(LL"'   llnGCIIcN!(()<F
MMOJJ=%0!((9FIIcN
MMO ZZFIIK
||I$$&11$77 8r$   r   rE   )r   rJ   rL   )parsez10.16T)r   strictr?   r=   rI   CPythonzZPyPy does not support Tkinter threading: https://foss.heptapod.net/pypy/pypy/-/issues/1929)rR   r  rO   GITHUB_ACTIONrS   r   )rB      z%Tk version mismatch on Azure macOS CIc                 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  P  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  W  s    #				!	!)	,B"c""""###HHQK'''				!	!)	,Bb#r$   c                  (    [        [        [        S9  g Nr   )r   r  r   r0   r$   r"    test_lazy_auto_backend_selectionr  e  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!  j  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$  s  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'  |  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)rX   rY   rZ   lenrd   rf   r   r!  r   r$  r'  )ro   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   rd   r   rb   switch_backend)r   r   s     r"   _impl_missingr3    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   r3  r   r0   r$   r"   test_qt_missingr5    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)rX   r   warningsr   import_modulematplotlib.backends.backend_qtQApplicationfilterwarningsUserWarningbackends
backend_qt_create_qApp)
rX   r   r:  _host_bindingmpl_bindingmpl_binding_qwidgetsr   host_qwidgetshost_apps
             r"   _impl_test_cross_Qt_importsrI    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)  )rs   )rX   rY   rZ   r+  rd   r   re   rf   )ro   r,  r-  qt5qt6s        r"   qt5_and_qt6_pairsrM    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-r9   rN   rQ   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   rI  r   r   r   r   )hostr   r   r   exs        r"   test_cross_Qt_importsrQ    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                  " [        5      S-   n Sn[        [        R                  SX/5       n UR                  S5      n[        R                  " SU5      R                  S5      n[        R                  " 5       [        -   n  UR                  5       nUb   e[         R"                  R%                  U5          S S S 5        UR-                  [.        R0                  5        UR3                  [        S	9S
:X  d   e UR                  5       c  UR5                  5         S S S 5        g ! , (       d  f       OZ= f! [         R&                  R(                   a6    [        R                  " 5       U:  a  [         R*                  " S5         O GM  f = fGM  ! UR                  5       c  UR5                  5         f f = f! , (       d  f       g = f)Ntornadoz
_test_interactive_impl()z{"backend": "webagg"}-czPress Ctrl+Czvisit (https?:\/\/\S+)r'   z'Failed to connect to the webagg server.r  r   )rd   importorskipinspect	getsourcer   r	   r   
executabler.   researchr   timeperf_counterr   pollurllibrequesturlopenr7  URLErrorr   send_signalsignalSIGINTwaitkill)sourcercr   r,   urlr   retcodes          r"   test_webaggrk    sz    	" 67*+F	 B	cnndF?	@D	--/C))5s;AA!DC'')M9G!"iikG"?*?//4 5 V]]+99]93q888yy{"		- 
A	@ 54 ||,, !((*W4$MN 	!   yy{"		 #+ 
A	@sn   GAF5)4EE
E'8F5 !G

E	EF5EAF/(F5.F//F55$GG
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'   rU   DISPLAYWAYLAND_DISPLAYrD   )r   r   r   splitr   popr  r  r   get_backendrX   r;  r2  exitrb   )r   r   r   rn   ro   r   s         r"   _lazy_headlessrs    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   rT   r&   )rm  rn  r   )r   rs  rp  r   r  s     r"   test_lazy_linux_headlessru  #  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'   r   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 blittingc                     [        [        [        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  o  sA     $msLD [[{+Fv>>>>r$   c                      SS K Js  Jn   SS KnU R                  R                  5         UR                  R                  5         g )Nr   )IPython.core.interactiveshellcoreinteractiveshellr  InteractiveShellinstancer   r   )ipshr   s     r"   _fallback_checkr  }  s/    00""$r$   c                  T    [         R                  " S5        [        [        [        S9n g )NIPythonr  )rd   rU  r   r  r   )responses    r"   "test_fallback_to_different_backendr    s    
	" ?MBHr$   c                  j   SSK Jn   SS KJn  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UR                  5         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   )Mockr   rz  r'   Tr   r   )unittest.mockr  r  r   r   r   r   r   r   r   stop
call_count
reset_mocksingle_shotr   )r  r   
pause_timer   r   mocks         r"   _impl_test_interactive_timersr    s    
 ##J
**,CIIjJJ  %E6D	t	KKMIIj	JJL??Q 	OO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  CIz)gtk3cairo timers do not work in remote CIrJ   r   r   )r   getenvrd   rf   r   r  r   )r   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                  2  > TR                   S:X  aV  SSKJn Jn  U R                  R
                  nUR                  UR                  /Ul        UR                  Ul	        U" SS5        g SS K
nTR                  " TR                  " 5       UR                  5        g )Nr   r   )windllwintypes)r   ctypesr  r  kernel32GenerateConsoleCtrlEventDWORDargtypesBOOLrestyperc  rf  getpidrd  )r  r  r  rc  r   r   s       r"   interrupter&_test_sigint_impl.<locals>.interrupter  sj    <<7"/'-'O'O$190P$-/7}}$,$Q*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  r0   )r   r  r   r   	threadingr2  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   rx  r   intervalry  c                     U R                  S5      nUR                  S5      (       d  [        R                  " S5        [        R
                  " [        5      SU< SU< SU< S3-   n[        [        R                  SU/5       n UR                  S5        UR                  [        S	9u  pgS
U;   d   e S S S 5        g ! [         a$    UR                  5         UR                  5       u  pge f = f! , (       d  f       g = f)Nr   qtrL   -SIGINT currently only tested on qt and macosxz
_test_sigint_impl(rM   )rT  r  r  r  )r^   r]   rd   rf   rV  rW  r  r	   r   rX  r.   communicater   	Exceptionrf  )r   r  r    r   rg  r   r   rC  s           r"   test_sigintr    s     ggl#G.//CD 12$WKr&2fZqIJF	cnndF;	<	MM&!(((?IF
 F""" 
=	<  	IIK((*IF		 
=	<s$   C/&B>,C/>.C,,C//
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  r0   )rc  r  r   r2  r  r   r   r   r   r  r   r   r  r  )	r   r  r    rc  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                  " [        5      S
U< SU< SU< S3-   n[        [        R                  SU/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  px S S S 5        [3        W5        SU;   d   eg ! [0         a$    UR#                  5         UR-                  5       u  pxe f = f! , (       d  f       NS= f)Nr   r  r  rL   zmacosx backend is buggyrQ   rS   r   zQt backend is buggy on macOSz'
_test_other_signal_before_sigint_impl(rM   r  rT  r  r  r  r  )r^   r]   rd   rf   node
add_markerre   rg   r   r   rV  rW  r  r	   rX  r.   r   rf  pidrc  r  rd  r  r   r  r   )	r   r  r    r_  r   rg  r   r   rC  s	            r"   test_other_signal_before_sigintr  	  s    ggl#G.//CD( 1 19R 1 ST
||xFf$4
 	KK%CD	F EF82fZr&166F 
cnndF;	<		MM&!GGDHHfnn-MM)$GGDHHfmm,(((?IFA 
= 
&M  	IIK((*IF	 
=	<s   G5BG.G22G55
H)U	functoolsrX   r   rV  r   r   r   rY  rc  r   r   r   r[  urllib.requestr^  PILr   rd   r   r   matplotlib.backend_toolsr   matplotlib.testingr   r   r   Popenr	   	lru_cachert   r   r   _retry_countr   r   re   parametrizeflakyr   r  _thread_safe_backendsr   valuesr   rs   rc   rg   r   packaging.versionr  mac_verTimeoutExpiredr^   python_implementationr   r   r  r  r  r!  r$  r'  r.  r3  r5  rI  rM  skipifrV   rQ  rk  rs  ru  r  _blit_backendsrf   r  r  r  r  r  r  r  r  r  r0   r$   r"   <module>r     s*        	  	   
      ( 3 V*** > 7 7tE )**%''qQ*.W<t  B DEZ$?@,'0 ( A F0.B ;< "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C@  B DE6 F6!%H  B DE)gt_z2, #	 F
#"%2 CLLG+I  K B DE)gt_z2, 	 FKr$   