
    \cg\q              	          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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mZ  G d dej4                        Ze j8                  d        Zd	 Z e       rd
ndZd Z d Z!ejD                  jG                  d e             ejD                  jG                  dddg      ejD                  jI                  d      d                      Z%d Z& e       Z'e'D ]E  Z(e(jR                  d    d   Z*de*v r@e(jV                  jY                  ejD                  j[                  ej\                               Ze*dk(  r@e(jV                  jY                  ejD                  j[                  ej\                               e*dk(  rqd dl/m0Z0  ejb                         d    Z1e1s e0e1       e0d      k  se(jV                  jY                  ejD                  j[                  ejd                  d             e(jR                  d    jg                  d      d k(  rAe(jV                  jY                  ejD                  j[                  ej\                               we*d!k(  rL ejh                         d"k7  r8e(jV                  jY                  ejD                  j[                  d#d$             e*d!k(  sd%ejj                  v sd&ejj                  v se	j                  d'k(  se	jl                  dd( d)k  se(jV                  jY                  ejD                  j[                  d*             H ejD                  jG                  de'      ejD                  jI                  d      d+               Z7d, Z8d- Z9d. Z:d/ Z;d0 Z<d1 Z=d2 Z>d3 Z?d4 Z@d5 ZAejD                  j                  e	j                  d6k(  xr  ej                          d78      ejD                  jG                  d9g  eA             d:               ZDejD                  j                  d%ejj                  v d;8      ejD                  j                  e	j                  d<k(  d=8      d>               ZEd? ZFejD                  j                  e	j                  d6k7  d@8      ejD                  jG                  d e             dA               ZGdB ZH e       ZIeID ]>  Z(e(jR                  d    d   Z*e*dCk(  r5e(jV                  jY                  ejD                  j                  dD             Pe*dEk(  r5e(jV                  jY                  ejD                  j                  dF             e*dk(  r5e(jV                  jY                  ejD                  j                  dG             e*d!k(  sd%ejj                  v sd&ejj                  v se	j                  d'k(  se	jl                  dd( d)k  se(jV                  jY                  ejD                  j[                  d*             A ejD                  jG                  deI      ejD                  jI                  dH      dI               ZKdJ ZLejD                  jG                  d e             dK        ZMdL ZNejD                  jG                  d e             ejD                  jG                  dMdNdOdifdPdQdRifg      dS               ZOdT ZPejD                  j                  e	j                  d<k(  dU8      ejD                  jG                  d e             ejD                  jG                  dMdNdOdifdPdQdRifg      dV                      ZQy)W    N)Image)_c_internal_utils)ToolToggleBase)subprocess_run_helperis_ci_environmentc                   (     e Zd ZdZ fdZd Z xZS )_WaitForStringPopenzL
    A Popen that passes flags that allow triggering KeyboardInterrupt.
    c                     t         j                  dk(  rt        j                  |d<   t	        |   |i |i t        j                  dddt        j                  dd y )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      e/var/www/html/bid-api/venv/lib/python3.12/site-packages/matplotlib/tests/test_backends_interactive.pyr   z_WaitForStringPopen.__init__   s[    <<7"&0&C&CF?#	=	= N2::MUM??t		=    c                     d}	 | j                   j                  d      }|st        d|      ||z  }|j                  |      ryC)z%Read until the terminator is reached.    z)Subprocess died before emitting expected N)r   readRuntimeErrorendswith)r   
terminatorbufcs       r"   wait_forz_WaitForStringPopen.wait_for'   sW      #A"?
~NP P1HC||J' r#   )__name__
__module____qualname____doc__r   r-   __classcell__)r!   s   @r"   r	   r	      s    =
r#   r	   c                  ^   t         j                  dk(  xr t        j                          } t         j                  dk(  xr t        j                          }g }g dD cg c]
  }|gd|df c}dD cg c]  }|dgd|df c}dD cg c]  }dD ]  }d	d
gdd| | if  c}}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 	cg c]$  }	t
        j                  j                  |	      r#|	& }
}	|
r!dj                  dj                  |
            }n|r|d   dk(  s|d   j                  d      rd}n| rd}n|d   dk(  r"t        j                  j                  d      rd}nU|d   j                  d      rA	 dd l}|j                  j!                         }|j#                  d      }|d   d   }| d|vrd}g }|r6|j'                  t(        j*                  j-                  d| d|               n|d   j                  d      rCt         j                  d!k(  r0|j'                  t(        j*                  j/                  d"              n|d   dk(  r|dt        j                  v sd#t        j                  v rXt         j                  d!k(  rEt         j0                  d d$ d%k  r/|j'                  t(        j*                  j/                  d&              |j'                  i |d'd(j                  |      i|f       ? |S c c}w c c}w c c}}w c c}	w # t$        $ r g }Y vw xY w))Nlinux)PyQt6PySide6PyQt5PySide2qtagg)r   QT_API	cairocffiqtcairo)      )aggcairor@   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   Gtkr=   z.0zno usable GTK bindingsz	Skipping z	 because reasondarwinzgithub #16849GITHUB_ACTION   r=      %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   getrA   
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   rM   depmissingrA   gi_repoavailable_gtk_versionsmarkss                  r"   #_get_available_interactive_backendsru   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	c "&L$3inn.F.Fs.K3$L,33DIIg4FGF+L!W,|$//5(F*>F(*rzz~~j/I4F))%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   L2L
L$L8LLL,+L,c                      t               D  cg c]E  \  } }t        j                  i | g |dj                  d | j	                         D                    G c}} S c c}} w )N-c              3   0   K   | ]  \  }}| d |   yw)=N ).0kvs      r"   	<genexpr>z5_get_testable_interactive_backends.<locals>.<genexpr>|   s     $HKDAqs!A3ZKs   )rt   id)ru   rd   paramr\   items)r   rt   s     r"   "_get_testable_interactive_backendsr   y   sc     BCEC
U LLC%HH$HCIIK$HHJCE E Es   A
Ax      c                    t        j                         5 }t        j                  dd      }t        j
                  j                  |d      |j                          G fddt              }| j                  j                  j                  }| j                  j                  j                  }|j                  d|       |j                  dd       d d d        y # 1 sw Y   y xY w)NLA)   r   ztest_la_icon.pngc                       e Zd ZW  ZdZy)5_test_toolbar_button_la_mode_icon.<locals>.CustomToolr%   N)r.   r/   r0   imagedescription)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                     dd l } dd l}dd l}dd l}dd l}dd lddlm ddlm} j                  j                  ddd       j                  j                   |j                  |j                  d                j                  d   j                         }|j                  d      r|j                  d	      sj!                         }j#                  |       |d
