
    G8cQ                     
   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mZ d ZdZd Zej,                  j/                  d e             ej,                  j/                  dd	d
g      ej,                  j1                  d      d                      Zd Z e       ZeD ]  Zej:                  d    d   Zdev r@ej>                  jA                  ej,                  jC                  ejD                               Zedk(  r@ej>                  jA                  ej,                  jC                  ejD                               edk(  rqd dl#m$Z$  ejJ                         d    Z%e%s e$e%       e$d      k  sej>                  jA                  ej,                  jC                  ejL                  d             ej:                  d    jO                  d      dk(  rAej>                  jA                  ej,                  jC                  ejD                               wedk(  s~ ejP                         dk7  sej>                  jA                  ej,                  jC                  dd              ej,                  j/                  de      ej,                  j1                  d      d               Z)d Z*d  Z+d! Z,d" Z-d# Z.d$ Z/d% Z0d& Z1ej,                  je                  d'ejf                  v d()      ej,                  je                  ejh                  d*k(  d+)      d,               Z5d- Z6ej,                  je                  ej
                  d.k7  d/)      ej,                  j/                  d e             d0               Z7d1 Z8ej,                  j=                  d2d3      d4        Z9d5 Z: e       Z;e;D ]  Zej:                  d    d   Zed6k(  r5ej>                  jA                  ej,                  jy                  d7             Oed8k(  r5ej>                  jA                  ej,                  jy                  d9             edk(  sej>                  jA                  ej,                  jy                  d:              ej,                  j/                  de;      ej,                  j1                  d;      d<               Z=d= Z>ej,                  je                  ej
                  d>k(  d?)      ej,                  j/                  d e             ej,                  j/                  d@dAdBg      dC                      Z?y)D    N)_c_internal_utils)subprocess_run_helperc                     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#|& }}t        j                  dk(  rt        j                         sd}n|r!dj                  dj                  |            }n||d
   dk(  r"t        j                  j                  d      rd}nR|d
   j                  d      r>dd l}	|d
   d   }|	j                  j                         }
| d|
j!                  d      vrd}g }|r6|j#                  t$        j&                  j)                  d| d|              nV|d
   j                  d      rBt        j                  d k(  r/|j#                  t$        j&                  j+                  d!             | j#                  t%        j,                  i |d"d#j                  |      i|t/        |      $              | S c c}w c c}w c c}}w c c}w )%N)PyQt6PySide6PyQt5PySide2qtagg)
MPLBACKENDQT_API	cairocffiqtcairo)      )aggcairor   gir   gtktkintertkaggwxwxaggzmatplotlib.backends._macosxmacosxlinuxz'$DISPLAY and $WAYLAND_DISPLAY are unsetz{} cannot be importedz, TF_BUILDzmacosx backend fails on Azurer   r   z.0Gtkzno usable GTK bindingsz	Skipping z	 because reasondarwinzgithub #16849BACKEND_DEPS,)marksid)	importlibutil	find_specsysplatformr   display_is_validformatjoinosenvironget
startswithr   
Repositoryget_defaultenumerate_versionsappendpytestmarkskipxfailparamstr)envsqt_apiversionrendererdepsenvr   depmissingr   repor"   s               L/usr/lib/python3/dist-packages/matplotlib/tests/test_backends_interactive.py"_get_testable_interactive_backendsrD      s   D EF x%8: F EF $'6:< F	 $F4DF(0 WIhZ/H IJ FJ F [<12 VlD)* VlG,- ,,|X.FG )
	c "&L3inn.F.Fs.K3LLLLG#%668>F,33DIIg4FGF(*rzz~~j/I4F))%0,'*G==,,.D"~T%<%<U%CC1LL))"3%y9 * ; <))$/CLLH4LLL**/*BCLL7377C	
I)
T KSFFF Ms   III?$I$I<   c                     dd l } dd l}dd l}dd l}ddlm} dd lddlm ddlm	} j                  j                  ddd       j                  j                   |j                  |j                  d                j                  d   j                         } |       j                   |       j                   }|j#                  d	      r|j%                  d
      svj'                          |dk7  r) |t(              5   j*                  dd       d d d        fd}| j,                  j/                  d      r ||d d dz           |d        j*                  |d       j1                         \  }	}
 t3        |	j4                        j6                  dj9                  |             |