k7  r3 |j$                  t&              5   j(                  d
d       d d d        fd}| j*                  j-                  d      r ||d d dz           |d        j(                  |d       j/                         \  }}	t1        |j2                        j4                  d| k(  sJ |j2                  j6                  j9                         dk(  sJ j                  d   dk(  rt;        |       |	j=                  ddgddg       |j2                  j>                  r)|j2                  j>                  jA                  d dddd       |j2                  jC                  d      jE                   |d|j2                  d      jF                         |j2                  jI                  dfd       |j2                  jI                  dtJ               |jM                         }
|jO                  |
d        jQ                          jS                  d!       |jM                         }|jO                  |d        |
jU                         |jU                         k(  sJ y # 1 sw Y   <xY w)"Nr   pyplot)KeyEventFr&   zwebagg.open_in_browserzwebagg.port_retriesbackendr?   )rB   webrD   Tforcec                      j                   | d       j                         }t        |j                        j                  d|  k(  sJ j                  d       y )NTr   matplotlib.backends.backend_all)usefiguretyper   r/   close)alt_backendr   mplplts     r"   check_alt_backendz1_test_interactive_impl.<locals>.check_alt_backend   sX    CGGKt,**,C$//2;-@A B AIIer#   r;   r@   svgr   zFigure 1r   r   rP   r=   g      ?g       @key_press_eventq
draw_eventc                 $    j                         S Nstart)eventtimers    r"   <lambda>z(_test_interactive_impl.<locals>.<lambda>   s    u{{}r#   close_eventpng)r[         ?)+importlib.utiliojsonr   rd   
matplotlibr   matplotlib.backend_basesr   rcParamsupdateloadsargvlowerr)   r]   r   r   raisesrb   r   rY   rZ   subplotsr   r   r/   r   get_window_titler   plotr   draw_rubberband	new_timeradd_callback_processmpl_connectprintBytesIOsavefigshowpausegetvalue)rX   r   r   r   rd   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jjl		# g{+t, ,	 >>##K0gcrlW45% CGGG4 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   9MMr   r   toolbar2r   r=   )rerunsc                    | d   dk(  r|dk(  rt        j                  d       | d   dk(  rt        j                  d       | d   dk(  r|dk(  rt        j                  d       	 t        t        t	        j
                  d	|i      t        | 
      }j                  j                  d      dk(  sJ y # t        j                  $ r5}t        j                  dt        |j                        z          Y d }~dd }~ww xY w)Nr   rG   r   z*toolmanager is not implemented for macosx.rE   2wx backend is deprecated; tests failed on appveyorrF   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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   #,B0 0C8+C33C8c                     ddl m}  dd l}ddlm} |j                  j                  ddd       |j                         \  }}|j                  d        |        j                  |j                  g d      }|j                          |j                  j                  d	t                |        j                  |j                  j                        }|j                  d       |j                          |j                          |j                  d
   j!                         j#                  d      r|j                  j%                          y y )Nr   )ThreadPoolExecutorr   Fr&   r   r   )r&   r=      r   r   rE   )concurrent.futuresr   r   r   r   r   r   r   submitr   r   r   r   r   drawr   r   r]   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

! 8r#   r   r@   )r   rE   rG   )parsez10.16T)r   strictr:   r8   rD   CPythonzZPyPy does not support Tkinter threading: https://foss.heptapod.net/pypy/pypy/-/issues/1929)rM   r   rJ   rO   rN   rP   rQ   rS   c                 p    t        t        t        |       }|j                  j	                  d      dk(  sJ y )Nr   r   r&   )r   r   r   r   r   r   r   s     r"   test_interactive_thread_safetyr   K  s0     (-3OD;;\*a///r#   c                  &   dd l } dd lm} | j                  j	                  d      }t        |t              rJ |j                  J |j                  d       |j                  J | j                  j	                  d      }t        |t              sJ y )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                  .    t        t        t               y Nr   )r   r  r   rz   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 y y Nr   r5   pyside6r7   pyside2)"matplotlib.backends.backend_qt5aggr   modulesr   r   s     r"   _implqt5aggr  e  sO    -#++%%%CKK'''ckk!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 y y r  )$matplotlib.backends.backend_qt5cairor   r  r  s     r"   
_implcairor  n  sO    /#++%%%CKK'''ckk!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 y y r  )matplotlib.backends.backend_qt5r   r  r  s     r"   	_implcorer  w  sO    *#++%%%CKK'''ckk!Y#++%===%=!r#   c                     dD  cg c]#  } t         j                  j                  |       | % }} dD  cg c]#  } t         j                  j                  |       | % }} t        |      dk(  st        |      dk(  rt	        j
                  d       t        t        t               t         j                  j                  d      t        t        t               t        t        t               y c c} w c c} w )N)r7   r  )r5   r  r   need both QT6 and QT5 bindingsr
  pycairo)rX   rY   rZ   lenrd   rf   r   r  r   r  r  )rp   qt5_bindingsqt6_bindingss      r"   test_qt5backends_uses_qt5r     s    ++>>##C(4 	+  
 ,+>>##C(4 	+   <A\!2a!745]3~~	*6J6	=1s
   (C-(C2c                     dd l } d | j                  d<   d | j                  d<   d | j                  d<   d | j                  d<   dd lm} t	        j
                  t        d      5  |j                  d       d d d        t	        j
                  t        d	      5  |j                  d
       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)Nr   r5   r7   r8   r6   z(Failed to import any of the following Qt)matchr9   z^(?:(?!(PySide6|PyQt6)).)*$qt5agg)r   r  r  r   rd   r   rb   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   "B2B>2B;>Cc                  .    t        t        t               y r	  )r   r%  r   rz   r#   r"   test_qt_missingr'    s    }5r#   c                  ^   dd l } dd l}dd l}|j                  \  }}} | j                  | d        | j                  | d      }dd l} | j                  | d      }|j                  dg      }	|j                  ddt               |j                  j                  j                          y )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_importsr;    s    #&88 A|[I{m7342922k]*3MN)+I++|nJ,GHM))=/:HG-C%0  2""//1r#   c               #     K   dD  cg c]#  } t         j                  j                  |       | % }} dD  cg c]#  } t         j                  j                  |       | % }} t        |      dk(  st        |      dk(  r9t	        j
                  d d t        j                  j                  d      g       y |D ]  }|D ]  }||g||gfE d {      y c c} w c c} w 7 w)N)r7   r8   )r5   r6   r   r  )rt   )rX   rY   rZ   r  rd   r   re   rf   )rp   r  r  qt5qt6s        r"   qt5_and_qt6_pairsr?    s     ++>>##C(4 	+  
 ,+>>##C(4 	+   <A\!2a!7ll4"(++"2"23S"T!UW 	WCc
S#J///    0s'   C(CC(CA,C	C
Cr4   rI   rL   z	host, mplc                     	 t        t        | |t              }|j                  }d|v sJ y # t        j
                  $ r}|j                  }Y d }~+d }~ww xY w)Nr
  z2Mixing Qt major versions may not work as expected.)r   r;  r   r   r   r   )hostr   r   r   exs        r"   test_cross_Qt_importsrC    sW    
	6c#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                     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
    dt        j                  d    }t        j                         t        z   }	 	 	 | j!                         }|J t"        j$                  j'                  |      }	 |j/                          | j1                  t2        j4                         | j7                  t              dk(  sJ 	 | j!                         | j9                          y y # t"        j(                  j*                  $ r2 t        j                         |kD  rt        j,                  d       nY Y nw xY w# | j!                         | j9                          w w xY w)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   )rd   importorskipr   Popenr   
executableinspect	getsourcer   r   r   r   r   timeperf_counterr   pollurllibrequesturlopenr)  URLErrorr   r   send_signalsignalSIGINTwaitkill)r   urlr   retcodeconns        r"   test_webaggr^    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 K   99;IIK s2   4F* 63E )AF* A
F&!F* %F&&F* *#Gc                     dd l } dd l}|j                  dd  \  }}|j                  d      }| j                  j                  dd        | j                  j                  dd        |D ]  }||j                  vrJ  dd lm} |j                         dk(  sJ |D ]  }||j                  vrJ  |D ]'  }t        j                  |       ||j                  v r'J  	 |j                  |        |j                  d       y # t        $ r Y y w xY w)Nr   r&   rU   DISPLAYWAYLAND_DISPLAYr?   )r   r   r   splitr   popr  r  r   get_backendrX   r-  r$  exitrb   )r   r   r   ro   rp   r   s         r"   _lazy_headlessrf    s   HHQRLMGT::c?D JJNN9d#JJNN$d+#++%%%  $??%%%#++%%%  $ckk!!! 
7# 	  s   C> >	D
	D