j;                  ddgddg       |	j4                  j<                  r)|	j4                  j<                  j?                  d dddd       |	j4                  jA                  d      jC                   |d|	j4                  d      jD                         |	j4                  jG                  dfd       |	j4                  jG                  dtH               |jK                         }|	jM                  |d       jO                          jQ                  d       |jK                         }|	jM                  |d       |j%                  d       s6|jR                  d!k(  r& |jU                         |jU                                y y y # 1 sw Y   )xY w)"Nr   )TestCasepyplot)KeyEventF   zwebagg.open_in_browserzwebagg.port_retriesbackendr   )r   webr   Tforcec                      j                   | d       j                         } t        |j                        j                  dj                  |              y )NTrO   matplotlib.backends.backend_{})usefiguretypecanvas
__module__r*   )alt_backendfigassert_equalmplplts     rC   check_alt_backendz1_test_interactive_impl.<locals>.check_alt_backends   sG    CGGKt,**,CSZZ ++077DF    r   r   svgrR      r   g      ?g       @key_press_eventq
draw_eventc                 $    j                         S )N)start)eventtimers    rC   <lambda>z(_test_interactive_impl.<locals>.<lambda>   s    u{{} r^   close_eventpng)r*         ?qt5r   )+importlib.utiliojsonr'   unittestrG   
matplotlibrI   matplotlib.backend_basesrJ   rcParamsupdateloadsargvlowerassertEqualassertRaisesendswithr/   rT   ImportErrorrS   r%   r&   subplotsrU   rV   rW   r*   plottoolbardraw_rubberband	new_timeradd_callback_processmpl_connectprintBytesIOsavefigshowpauser(   getvalue)r$   ro   rp   r'   rG   rJ   rM   assert_raisesr]   rY   axresultresult_afterrZ   r[   r\   rh   s                @@@@rC   _test_interactive_implr   O   s   !(1LL"'  
 LL


388A;/0ll9%++-G:))LJ++Mw'9'9.'I

 g{+ -t,-	F >>##K0gcrlW45% CGGG4 llnGCSZZ##(//8: 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+e$)A 	V__&(=(=(?@ *B$Y- -s   L??M	r?   r   toolbar2toolmanagerr   )rerunsc                    | d   dk(  r|dk(  rt        j                  d       | d   dk(  rt        j                  d       t        t        t	        j
                  d|i      t        |       }|j                  j                  d	      d
k(  sJ y )Nr   r   r   z*toolmanager is not implemented for macosx.r   2wx backend is deprecated; tests failed on appveyorr   timeout	extra_env
CloseEventrK   )	r4   r6   _run_helperr   rp   dumps_test_timeoutstdoutcount)r?   r   procs      rC   test_interactive_backendr      s     <H$m#KKDE
<D HI-zz9g"67,!$&D
 ;;\*a///r^   c                  v   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!                  d      r|j                  j#                          y y )Nr   )ThreadPoolExecutorrH   FrK   rL   rl   )rK   r      rj   rM   WX)concurrent.futuresr   rr   rI   rt   ru   r}   r   submitr~   r   rV   r   r   drawcloser/   flush_events)r   r[   r\   rY   r   futures         rC   _test_thread_implr      s    5(LL"'   llnGCIIcN!(()<F
MMOJJ=%0!((9FIIcN
MMOIIK
||I))$/

! 0r^   r   r   )raisesr   r   )parsez10.16T)r   strictr   r	   r   CPythonzZPyPy does not support Tkinter threading: https://foss.heptapod.net/pypy/pypy/-/issues/1929)r   r   c                 p    t        t        t        |       }|j                  j	                  d      dk(  sJ y )Nr   r   rK   )r   r   r   r   r   r?   r   s     rC   test_interactive_thread_safetyr      s0     (-3OD;;\*a///r^   c                  :   dd l } dd lm} t        j	                  | j
                  d      }t        |t              rJ |j                  J |j                  d       |j                  J t        j	                  | j
                  d      }t        |t              sJ y )Nr   rM      )
rr   matplotlib.pyplotrI   dict__getitem__rt   
isinstancer9   _backend_modr~   )rr   r\   bks      rC   &_impl_test_lazy_auto_backend_selectionr      s    #			*--y	9B"c"""###HHQK'''			*--y	9Bb#r^   c                  .    t        t        t               y Nr   )r   r   r    r^   rC    test_lazy_auto_backend_selectionr     s    6%'r^   c                  8   dd l } dd l}d|j                  vsJ d|j                  vsJ d|j                  v sd|j                  v sJ dd l} t	        j
                  t        d      5  | j                  j                  j                   d d d        y # 1 sw Y   y xY wNr   r   pyside6r   pyside2QtWidgets.QApplication.instancematch)
"matplotlib.backends.backend_qt5aggr'   modulesmatplotlib.backends.backend_qt5r4   warnsDeprecationWarningbackendsbackend_qt5qApprr   r'   s     rC   _implqt5aggr     s    -#++%%%CKK'''ckk!Y#++%===*	(=
? -'',,- - -   &!BBc                  8   dd l } dd l}d|j                  vsJ d|j                  vsJ d|j                  v sd|j                  v sJ dd l} t	        j
                  t        d      5  | j                  j                  j                   d d d        y # 1 sw Y   y xY wr   )
$matplotlib.backends.backend_qt5cairor'   r   r   r4   r   r   r   r   r   r   s     rC   
_implcairor     s    /#++%%%CKK'''ckk!Y#++%===*	(=
? -'',,- - -r   c                  0   dd l } dd l}d|j                  vsJ d|j                  vsJ d|j                  v sd|j                  v sJ t        j                  t
        d      5  | j                  j                  j                   d d d        y # 1 sw Y   y xY wr   )	r   r'   r   r4   r   r   r   r   r   r   s     rC   	_implcorer   '  s    *#++%%%CKK'''ckk!Y#++%===	(=
? -'',,- - -s   "!BB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)r   r   )r   r   r   need both QT6 and QT5 bindingsr   pycairo)r$   r%   r&   lenr4   r6   r   r   r   r   r   )r@   qt5_bindingsqt6_bindingss      rC   test_qt5backends_uses_qt5r   4  s    +>>##C(4 	L 
 ,>>##C(4 	L  <A\!2a!745]3~~	*6J6	=1s
   (C-(C2c                     dd l } dd l}dd l}| j                  \  }}} |j                  | d        |j                  | d      }dd l} |j                  | d      }|j                  dg      }	 |j                  t        d      5  |j                  j                  j                          d d d        y # 1 sw Y   y xY w)Nr   z.QtCorez
.QtWidgetszmpl testingzMixing Qt majorr   )r'   r$   r4   rw   import_modulematplotlib.backends.backend_qtQApplicationr   UserWarningr   
backend_qt_create_qApp)
r'   r$   r4   _host_bindingmpl_bindingmpl_binding_qwidgetsrr   host_qwidgetshost_apps
             rC   _impl_test_cross_Qt_importsr   E  s    #&88 A|[I{m7342922k]*3MN)+I++|nJ,GHM))=/:H	k):	; 6&&3356 6 6s   
%B88C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       |D ].  }|D ]'  }||g||gfD ]  }	 t        t        g|dt        i  ) 0 y c c} w c c} w # t        j                  $ rL}|j                  t        j                   k(  rY d }~b|j                  t        j                   k(  rY d }~ d }~ww xY w)N)r   r	   )r   r   r   r   r   )r$   r%   r&   r   r4   r6   r   r   r   
subprocessCalledProcessError
returncodesignalSIGSEGVSIGABRT)r@   r   r   rm   qt6pairexs          rC   test_cross_Qt_importsr   V  s=   +>>##C(4 	L 
 ,>>##C(4 	L  <A\!2a!745  	Csc3Z0  ; 7!%7(57	 "44 	 }}7  6>>/9 	s.   (C(C$CD+	D&	D&	%D&	&D+	r   z,this test fails an azure for unknown reasonsr   ntzCannot send SIGINT on Windows.c                  "   t        j                  d       t        j                  t        j
                  dt        j                  t              dz   dgi t        j                  ddd      } d	j                  t        j                  d
   t        j                  d         }t        j                         t         z   }	 	 | j#                         }|J t$        j&                  j)                  |      }	 |j1                          | j3                  t4        j6                         | j9                  t               dk(  sJ y # t$        j*                  j,                  $ r2 t        j                         |kD  rt        j.                  d       nY Y nw xY w)Ntornadoz-cz
_test_interactive_impl()z{}webagg0)r   SOURCE_DATE_EPOCH)r?   zhttp://{}:{}zwebagg.addresszwebagg.portz'Failed to connect to the webagg server.r   r   )r4   importorskipr   Popenr'   
executableinspect	getsourcer   r,   r-   r*   r[   rt   timeperf_counterr   pollurllibrequesturlopenerrorURLErrorfailr   send_signalr   SIGINTwait)r   urlr   retcodeconns        rC   test_webaggr  u  sP    	"				1	2'
()-	/ MrzzLL	ND
 