zthis a linux-only testc           
      ~    t        t        | j                  d      | j                  d      t        i | ddd      }y )Nr   rT   r%   )r`  ra  r   )r   rf  rc  r   r   s     r"   test_lazy_linux_headlessrh    s:     sww~6?S?RB?	Dr#   c                     dd l m}  | j                         \  }}|j                  ddgddgd      \  }| j	                  d       | j                  d       |j                  j                  d	t               |j                  j                  |j                        }|j                  |       |j                  j                  |j                         t        d
      D ]  }|j                  j                  |       |j                  ddgddg      \  }|j                  |       |j                  j                  |j                         |j                  j                           | j                  d       y )Nr   r&   rP   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_scriptrw  )  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 blittingr>   c                     t        t        t        |       }|j                  j	                  d      }d|cxk  rdk  sJ  J y )Nr   	DrawEventr   r  )r   rw  r   r   r   )r   r   ndrawss      r"   test_blitting_eventsr}  j  sA     $msLD [[{+Fv>>>>r#   c                     dd l } ddlm} dd lm}  | j
                  d      rdnd}|j                         }|j                  |       |j                  j                  d      } |       }|j                  |       |j                          |j                  |       |j                          |j                  dkD  sJ d|_        d|_        |j                          |j                  |       |j                  dk(  sJ |j                          |j                  |       |j                  dk(  sJ |j                  d	       y )
Nr   )MockCIrP   r   rm  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    
 "#  biio3J
**,CIIjJJ  %E6D	t	KKMIIj	JJL??Q DOE	KKMIIj??a 
KKMIIj??aIIer#   c                     | d   dk(  r*t        j                  d      rt        j                  d       | d   dk(  rt        j                  d       t	        t
        t        |        y )Nr   rx  r  z)gtk3cairo timers do not work in remote CIrE   r   r   )r   r  rd   rf   r   r  r   rH  s    r"   test_interactive_timersr    sP    
<K'BIIdO?@
<D HI-%6r#   c                 z  	
 dd l 	dd lm} dd ldd l}|j                  |        	fd}t        ||      }|j                  d|      
|j                         }|j                  j                  dd        |j                  j                  d
fd       	  |d
i | y # t        $ r t        dd	       Y y w xY w)Nr   c                      j                   dk(  rdd l} | j                  dd       y dd l} j                   j
                         |j                         y )Nr   r   )r   win32apiGenerateConsoleCtrlEventrW  rZ  getpidrX  )r  rW  r   r   s     r"   interrupterz&_test_sigint_impl.<locals>.interrupter  sA    <<7"--a3BGGIBIIK/r#   r&   r   c                      t        dd      S NDRAWTflushr   r   s    r"   r   z#_test_sigint_impl.<locals>.<lambda>  s    eF$/r#   c                  $    j                         S r   r   )r   r   s    r"   r   z#_test_sigint_impl.<locals>.<lambda>  s    ekkmr#   SUCCESSTr  rz   )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! !B:9B:ztarget, kwargsr   rk  r   intervalrl  c                    | j                  d      }|j                  d      st        j                  d       t	        t
        j                  dt        j                  t              d|d|d|dz   g      }	 |j                  d       |j                  t        	      \  }}d
|v sJ y # t        $ r% |j                          |j                         \  }} w xY w)Nr   qtrG   -SIGINT currently only tested on qt and macosxrF  z
_test_sigint_impl(rH   )r  r
  r  )r^   r]   rd   rf   r	   r   rL  rM  rN  r  r-   communicater   	ExceptionrZ  )r   r  r    r   r   r   r5  s          r"   test_sigintr    s     ggl#G./CD				,	-{"VJb
!	D
E	FGDf$$]$;	
 	  		$$&	s   9*B* *.Cc                    dd l }dd lm} |j                  |        t	        ||      }|j                         }|j                  j                  dd        |j                  j                  d      d_	        j                  t        dd       fd	} |j                   |j                  |       	  |di | y # t        $ r t        d
d       Y y w xY w)Nr   r   c                      t        dd      S r  r  r  s    r"   r   z7_test_other_signal_before_sigint_impl.<locals>.<lambda>  s    uV47Pr#   r&   )r  TSIGUSR1r  c                 &    j                          y r   r   )signumframer   s     r"   custom_signal_handlerzD_test_other_signal_before_sigint_impl.<locals>.custom_signal_handler  s    r#   r  rz   )rW  r  r   r$  r  r   r   r   r   r  r   r   r  r  )	r   r  r    rW  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FMM&.."78% %it$%s   4B= =CCz,No other signal available to send on Windowsc                    | j                  d      }|j                  d      st        j                  d       |dk(  r9|j                  j                  t        j                  j                  d             t        j                  dk(  r>|dk(  r9|j                  j                  t        j                  j                  d	             t        t        j                  d
t        j                  t              d|d|d|dz   g      }	 |j                  d       t!        j"                  |j$                  t&        j(                         |j                  d       t!        j"                  |j$                  t&        j*                         |j-                  t.              \  }}t3        |       d|v sJ y # t0        $ r% |j#                          |j-                         \  }} w xY w)Nr   r  r  rG   zmacosx backend is buggyrL   rN   r   zQt backend is buggy on macOSrF  z'
_test_other_signal_before_sigint_impl(rH   r  r  r  r
  r  )r^   r]   rd   rf   node
add_markerre   rg   r   r   r	   rL  rM  rN  r  r-   r   rZ  pidrW  r  rX  r  r   r  r   )r   r  r    rS  r   r   r   r5  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F1 1.G)R	functoolsrX   r   rM  r   r   r   rW  r   r   r   rO  urllib.requestrR  PILr   rd   r   r   r   matplotlib.backend_toolsr   matplotlib.testingr   r   r   rK  r	   	lru_cacheru   r   r   r   r   re   parametrizeflakyr   r   _thread_safe_backendsr   valuesr   rt   rc   rg   r   packaging.versionr   mac_verTimeoutExpiredr^   python_implementationr   rh   r   r  r  r  r  r  r   r%  r'  r;  r?  skipifrV   rC  r^  rf  rh  rw  _blit_backendsrf   r}  r  r  r  r  r  r  rz   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 
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$F$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#   