%&](CEC!M1G

	iikG?"?>>))#.D 	JJLV]]#99]9+q000 ||$$ 	  "W,EF G	 s   ?3D> >A
FF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   rK   r!   DISPLAYWAYLAND_DISPLAYr   )r,   r'   rw   splitr-   popr   r   rI   get_backendr$   r   switch_backendexitr|   )r,   r'   rM   r>   r@   r\   s         rC   _lazy_headlessr    s   HHQRLMGT::c?D JJNN9d#JJNN$d+ &#++%%%& $??%%% &#++%%%&  "$ckk!!!"
7# 	  s   C> >	D
	D
r   zthis a linux-only testc           
      ~    t        t        | j                  d      | j                  d      t        i | ddd      }y )Nr   r     )r  r  r   )r   r  r  r   r   s     rC   test_lazy_linux_headlessr    s:     sww~6?S?RB?	Dr^   c                      dd l } dd l} |j                  t        d      5  | j                  j
                  j                   d d d        y # 1 sw Y   y xY w)Nr   r   r   )r   r4   r   r   r   r   r   )rr   r4   s     rC   _qApp_warn_implr    sG    )	&G
I ,&&++, , ,s   !AAQtAgg)skip_on_importerrorc                  .    t        t        t               y r   )r   r  r   r   r^   rC   test_qApp_warnr#    s    7r^   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   rK   ra   T)animatedF)blockg333333?rd   
   皙?)r   rI   r}   r~   r   r   rV   r   r   copy_from_bboxbboxdraw_artistblitrangerestore_regionr   )r\   rY   r   lnbgjs         rC   _test_number_of_draws_scriptr2    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   r2  r   r   r   )r?   r   ndrawss      rC   test_blitting_eventsr8    sA     $msLD [[{+Fv>>>>r^   c                  L   dd l } dd l}dd l}ddlm} t        |j                  d         }|j                         }t        d      D ]6  }|j                         }|r|j                  |       |j                  |       8 |j                         j                  }| j                          t        d      D ]F  }|j                         }|r|j                  |       |j                  |       | j                          H |j                         j                  |z
  }	t        |	       y )Nr   rH   rK   ra   r   )gcr'   psutilrr   rI   floatrw   Processr-  rT   r   r   memory_inforsscollectr   )
r:  r'   r;  r\   tpr   rY   memgrowths
             rC   _test_figure_leakrE    s    (chhqkAA 1X jjlIIaL		#	
 --/

CJJL1X jjlIIaL		#


 ]]_  3&F	&Mr^   win32z0appveyor tests fail; gh-22988 suggests reworkingtime_mem)g        i )r(  ic                 >   t        j                  dd       |\  }}| d   dk(  rt        j                  d       | d   dk(  s| d   dk(  rt        j                  d	k(  r|d
z  }t        t        t        |      t        |       }t        |j                        }||k  sJ y )Nr;  zpsutil needed to run this testr   r   r   r   r   r   r   iا r   )r4   r   r6   r'   r(   r   rE  r9   r   intr   )r?   rG  
pause_timeacceptable_memory_leakager   rD  s         rC   test_figure_leak_20490rL  5  s    
 )IJ -5)J)
<D HI
<H$(S\\X-E!Z/!3z?.F F....r^   )@r$   rn   r   rp   r,   r(   r   r   r'   r  urllib.requestr  r4   rr   r[   r   matplotlib.testingr   r   rD   r   r   r5   parametrizeflakyr   r   _thread_safe_backendsr8   valuesrM   r"   r3   r7   r   packaging.versionr   mac_verTimeoutExpiredr.   python_implementationr   r   r   r   r   r   r   r   r   skipifr-   namer  r  r  r  r#  r2  _blit_backendsr6   r8  rE  rL  r   r^   rC   <module>rZ     s       	    
     ( C,^ PAf  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  	/<  56!0  70
'
--
-2"6"> J"**,I  KBGGtO,LM1 NK16B CLLG+4LM B DE F N, W$78 88&R 45 >Ell1ol+G+KKBC	E	K	KKBC	E	DKK;<	>> /!  0> CLLG+M  O B DE&68I%JK/ L FO/r^   