
    
3j                       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J	r	J
r
  S SKJr  S SKJr  S SKJr  S SKJrJr  S SKJrJrJr  S SKrS SKJr  S SKr\R>                  S 5       r S r!\RD                  RG                  S	\$" 5       \$" S
SS9\$" SSSS9\$" \$" S
S9S9/5      S 5       r%\RD                  RG                  SSS/5      \RD                  RG                  SS S/SS/SS//5      \RD                  RG                  SS S/SS/SS//5      S 5       5       5       r&\RD                  RG                  SS
S/SS//5      S 5       r'S r(S  r)S! r*\RD                  RG                  S"S
S/5      S# 5       r+\RD                  RG                  S"S
S/5      S$ 5       r,S% r-\RD                  RG                  S&\R\                  \R^                  /5      S' 5       r0S( r1\RD                  RG                  S)SS
/5      S* 5       r2S+ r3S, r4S- r5\RD                  RG                  S.S
S/5      S/ 5       r6\RD                  RG                  S0S
S/5      S1 5       r7\RD                  RG                  S2S3S\$" SS
S494S5S
\$" SS694S3S\$" \$" S
S9S94S3S\$" S
S794/5      S8 5       r8\RD                  RG                  S.S
S/5      S9 5       r9\RD                  RG                  S0S
S/5      S: 5       r:\RD                  RG                  S;S
S/5      S< 5       r;S= r<S> r=\RD                  RG                  S?S@SA/5      SB 5       r>\RD                  RG                  S?S@SA/5      SC 5       r?SD r@SE rA\RD                  RG                  SFSG5      SH 5       rB\RD                  R                  SIS
SJ9SK 5       rDSL rESM rFSN rG\RD                  RG                  S	\$" 5       \$" S\$" SOSP9SQ9\$" S
SS9/5      SR 5       rHSS rIST rJSU rK\RD                  RG                  SV/ SWQ5      SX 5       rLSY rM\" SZ/S[S
S\9S] 5       rN\" 5       S^ 5       rO\" 5       S_ 5       rP\" S`/S[S
S\9Sa 5       rQSb rR\" 5       Sc 5       rS\" 5       Sd 5       rT\" 5       Se 5       rU\RD                  RG                  Sf\R                  \R                  /5      Sg 5       rXSh rYSi rZSj r[Sk r\Sl r]Sm r^\RD                  RG                  SnS3S5/5      So 5       r_\RD                  RG                  SnS3S5/5      Sp 5       r`Sq raSr rbSs rc\RD                  RG                  StSS
/5      Su 5       rd\RD                  RG                  StSS
/5      Sv 5       re\" 5       Sw 5       rf\RD                  RG                  Sx/ SyQ5      \RD                  RG                  StSS
/5      Sz 5       5       rg\RD                  RG                  StSS
/5      S{ 5       rh\RD                  RG                  StSS
/5      S| 5       ri\RD                  RG                  StSS
/5      \" 5       S} 5       5       rjS~ rkS rlS rm\RD                  RG                  SSS
/5      \RD                  RG                  SSS
/5      \RD                  RG                  SSS
/5      S 5       5       5       rnS roS rpg)    N)mock)	DrawEventKeyEvent
MouseEvent)check_figures_equalimage_comparison)click_and_dragget_axnoop)assert_allclosec                      [        5       $ N)r
        W/home/wildlama/miniconda3/lib/python3.13/site-packages/matplotlib/tests/test_widgets.pyaxr      s	    8Or   c            
      T   SSK Jn Jn  SSKJn  U" 5       S;  a  [
        R                  " S5        [        R                  " SSSSS/S	9u  p4U" US
   SS/5      nU" US   SS/SS/SS/S.SS/SS/S.S9nU " US   SS/SS/S9nU " US   SS/SS/SS/SS/S.SS/SS/S.SSS/0S9nUS
   R                  S5        US   R                  S 5        UR                  R                  5         [        R                  " 5        n	UR                  U	S!S"9  S S S 5        g ! , (       d  f       g = f)#Nr   )CheckButtonsRadioButtons)"_get_running_interactive_framework)headlessNz-Callback exceptions are not raised otherwise.      r      )nrowsncolsfigsizewidth_ratiosr   r   ApplesOrangesr   r   redorange      colorfontsize	mistyrose	peachpuff	edgecolor	facecolorlabel_propsradio_props)r   r   T)actives)r   r   r)   darkred
darkorange)r3   r1   frame_propscheck_propsDefaultStylizedpdfformat)matplotlib.widgetsr   r   matplotlib.cbookr   pytestxfailpltsubplots	set_titlecanvasdrawioBytesIOsavefig)
r   r   r   figr   
default_rb	styled_rb
default_cb	styled_cbresult_afters
             r   test_save_blitted_widget_as_pdfrO      sd   =C)+3EEDEllq&1vGC bh9(=>J
48Y'$h/"$b+#(("3#."<>	I bh9(='+Tl4J
48Y't$h/"$b+#(("3#."<>y,78I tHy!tHz"JJOO	L/ 
s   ?D
D'kwargsTr   )useblitbutton
   pixels)minspanxminspany
spancoords)fillpropsc                    [         R                  " [        S S9n[        R                  " U 4SU0UD6n[
        R                  " SU SS5      R                  5         [
        R                  " SU SS5      R                  5         [
        R                  " SU S	S5      R                  5         UR                  S
S 5      S;  a%  [        UR                  / SQ/ SQ/UR                  S9  UR                  5         UR                  u  u  pEnUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eU0 :X  d   eg )Nspecreturn_valueonselectbutton_press_eventd   rb   r   motion_notify_event   re   button_release_event   rh   drawtype)linenone)      Y@rb   re   re   rb   )rb   re   re   rb   rb   )err_msgrb   re   )r   Mockr   widgetsRectangleSelectorr   _from_ax_coords_processgetr   geometryassert_called_once	call_argsxdataydata)r   rP   r_   toolepressereleases         r   test_rectangle_selectorr|   @   s1    yyd6H$$RE(EfED3RQGPPR4b*aHQQS5r:qIRRTzz*d#+;;324 $	/
 !!)!3!3V<<3<<3>>S   >>S   R<<r   rW   datazminspanx, x1      %@   zminspany, y1c           	         [         R                  " [        S S9nSu  pxUS:X  a;  U R                  R	                  X545      U R                  R	                  Xx45      -
  u  p$[
        R                  " XSUX$S9n	[        XU4X4S9  U	R                  (       a   eUR                  5         [        U	SSS9  U	R                  (       d   eUR                  5         UR                  5         [        XU4X54S9  U	R                  (       a   eUR                  5         UR                  u  u  pnU
R                  U:X  d   eU
R                  U:X  d   eUR                  U:X  d   eUR                  U:X  d   eU0 :X  d   eg )	Nr\   rS   rS   rT   T)r_   interactiverW   rU   rV   startendr'   r'      r   )r   rn   r   	transData	transformro   rp   r	   _selection_completedassert_not_calledru   
reset_mockrv   rw   rx   )r   rW   rU   x1rV   y1r_   x0y0ry   rz   r{   rP   s                r   test_rectangle_minspanr   ^   sf   
 yyd6HFBX ll44bX> ll44bX>? $$R0:.6KD 4BxbX6(((( 4xX6$$$$! 4BxbX6((((!!)!3!3V<<2<<2>>R>>RR<<r   zdrag_from_anywhere, new_center)<   K   Fr   r'   c                     [         R                  " U SUS9n[        USSS9  UR                  S:X  d   e[        USSS9  UR                  U:X  d   e[        US	S
S9  UR                  S:X  d   eg )NT)r   drag_from_anywherer   )Z   x   r   )2   A         #   r         r      )      )ro   rp   r	   center)r   r   
new_centerry   s       r   test_rectangle_dragr      s|     $$RT8JLD 4xY7;;(""" 4xX6;;*$$$ 4zz:;;*$$$r   c           	      ^   [         R                  " U S[        SSS9[        SS9S9n[        USS	S
9  UR                  nUR                  5       [        R                  " SSS9:X  d   eUR                  SSS9  UR                  5       [        R                  " SSS9:X  d   eUR                   H/  nUR                  5       S:X  d   eUR                  5       S:X  a  M/   e   UR                  SSS9  UR                   H/  nUR                  5       S:X  d   eUR                  5       S:X  a  M/   e   g )NTb皙?r/   alpha      ?r   )r   rZ   handle_propsr   rS   rb   r   r   r333333?black)markeredgecolorr   )ro   rp   dictr	   _selection_artistget_facecolormcolorsto_rgba	set_props_handles_artistsget_markeredgecolor	get_alphaset_handle_propsr   ry   artists      r   .test_rectangle_selector_set_props_handle_propsr      s&   $$RT+/#S+I26S/CD 4wJ7##F!W__S%DDDDNNSN,!W__S%DDDD''))+w666!S((( ( 	#S9''))+s222!S((( (r   c                    [         R                  " U SS9n[        USSS9  UR                  S:X  d   eUR                  nUS   US   pCUS	-   US
-   pe[        XU4XV4S9  UR                  US   XRS   U4:X  d   eUR                  nUS   US   US   US   -
  S-  -   pCUS	-   Upe[        XU4XV4S9  UR                  US   XRS   US   4:X  d   eUR                  nUS   US   US   US   -
  S-  -   pCUS-   Upe[        XU4XV4S9  UR                  XRS   US   US   4:X  d   eUR                  nUS   US   pCUS-   US-   pe[        XU4XV4S9  UR                  XRS   XbS   4:X  d   eg )NTr   r   r   r   )      $@rl   r         ^@r      rS   r   r   r   r   r'   r   )ro   rp   r	   extents)r   ry   r   rw   rx   	xdata_new	ydata_news          r   test_rectangle_resizer      s   $$RT:D4xZ8<<5555 llG1:wqz5 2:uqyy4u~I3IJ<<GAJ	1:yIIII llG1:wqzWQZ'!*-D,II5 2:uy4u~I3IJ<<GAJ	1:wqzJJJJ llG1:wqzWQZ'!*-D,II5 2:uy4u~I3IJ<<Iqz71:wqzJJJJ llG1:wqz5 2:urzy4u~I3IJ<<Iqz9ajIIIIr   c                    [         R                  " U SS9n[        USSS9  [        R                  " [
        5         UR                  S5        S S S 5        [        R                  " [
        5         UR                  S5        S S S 5        UR                  S5        UR                  S	5        UR                  S
5        g ! , (       d  f       Nv= f! , (       d  f       NS= f)NTr   F   r   }      r   unsupported_stateclearmovesquarer   )ro   rp   r	   r?   raises
ValueError	add_stater   ry   s     r   test_rectangle_add_stater      s    $$RT:D4xZ8	z	"*+ 
# 
z	"w 
#NN6NN8NN8 
#	" 
#	"s   B=/C=
C
Cr   c                    [         R                  " U SS9n[        USSS9  UR                  S:X  d   eU(       a  UR	                  S5        S nOSnUR                  nUS	   US
   peSu  pxXW-   Xh-   p[        X%U4X4US9  UR                  US   U-
  U	US   U-
  U
4:X  d   eUR                  nUS	   US   US
   US   -
  S-  -   peSnXW-   Up[        X%U4X4US9  UR                  US   U-
  U	US   US
   4:X  d   eUR                  nUS	   US   US
   US   -
  S-  -   peSnXW-   Up[        X%U4X4US9  UR                  US   U-
  U	US   US
   4:X  d   eUR                  nUS   US   US
   US   -
  S-  -   peSnXW-   Up[        X%U4X4US9  UR                  XS	   U-
  US   US
   4:X  d   eUR                  nUS   US   US
   US   -
  S-  -   peSnXW-   Up[        X%U4X4US9  UR                  XS	   U-
  US   US
   4:X  d   eUR                  nUS   US   peSu  pxXW-   Xh-   p[        X%U4X4US9  UR                  XS	   U-
  XS
   U-
  4:X  d   eg )NTr   r   r   r   )     Q@     @_@     @P@g     @`@r   controlr   r   rS   r   r   r   keyr   r   rS   r   r'   r   ro   rp   r	   r   r   r   r   ry   use_keyr   rw   rx   xdiffydiffr   r   s              r   test_rectangle_resize_centerr      s\   $$RT:D4xZ8<<5555x  llG1:wqz5LE =%-y4u~I3I <<GAJ.	#AJ.	; ; ; ; llG1:wqzWQZ'!*-D,II5E =%y4u~I3I <<GAJ.	#AJ
4 4 4 4 llG1:wqzWQZ'!*-D,II5E =%y4u~I3I <<GAJ.	#AJ
4 4 4 4 llG1:wqzWQZ'!*-D,II5E =%y4u~I3I <<IqzE'9#AJ
4 4 4 4 llG1:wqzWQZ'!*-D,II5E =%y4u~I3I <<IqzE'9#AJ
4 4 4 4 llG1:wqz5LE =%-y4u~I3I <<IqzE'9%qzE'9; ; ; ;r   c                    [         R                  " U SS9n[        USSS9  UR                  S:X  d   eU(       a  UR	                  S5        S nOSnUR                  nUS	   US
   peSu  pxXW-   Xh-   p[        X%U4X4US9  UR                  US   U	US   US
   U-   4:X  d   eUR                  nUS	   US   US
   US   -
  S-  -   peSnXW-   Up[        X%U4X4US9  UR                  US   U	US   US
   U-   4:X  d   eUR                  nUS	   US   US
   US   -
  S-  -   peSnXW-   Up[        X%U4X4US9  UR                  US   U	US   US
   U-   4:X  d   eUR                  nUS   US   US
   US   -
  S-  -   peSnXW-   Up[        X%U4X4US9  UR                  XS	   US   US
   U-
  4:X  d   eUR                  nUS   US   US
   US   -
  S-  -   peSnXW-   Up[        X%U4X4US9  UR                  XS	   US   US
   U-
  4:X  d   eUR                  nUS   US   peSu  pxXW-   Xh-   p[        X%U4X4US9  UR                  US   U-   US	   XS
   4:X  d   eg )NTr   r   r   s   r   r   r   r   g     \@r   shiftr   r   r   r   r   r   rS   r   r   r   r   r   r   s              r   test_rectangle_resize_squarer   -  s\   $$RT:D4xZ8<<5555x  llG1:wqz5LE =%-y4u~I3I <<GAJ	#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5E =%y4u~I3I <<GAJ	#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5E =%y4u~I3I <<GAJ	#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5E =%y4u~I3I <<Iqz#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5E =%y4u~I3I <<Iqz#AJ
U(:< < < < llG1:wqz5LE =%-y4u~I3I <<GAJ.
%qz3 3 3 3r   c                 2   [         R                  " U SS9n[        USSS9  UR                  S5        UR                  S5        [	        UR
                  S5        UR
                  nUS	   US
   pCSu  pVX5-   XF-   p[        XU4Xx4S9  [	        UR
                  US   U-
  UUS   U-
  US
   U-   45        UR
                  nUS	   US   US
   US   -
  S-  -   pCSnX5-   Up[        XU4Xx4S9  [	        UR
                  US   U-
  UUS   U-
  US
   U-   45        UR
                  nUS	   US   US
   US   -
  S-  -   pCSnX5-   Up[        XU4Xx4S9  [	        UR
                  US   U-
  UUS   U-
  US
   U-   45        UR
                  nUS   US   US
   US   -
  S-  -   pCSnX5-   Up[        XU4Xx4S9  [	        UR
                  XrS	   U-
  US   U-   US
   U-
  45        UR
                  nUS   US   US
   US   -
  S-  -   pCSnX5-   Up[        XU4Xx4S9  [	        UR
                  XrS	   U-
  US   U-   US
   U-
  45        UR
                  nUS   US   pCSu  pVX5-   XF-   p[        XU4Xx4S9  [	        UR
                  US   U-   US	   U-
  XS
   U-
  45        g )NTr   r   r   r   r   r   r   r   r   r   r   r   rS   r   r   r   r   )ro   rp   r	   r   r   r   )	r   ry   r   rw   rx   r   r   r   r   s	            r   #test_rectangle_resize_square_centerr   w  sQ   $$RT:D4xZ8NN8NN8DLL"<= llG1:wqz5LE =%-y4u~I3IJDLL71:#5y#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5E =%y4u~I3IJDLL71:#5y#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5E =%y4u~I3IJDLL71:#5y#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5E =%y4u~I3IJDLL9aj5.@#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5E =%y4u~I3IJDLL9aj5.@#*1:#5wqzE7I#K L llG1:wqz5LE =%-y4u~I3IJDLL71:#5wqzE7I#,aj5.@#B Cr   selector_classc                    U" U SS9n[        USSS9  UR                  S:X  d   e[        UR                  5      S:X  d   e[	        SU R
                  R                  S	5      R                  5         UR                  S
1:X  d   e[        UR                  5      S:X  d   e[        USSS9  [	        SU R
                  R                  S	5      R                  5         [        UR                  5      S:X  d   eUR                  S:X  d   e[        UR                  SSS9  SUl	        UR                  S:X  d   e[        UR                  [        R                  " / SQ/ SQ/5      SS9  [        USSS9  [        UR                  SSS9  U[        R                  :X  a5  [        R                   " ["        5         SUR$                  l        S S S 5        g g ! , (       d  f       g = f)NTr   ra   r      r   rb   r   rb   r   r   key_press_eventr   rotater   )r      g(\9@g{Gz?atol-   )gR]@     xa@g=
ףp[@g     V@)g     W@g=
ףp]@g     b@g(\^@)n   r   )r     )rb   r  rb   g
ףp=b@unvalid_value)r	   r   len_stater   figurerD   rr   r   rotationcornersnparrayro   rp   r?   r   r   r   rotation_point)r   r   ry   s      r   test_rectangle_rotater    s    "$/D4zz:<<////t{{q    		 0 0#6??A;;8*$$$t{{q   4zz:		 0 0#6??At{{q   <<////DMM5t4DM==BDLLHH==? @FJL
 4zz:DLL"<4H222]]:&4CD""1 '& 3&&s   /G
Gc                 `   [         R                  " U SS9n[        USSS9  UR                  S:X  d   e[	        UR
                  5      S:X  d   eS H[  nUR                  U5        [	        UR
                  5      S	:X  d   eUR                  U5        [	        UR
                  5      S:X  a  M[   e   g )
NTr   ra   r   r   r   r   )r   r   r   r   )ro   rp   r	   r   r  r  r   remove_state)r   ry   states      r   test_rectangle_add_remove_setr    s    $$RT:D4zz:<<////t{{q   /u4;;1$$$% 4;;1$$$	 0r   use_data_coordinatesc                 |   U R                  S5        [        R                  " U SUS9n[        USSS9  UR                  S:X  d   eUR                  S5        UR                  S	5        U(       at  UR                  nUS
   US   US
   US   -
  penSUS   US   US   -
  S-  -   pXG-   UpUS-  U-   n[        X$U4X4S9  [        UR                  US   U-
  U	X-
  X-   /5        g UR                  nUS
   US   pTSnXG-   UpUS
-  UR                  -  n[        X$U4X4S9  [        UR                  US   U-
  U	SS/5        g )N皙?T)r   r  r   r   r   r   r   r   r   r   r   rS   r   g      G@g     `@)
set_aspectro   rp   r	   r   r   r   _aspect_ratio_correction)r   r  ry   r   rw   rx   widthr   ycenterr   r   ychanges               r   *test_rectangle_resize_square_center_aspectr    st   MM#$$RT:NPD 4xZ8<<5555NN8NN8,,%aj'!*gaj71:6MegajGAJ,Cq+HHw$}e9!)e#t5>	7MNwqzE'99'.'8':K'M 	N ,,qz71:u$}e9!)d;;;t5>	7MNwqzE'99',f'6 	7r   c                      [         R                  " 5       u  p[        R                  " [        SS9   [
        R                  " USS9  SSS5        g! , (       d  f       g= f)zM
Test that an unraisable exception is not created when initialization
fails.
z'unexpected keyword argument 'undefined'matchbar)	undefinedN)rA   rB   r?   r   	TypeErrorro   ButtonrI   r   s     r   "test_axeswidget_del_on_failed_initr$    s;     llnGC	y(Q	RrU+ 
S	R	Rs   A
Ac                 *   [         R                  " U SSS9nSUl        [        USSS9  UR                  S:X  d   e[        US	SS
S9  UR                  S:X  d   e[        USSSS9  UR                   Vs/ s H  n[	        U5      PM     nnU/ SQ:X  d   e[        US	SSS9  UR                   Vs/ s H  n[	        U5      PM     nnU/ SQ:X  d   eUR
                  R                  S:X  d   e[        UR
                  SS2S4   SS/5        gs  snf s  snf )z'For ellipse, test out the key modifiersrS   T)
grab_ranger   rb      rb   r(  r   r   )r   r   r   )r      r   r*  ra   r   r   )r   r   r   r   r   )r   r   r   )rS   r   rS   r   r   z
ctrl+shift)r   r   r   r   )r   I   Nr   r   rb   )ro   EllipseSelectorr   r	   intrt   shaper   )r   ry   er   s       r   test_ellipser0    s   ""2"$GD'DL 4zz:<<//// 4zzyI<<---- 4xX7C#||,|!s1v|G,&&&& 4zz|L#||,|!s1v|G,((((==')))DMM!Q$'#s4 -
 -s   3D.Dc                    [         R                  " U SSSSS.S9nSUl        [        UR                  S5        UR                  S:X  d   e[        UR
                  S	5        UR                  S:X  d   e[        US
SS9  UR                  S:X  d   e[        USSS9  UR                  S:X  d   e[        USS
S9  UR                  S:X  d   e[        R                  " UR                  R                  S   R                  5       S5      (       d   e[        R                  " UR                  R                  S   R                  5       S5      (       d   eg )NrS   Tr   r   )markerfacecolorr   )r&  r   r   r'  ))rb   r(  r(  rb   )rb   rb   r(  r(  ))rb   r   r(  r   )r   rb   r   r(  ra   )r   r   r   )r   r(  r   r(  )   r3  )l      r4  r5  r   )rS   rb   rS   rb   r   )ro   rp   r   r   r
  edge_centersr	   r   
same_color_corner_handlesartistsget_markerfacecolorr   r   s     r   test_rectangle_handlesr;  .  s\   $$RBDFIFI3KLD (DLDLL"NO<<////D%%HJ<<//// 4zz:<<//// 4zz:<<//// 4xZ8<<---- $$Q';;=sD D D D$$Q';;=sD D D Dr   r   c                    [         R                  " [        S S9n[        R                  " XUS9n[        USSS9  UR                  5         UR                  S:X  d   eUR                  5         [        USSS9  UR                  5         g )Nr\   )r_   r   rb   r  r(  r   r   rl        b@g     [@r   rS   rb   )	r   rn   r   ro   rp   r	   ru   r   r   r   r   r_   ry   s       r    test_rectangle_selector_onselectrC  M  su     yyd6H$$RTD4zz:!<<77774yi8!r   ignore_event_outsidec                    [         R                  " [        S S9n[        R                  " XUS9n[        USSS9  UR                  5         UR                  S:X  d   eUR                  5         [        USSS9  U(       a#  UR                  5         UR                  S:X  d   eg UR                  5         UR                  S	:X  d   eg )
Nr\   )r_   rD  r=  r>  r   r?  r(  r(  r  r  )r@        d@r@  rH  )
r   rn   r   ro   rp   r	   ru   r   r   r   )r   rD  r_   ry   s       r   &test_rectangle_selector_ignore_outsiderI  ^  s    yyd6H$$R:NPD4zz:!<<77774zz:""$||;;;; 	##%||;;;;r   z$orientation, onmove_callback, kwargs
horizontal)minspanrQ   vertical)rR   r   c                   ^	^
 U R                  S5        U R                  5         U R                  / SQSSS9nX4 H  n/ m
U
4S jn/ m	U	4S jnU(       a  XsS'   [        R                  " XVU40 UD6n[
        R                  " SUS	S
5      R                  5         [
        R                  " SUSS
5      R                  5         [
        R                  " SUSS
5      R                  5         [        T
S/SS9  U(       d  M  [        T	S/SS9  M     g )Nauto)r   r   r   r   )r      xlimylimc                  (   > TR                  U 5        g r   append)argsselecteds    r   r_   $test_span_selector.<locals>.onselect  s    X__T2r   c                  (   > TR                  U 5        g r   rT  )rV  moveds    r   onmove"test_span_selector.<locals>.onmove  s    5<<-r   onmove_callbackr`   ra   r   rc   rd   rf   rg   )rb   re   r   r   )	r  twinx
inset_axesro   SpanSelectorr   rq   rr   r   )r   orientationr]  rP   childtargetr_   r[  ry   rZ  rW  s            @@r   test_span_selectorrd  u  s     MM&HHJMM,XHMEE+2-(.$%##FkLVL"" &*a	99A""!6:q	::B(*"""FJ	;;C8: 	:,R8?EJ<b9) r   c                    [         R                  " [        S S9n[        R                  " XSUS9n[        USSS9  UR                  5         UR                  S:X  d   eUR                  5         [        USSS9  UR                  5         g )	Nr\   rJ  r   ra   )r(  rb   r   )rb   r(  rA  )	r   rn   r   ro   r`  r	   ru   r   r   rB  s       r   test_span_selector_onselectrf    sy    yyd6Hl,79D 4zz:!<<:%%%4yi8!r   c                 >   [         R                  " [        S S9n[         R                  " [        S S9n[        R                  " XSUUS9n[        USSS9  UR                  5         UR                  5         UR                  S:X  d   eUR                  5         UR                  5         [        USS	S9  U(       a3  UR                  5         UR                  5         UR                  S:X  d   eg UR                  5         UR                  5         UR                  S
:X  d   eg )Nr\   rJ  )r]  rD  ra   r)  r   rb   r   rF  rG  )r(  r  )
r   rn   r   ro   r`  r	   ru   r   r   r   )r   rD  r_   r[  ry   s        r   !test_span_selector_ignore_outsideri    s    yyd6HYYDt4Fl065IKD 4zz:!
<<:%%%
4zz:""$  "||z))) 	##%!!#||z)))r   r   c                    [         R                  " U [        SSUS9n[        USSS9  UR                  S:X  d   e[        USS	S9  U(       a  UR                  S
:X  d   eOUR                  S:X  d   e[        USSS9  UR                  S:X  d   eg )NrJ  T)r_   	directionr   r   r   r   r   rA  r   r   )r'   r  )r   r   r   r   )ro   r`  r   r	   r   )r   r   ry   s      r   test_span_selector_dragrl    s     T\,03EGD 4xZ8<<9$$$ 4xX6||y(((||x''' 4zz:<<:%%%r   c                    [         R                  " U [        SSS9nUR                  S:X  d   eUR                  R                  S:X  d   e[
        R                  " [        5         [         R                  " U [        SS9nS S S 5        SUl        UR                  S:X  d   eUR                  R                  S:X  d   e[
        R                  " [        5         SUl        S S S 5        g ! , (       d  f       Nn= f! , (       d  f       g = f)NrJ  T)r_   rk  r   invalid_direction)r_   rk  rL  invalid_string)ro   r`  r   rk  _edge_handlesr?   r   r   r   s     r   test_span_selector_directionrq    s    T\,02D>>\)))''<777	z	"##B.AC 
#  DN>>Z''''':555	z	") 
#	" 
#	" 
#	"s   $C'C8'
C58
Dc                 j   [         R                  " U [        SS[        SSS9[        SS9S9n[	        US	S
S9  UR
                  nUR                  5       [        R                  " SSS9:X  d   eUR                  SSS9  UR                  5       [        R                  " SSS9:X  d   eUR                   H/  nUR                  5       S:X  d   eUR                  5       S:X  a  M/   e   UR                  SSS9  UR                   H/  nUR                  5       S:X  d   eUR                  5       S:X  a  M/   e   g )NrJ  Tr   r   r   r   r   )r_   rk  r   rZ   r   r   r   r   r   r   r)   r   )ro   r`  r   r   r	   r   r   r   r   r   r   	get_colorr   r   r   s      r   )test_span_selector_set_props_handle_propsru    s*   T\,0&*S&D-1_>D
 4wJ7##F!W__S%DDDDNNSN,!W__S%DDDD''!S(((!S((( ( 	3/''!S(((!S((( (r   selectorspan	rectanglec                    [        U SS9nUS:X  a  [        R                  nSUS'   [        US'   O[        R                  nU" S0 UD6n[        USSS	9  [        US
S
S	9  UR                  (       a   eSUS'   U" S0 UD6nUR                  (       d   e[        USSS	9  [        US
S
S	9  UR                  (       d   e[        SU R                  R                  S5      R                  5         UR                  (       a   eg )NT)r   r   rw  rJ  rk  r_   r   r   r   )r   r   rD  r   escaper   )r   ro   r`  r   rp   r	   r   rD  r   r  rD   rr   )r   rv  rP   Selectorry   s        r   test_selector_clearr|    s    RT*F6''*{!z,,fD4xZ8 4zz:((((%)F!"fD$$$$4xZ8 4zz:$$$$		 0 0(;DDF(((((r   c                    US:X  a  [         R                  " U [        SSSS9nO[         R                  " U SS9n[	        USSS9  UR
                  (       d   eUR                  5       (       d   eUS:X  a  UR                  S	:X  d   eUR                  5         UR
                  (       a   eUR                  5       (       a   e[	        USS
S9  UR
                  (       d   eUR                  5       (       d   eUS:X  a  UR                  S:X  d   eg g )Nrw  rJ  T)r_   rk  r   rD  r   r   r   r   rA  )r   r   )rS   r   )	ro   r`  r   rp   r	   r   get_visibler   r   )r   rv  ry   s      r   test_selector_clear_methodr  )  s   6##B049=? ((>4xZ8$$$$6||y(((JJL((((!!!! 4xY7$$$$6||x''' r   c                    [         R                  " U [        SSS9n[        R                  " [
        5         UR                  S5        S S S 5        [        R                  " [
        5         UR                  S5        S S S 5        [        R                  " [
        5         UR                  S5        S S S 5        UR                  S5        g ! , (       d  f       N= f! , (       d  f       Ne= f! , (       d  f       NB= f)NrJ  Tr   r   r   r   r   )ro   r`  r   r?   r   r   r   r   s     r   test_span_selector_add_stater  C  s    D,,02D 
z	"*+ 
#	z	"x  
#	z	"x  
# 	NN6 
#	"	"	"	"	"s#   C
*CC,

C
C),
C:c                    / SQn[         R                  " XSSS9nUR                   H1  nUR                  5       (       a   eUR	                  5       (       d  M1   e   UR                  S5        UR                  S5        UR                   H1  nUR                  5       (       d   eUR	                  5       (       a  M1   e   UR                  U:X  d   eg )N)r'   r   r   rJ  FrQ   T)ro   ToolLineHandlesr9  get_animatedr~  set_visibleset_animated	positions)r   r  tool_line_handler   s       r   test_tool_line_handler  Q  s    I..rl7<> #**&&((((%%'''' +   &!!$'"**""$$$$!!#### + %%222r   rk  )rJ  rL  c                    [         R                  " SS5      u  pUR                  SS/SS/5        UR                  R	                  5         UR                  5       nUR                  5       n[        R                  " U[        U SS9nUR                  5       U:X  d   eUR                  5       U:X  d   eU S:X  a  UOUnUR                  R                  [        U5      :X  d   eSnS	nUn	[        XWUS
9  UR                  5       U:X  d   eUR                  5       U:X  d   eU S:X  a  SOSn
Xz   X   /nUR                  R                  U:X  d   eg )Nr   rS   r'   r   Tr   rJ  )r~   g      '@)r      r   r   )rA   rB   plotrD   rE   
get_xbound
get_yboundro   r`  printrp  r  listr	   )rk  rI   r   x_boundy_boundry   bound
press_data	move_datarelease_dataindexhandle_positionss               r   test_span_selector_boundr  d  s3   ll1a GCGGRHr2hJJOOmmoGmmoGE9$GD==?g%%%==?g%%% L0GgE''4;666JIL4y9==?g%%%==?g%%%l*AE")<+>?''+;;;;r   QtAgg)skip_on_importerrorc            
        ^^^ [         R                  " SS[         R                  -  S5      m[         R                  " T5      m[        R
                  " 5       u  pUR                  TTSS9u  nUR                  / SS9u  m[        R                  " S5        UR                  U5        U R                  R                  U R                  5        UUU4S jn[        R                  " XSUSSSS	9n[        R                  " S
USS5      R!                  5         [        R                  " SUSS5      R!                  5         UR#                  5       UT4:X  d   eUR$                  SL d   eTR$                  (       d   e['        TR)                  5       S5        UR+                  5         TR$                  SL d   e[        R                  " S
USS5      R!                  5         [        R                  " SUSS5      R!                  5         UR$                  SL d   eTR$                  (       d   e['        TR)                  5       S5        [        R                  " SUSS5      R!                  5         TR$                  SL d   eg)zACheck that the animated artists changed in callbacks are updated.r   r   rb   T)animated皙?c                    > [         R                  " TX45      u  p#TX# R                  5       nTR                  T[         R                  " TU5      5        g r   )r  searchsortedmeanset_data	full_like)vminvmaxindminindmaxvln2valuesxs        r   r  :test_span_selector_animated_artists_callback.<locals>.mean  sC    TL96!&&(QQ*+r   rJ  )rk  r]  r   r   rQ   r`   )r   r   r   rc   )r   r   FgSG-?)   r   r   gȄC(rf   N)r  linspacepisinrA   rB   r  pausedraw_artistrD   blitbboxro   r`  r   rq   rr   _get_animated_artistsstaler   	get_ydataupdate)rI   r   lnr  rw  r  r  r  s        @@@r   ,test_span_selector_animated_artists_callbackr    s    	Aq255y#&AVVAYFllnGC
''!Vd'
+CB7727%DC
 IIcNNN2JJOOCHH, L04,037(,	.D 3RCLLN4b&!DMMO%%'B944488u999CMMO%78KKM99 3RCLLN4b&!DMMO88u999CMMO%895r61ENNP99r   c                    S n[         R                  " XSS9nUR                  n[        R                  " SSS5      n[        R
                  " / SQ5      n[        R
                  " / SQ5      nU" XT5      n[        XV5        g )	Nc                      g r   r   )rV  s    r   r_   4test_snapping_values_span_selector.<locals>.onselect  s    r   rJ  )rk  r   r   r   )
gr  r   r   333333?ffffff??g
ףp=
@      @      @)
        r  r  r   r   r         ?r  r  r  )ro   r`  _snapr  r  r  r   )r   r_   ry   snap_functionsnap_valuesr  expects          r   "test_snapping_values_span_selectorr    sf     FDJJM++aB'KXXJKFXXJKF6/FF#r   c                   ^  U 4S jn[         R                  " S5      S-  n[        R                  " T USUS9nSUl        UR                  S:X  d   eS Ul        UR
                  b   eSUl        UR                  S:X  d   eg )Nc                    > STl         g )NT)_got_onselect)r  r  r   s     r   r_   )test_span_selector_snap.<locals>.onselect  s    r   r   r  rJ  )rk  r  )   r   )r&   $   )r  arangero   r`  r   r  )r   r_   r  ry   s   `   r   test_span_selector_snapr    s      ))B-!#KH,79DDL<<8###D###DL<<8###r   c                     [         R                  " U S SSS9nSUl        UR                  S:X  d   eUR                  (       d   eSnSn[	        XUS9  UR                  S:X  d   eg )	Nc                     g r   r   )ar   s     r   <lambda>,test_span_selector_extents.<locals>.<lambda>  s    r   rJ  T)rD  )r   rS   )      )r'   r  r   )ro   r`  r   r   r	   )r   ry   r  r  s       r   test_span_selector_extentsr    sn    
|$
D DL<<7"""$$$$ JL4|<<<7"""r   r$   r)   )rQ   rZ   c                 x   [         R                  " [        S S9n[        R                  " U 4SU0UD6n[
        R                  " SU SS5      R                  5         [
        R                  " SU SS5      R                  5         [
        R                  " SU S	S5      R                  5         UR                  / S
Q5        g )Nr\   r_   r`   ra   r   rc   r)  rf   rF  )ra   r)  rF  )	r   rn   r   ro   LassoSelectorr   rq   rr   assert_called_once_with)r   rP   r_   ry   s       r   test_lasso_selectorr    s     yyd6H  AhA&AD3RQGPPR4b*aHQQS5r:qIRRT$$%IJr   c           	         [         R                  " [        S S9n[        R                  " X[        SSS9S9nUR                  n[        R                  " UR                  5       S5      (       d   eUR                  5       S:X  d   eUR                  SSS9  [        R                  " UR                  5       S5      (       d   eUR                  5       S:X  d   eg )Nr\   r   r   rs  )r_   rZ   r   r   )r   rn   r   ro   r  r   r   r   r7  rt  r   r   )r   r_   ry   r   s       r   test_lasso_selector_set_propsr    s    yyd6H  '+#S'ACD ##Ff..0#6666$$$NNCN(f..0#6666$$$r   c                 ,   [         R                  " [        S S9n[        R                  " U SU5      nUR
                  n[        R                  " UR                  5       S5      (       d   eUR                  5       S:X  d   eUR                  5       S:X  d   e[        R                  " U SU[        SSSSS	9S
9nUR
                  n[        R                  " UR                  5       S5      (       d   eUR                  5       S:X  d   eUR                  5       S:X  d   eUR                  5       S:X  d   eUR                  S5        UR                  S5        [        R                  " UR                  5       S5      (       d   eUR                  5       S:X  d   eg )Nr\   ra   r   -r   darkbluer   r   )	linestyler)   r   lwrY   r   r   )r   rn   r   ro   Lassorj   r   r7  rt  get_linestyleget_lwr   r   	set_color	set_alpha)r   r_   ry   rj   s       r   test_lasso_set_propsr    sT   yyd6H==Z2D99Ddnn.88883&&&;;=A==ZZsq:: ;D 99Ddnn.
;;;;>>s""";;=A3&&&NN3NN3dnn.4444>>s"""r   c                    Sn[         R                  " XS5      nUR                  5       / SQ:X  d   eUR                  S5        UR                  5       / SQ:X  d   eUR	                  5       S/:X  d   eUR                  5         UR                  5       / SQ:X  d   eUR	                  5       / :X  d   eS[        U5      [        U5      S-   4 H5  n[        R                  " [        5         UR                  US	9  S S S 5        M7     S
 H6  n[        R                  " [        5         UR                  SUS9  S S S 5        M8     UR                  S 5      nUR                  U5        g ! , (       d  f       M  = f! , (       d  f       M  = f)N)r  r   c)TFTr   )FFTr  )FFFr   )r  )invalidr  r   )r  c                      g r   r   r   r   r   r  #test_CheckButtons.<locals>.<lambda>)  s    4r   )ro   r   
get_status
set_activeget_checked_labelsr   r  r?   r   r   r!  
on_clicked
disconnect)r   labelscheckinvalid_indexinvalid_valuecids         r   test_CheckButtonsr    sP   F  -@AE!4444	Q!5555##%#...	KKM!6666##%+++c&k3v;q=9]]:&=1 '& : )]]9%Qm4 &% ) 

<
(C	S '& &%s   'E#"E5#
E2	5
F	toolbar)rk   toolbar2toolmanagerc                    [         R                  R                  SU5        [        R                  " [
        S S9n[        R                  " [
        S S9n[        R                  " U S5      nUR                  U5        UR                  U5        UR                  S:X  d   e[        R                  " SU SS5      R                  5         UR                  S5        UR                  S:X  d   eUR                  S:X  d   eUR!                  5         UR#                  5         UR                  S:X  d   e[        R                  " SU SS5      R                  5         [%        S	U R&                  R(                  S
5      R                  5         [%        S	U R&                  R(                  S5      R                  5         UR                  S:X  d   eg )Nr  r\    r`   r   r   r   zx**2r   r   +5r   )rA   rcParams_setr   rn   r   ro   TextBox	on_submiton_text_changetextr   rq   rr   set_val
call_countbegin_typingstop_typingr   r  rD   )r   r  submit_eventtext_change_eventry   s        r   test_TextBoxr  -  sb    LLi)99$T:L		t$???2r"DNN< )*99??3R1ENNPLL99''1,,,""a'''3R1ENNP		 0 0#6??A		 0 0#6??A''1,,,r   c                    [         R                  " U S5      nUR                  S5        UR                  S:X  d   eUR                  S:X  d   eUR                  5         UR                  S:X  d   eUR                  S:X  d   eg )NRadio 1Radio 2zRadio 3r   r  r  r   )ro   r   r  value_selectedindex_selectedr   )r   radios     r   test_RadioButtonsr  M  s|      %FGE	Q9,,,1$$$	KKM9,,,1$$$r   zcheck_radio_buttons.pngmpl20)styleremove_textc            
         [        5       n U R                  SS9nUR                  SS9  UR                  S5      n[        R
                  " US5      nUR                  S5      n[        R                  " USS	5      nUR                  S
5      n[        R
                  " US/ SQ/ SQS./ SQ/ SQS.S9nUR                  S5      n[        R                  " USS	/ SQ/ SQS./ SQ/ SQS.S/ SQ0S9n	g )NF)rootr   )left)皙?r  r   333333?r  )r!  r   r   r"  )zCheck 1zCheck 2zCheck 3)FTT)r!  r   r   r"  )   r  r&   )r$   greenblue)r*   r)   )r+   	palegreen	lightbluer-   r0   )r!  r  r   r"  r)   r1   r6   r7   )r
   
get_figuresubplots_adjustadd_axesro   r   r   )
r   rI   rax1rb1rax2cb1rax3rb3rax4cb4s
             r   test_check_radio_buttons_imager4  W  s    	B
--U-
#CS!<<./D


t%F
GC<<./D


t%F24C <<./D


/!,68":"IK	LC <<./D


/1D!,68":"IK679Cr   c                 Z   [         R                  " U R                  5       SS/5        UR                  / / S9nUR	                  SS/SS/UR
                  [        R                  S   S-  S-  S	S
/S9  UR                  SSSUR
                  SS9  UR                  SSSUR
                  SS9  g )Nteacoffeexticksyticksr"  UUUUUU?UUUUUU?	font.sizer   C0rk   )r   sr        ?r   r   va)	ro   r   rB   add_subplotscatter	transAxesrA   r  r  fig_testfig_refr   s      r   test_radio_buttonsrI  v  s    **,uh.?@			Br		2BJJSzC:,,{+a/A5$  IGGCer||GAGGCh",,8GDr   c                    S/S/S.nSSSS.n[         R                  " UR                  5       SS	/X#S
9  [         R                  " U R                  5       SS	/5      nUR                  U5        UR	                  0 UESS0E5        g )Nr$      r(   r$  r%  r   r/   r.   	linewidthr6  r7  r0   r?        b@)ro   r   rB   set_label_propsset_radio_props)rG  rH  r1   r2   cbs        r   test_radio_buttons_propsrR    s    "G"6K 'f1MK))+eX->%0K 
		h//1E83D	EB{# 8+8sK89r   zcheck_radio_grid_buttons.pngc                  "   [         R                  " 5       n [        R                  " U R	                  S5      / SQSSS9n[        R
                  " U R	                  S5      / SQS/ S	QS
9n[        R                  " U R	                  S5      / SQSSS9ng )N)r  r!  g?r!  )r6  r7  zchocolate milkwatersodacokerJ  r  )layoutactive)r  r"  r@  g433333?)ChickenSaladRiceSushiPizzaFries)r   r   )TTFFFT)rW  r3   )r  gffffff?r   r   )zTrinity CreamCakez	Ice Cream	MuhallebirL  r   )rA   r  ro   r   r+  r   )rI   rb_horizontalcb_gridrb_verticals       r   test_radio_grid_buttonsrd    s    
**,C((,-D	M ""./?7	G &&-.;	Kr   c                    [         R                  " [        SS9   [        R                  " U SS/SSS0S9nS S S 5        [
        R                  " WR                  R                  5       SS	/5      (       d   eg ! , (       d  f       NG= f)
Nz"Both the \*activecolor\* parameterr  r6  r7  r$   r/   r$  )activecolorr2   rk   )	r?   warnsUserWarningro   r   r   r7  _buttonsr   )r   rbs     r   !test_radio_button_active_conflictrk    sx    	kA
C!!"uh&7U/:G.DF
C
 bkk779GV;LMMMM
C 
Cs   A77
Bc                     [         R                  " UR                  5       SS/SS9  [         R                  " U R                  5       SS/SS9nSUl        g )Nr6  r7  r$  )rf  r$   )ro   r   rB   rf  )rG  rH  rQ  s      r   %test_radio_buttons_activecolor_changerm    sS    ))+eX->%,. 
		h//1E83D*/
1BBNr   c           	         [         R                  " U R                  5       SS/SS/5        UR                  / / S9nUR	                  SS/SS/SUR
                  [        R                  S	   S
-  S
-  SS/S9  UR	                  SS/SS/SUR
                  [        R                  S	   S
-  S
-  SS/S9  UR                  SSSUR
                  SS9  UR                  SSSUR
                  SS9  g )Nr6  r7  Tr8  r"  r;  r<  r?  r=  r   rk   )markerr   r?  r  r  kr@  r   rA  )	ro   r   rB   rC  rD  rE  rA   r  r  rF  s      r   test_check_buttonsrq    s    **,uh.?$N			Br		2BJJSzC:cR\\,,{+a/A5&&9I  KJJSzC:cR\\,,{+a/A5#s  EGGCer||GAGGCh",,8GDr   c           	      v   S/S/S.nSSSS.nSSS.n[         R                  " UR                  5       S	S
/SS/X#US9  [         R                  " U R                  5       S	S
/SS/5      nUR                  U5        UR	                  0 UESS0E5        UR                  S5      US'   UR                  0 UESS0E5        g )Nr$   rK  r(   r$  r%  r   rL  )r/   rM  r6  r7  Tr(  r?  rN  r/   r.   )ro   r   rB   rO  set_frame_propspopset_check_props)rG  rH  r1   r6   r7   rQ  s         r   test_check_button_propsrv    s    "G"6K 'f1MK %A6K))+eX->t%0%02 
		h//1E83D#Tl
,B{# 8+8sK89  +{;K8+8sK89r   widgetc           	      Z   [         R                  " [        SS9nU" U S/5      nUR                  U5        [        R
                  " SU U R                  R                  5       R                  U R                  R                  S5      5      S5      R                  5         UR                  5         g)zDTests what https://github.com/matplotlib/matplotlib/pull/31031 fixedNr\   zTest Buttonr`   )r"  r   r   )r   rn   r   r  r   rq   r   invertedr   rE  rr   ru   )r   rw  r  rR   s       r   test__buttons_callbacksrz    s     48JB(F
j!

))",,*@*@+
 	 	
 hj!!#r   c            	      b   [         R                  " 5       u  p[        R                  " [        5         [
        R                  " USSSSS9  S S S 5        [        R                  " [        5         [
        R                  " USSSSS9  S S S 5        g ! , (       d  f       NJ= f! , (       d  f       g = f)Nr  r        8@r   )r   labelvalminvalmax	slidermin)r   r}  r~  r  	slidermax)rA   rB   r?   r   r   ro   Sliderr#  s     r   'test_slider_slidermin_slidermax_invalidr    sv    llnGC	z	""Bs4!%	' 
# 
z	""Bs4!%	' 
#	" 
#	" 
#	"s   B-B 
B 
B.c            	      6   [         R                  " 5       u  p[        R                  " USSSSS9n[        R                  " USSSSUS9nUR                  UR                  :X  d   e[        R                  " USSSSUS	9nUR                  UR                  :X  d   eg )
Nr  r  r|  r  r   r}  r~  r  valinitr  )r   r}  r~  r  r  r  r   )r   r}  r~  r  r  r  rA   rB   ro   r  val)rI   r   slider_sliders       r   test_slider_slidermin_slidermaxr    s    llnGCnn"S%(*G ^^rC$'7<F::$$$^^rC$(G=F::$$$r   c                     [         R                  " 5       u  p[        R                  " USSSSS9nUR                  UR
                  :X  d   e[        R                  " USSSSS9nUR                  UR                  :X  d   eg )Nr  r  r|  g      $r  g      9@)rA   rB   ro   r  r  r~  r  rI   r   r  s      r   test_slider_valmin_valmaxr    sm    llnGC^^rC$)+F::&&&^^rC$(*F::&&&r   c            	          [         R                  " 5       u  p[        R                  " USSSSSS9nUR                  S:X  d   e[        R                  " USSSS/ SQS9nUR                  S	:X  d   eg )
Nr  r  r|  g&@r   )r   r}  r~  r  r  valstepr   )r   r   r  g333333@r  r  r  s      r   test_slider_valstep_snappingr    sk    llnGC^^rC$(!5F::^^rC$(2CEF::r   c            	         [         R                  " 5       u  p[        R                  " USSSSSS9nUR	                  S5        UR
                  S:X  d   eUR                  R                  5       R                  UR                  R                  5       5      n[        UR                  / SQ5        [         R                  " 5       u  p[        R                  " USSSSS	S9nUR	                  S5        UR
                  S:X  d   eUR                  R                  5       R                  UR                  R                  5       5      n[        UR                  / S
Q5        g )Nr  r   rK  r  rJ  )r   r}  r~  r  r  ra  rS   )r   r@  竪?r   rL  )r@  r   r   r  )rA   rB   ro   r  r  r  polyget_extentstransformedrE  ry  r   bounds)rI   r   r  boxs       r   test_slider_horizontal_verticalr    s   llnGC^^rAb$&LBF
NN2::
++
!
!
#
/
/0E0E0G
HCCJJ 34llnGC^^rAb$&J@F
NN2::
++
!
!
#
/
/0E0E0G
HCCJJ 34r   c                      [         R                  " 5       u  p[        R                  " USSSSS9nUR	                  S5        UR                  5         UR                  S:X  d   eg )Nr  r   r   r   r        ?)rA   rB   ro   r  r  resetr  r  s      r   test_slider_resetr  2  sL    llnGC^^rAaLF
NN4
LLN::r   ra  c           	      >  ^  T S:X  a  / SQnO/ SQn[         R                  " 5       u  p#[        R                  " USSST SS/S	9nUR                  R                  5       R                  UR                  R                  5       5      n[        UR                  5       R                  5       U   / S
Q5        [        UR                  S5        U 4S jnUR                  S5        [        UR                  S5        [        U" U5      S5        UR                  R                  5       R                  UR                  R                  5       5      n[        UR                  5       R                  5       U   / SQ5        UR                  S5        [        UR                  S5        [        U" U5      S5        UR                  S5        [        UR                  S5        [        U" U5      S5        UR                  5         [        UR                  S5        [        U" U5      S5        g )NrL  r   r   r   r   r   r   r   r   r  r  r  r  (\?r   r}  r~  r  ra  r  )r  r@  r  r  )r  r  c                    > TS:X  a-  U R                    Vs/ s H  oR                  5       S   PM     sn$ U R                    Vs/ s H  oR                  5       S   PM     sn$ s  snf s  snf )NrL  r   )_handlesr  	get_xdata)r  hra  s     r   r  +test_range_slider.<locals>.handle_positionsM  sW    *$.4oo>oKKM!$o>>.4oo>oKKM!$o>> ?>s   A"A')皙?r  )r  r@  r  r  )r   r  )r  r   )r  rS   r#   )rA   rB   ro   RangeSliderr  r  r  rE  ry  r   
get_pointsflattenr  r  r  )ra  idxrI   r   r  r  r  s   `      r   test_range_sliderr  :  s   j llnGC  RC[dF ++
!
!
#
/
/0E0E0G
HCCNN$,,.s35LM FJJ,? NN:FJJ
+$V,j9
++
!
!
#
/
/0E0E0G
HCCNN$,,.s35IJ
NN:FJJ
+$V,j9
NN8FJJ'$V,f5
LLNFJJ,$V,k:r   c           	      b   U S:X  a  / SQnO/ SQn[         R                  " 5       u  p#[        R                  " USSSU SS/S9nUR                  R                  5       R                  UR                  R                  5       5      n[        UR                  5       R                  5       U   / S	Q5        g )
NrL  r  r  r  r  r  r   r  )r   r@  r   r  )rA   rB   ro   r  r  r  r  rE  ry  r   r  r  )ra  r  rI   r   r  r  s         r   "test_range_slider_same_init_valuesr  g  s    j llnGC  bSkQF ++
!
!
#
/
/0E0E0G
HCCNN$,,.s35GHr   c                 4   [         R                  " [        SS9nU S   R                  R                  R
                  S   n[        R                  " U4SU0UD6nU  H  nUR                  5         M     UR                  U:X  d   eUR                  U40 4:X  d   eg)a  
Helper function to test Polygon Selector.

Parameters
----------
events : list[MouseEvent]
    A sequence of events to perform.
expected : list of vertices (xdata, ydata)
    The list of vertices expected to result from the event sequence.
selections_count : int
    Wait for the tool to call its `onselect` function `selections_count`
    times, before comparing the result to the `expected`
**kwargs
    Keyword arguments are passed to PolygonSelector.
Nr\   r   r_   )r   rn   r   rD   r  axesro   PolygonSelectorrr   r  rv   )eventsexpectedselections_countrP   r_   r   ry   events           r   check_polygon_selectorr  x  s      yyd6H				 	 	%	%a	(B""2CCFCD  "22228,!3333r   c                     [         R                  " SX5      [         R                  " SXS5      [         R                  " SXS5      /$ )Nrc   r`   r   rf   r   rq   r   xys     r   polygon_place_vertexr    C    ""#8"A""#7C""#921E r   c                     [         R                  " SX5      [         R                  " SXS5      [         R                  " SXS5      /$ )Nrc   r`   r   rf   r  r  s     r   polygon_remove_vertexr    r  r   draw_bounding_boxc                 p   [         R                  " [        US9n/ SQn/ [        U S5      Q[        U S5      Q[        U S5      Q[        U S5      QnU" XCS5        / SQn/ [        U S5      Q[        U S5      Q[	        SU R
                  R                  S	5      P[        R                  " S
U S5      P[        R                  " SU SS5      P[        R                  " S
U S5      P[        R                  " SU SS5      P[	        SU R
                  R                  S	5      P[        U S5      Q[        U S5      QnU" XCS5        / SQn/ [        U S5      Q[        U S5      Q[	        SU R
                  R                  S5      P[        R                  " S
U S5      P[        R                  " SU SS5      P[        R                  " S
U S5      P[        R                  " SU SS5      P[	        SU R
                  R                  S5      P[        U S5      Q[        U S5      QnU" XCS5        / SQn/ [        U S5      Q[        U S5      Q[        U S5      Q[        U S5      Q[        R                  " S
U S5      P[        R                  " SU SS5      P[        R                  " S
U S5      P[        R                  " SU SS5      PnU" XCS5        / SQn/ [        U S5      Q[        U S5      Q[        U S5      Q[        U S5      Q[	        SU R
                  R                  S5      P[        R                  " S
U S5      P[        R                  " SU SS5      P[        R                  " S
U S5      P[        R                  " SU SS5      P[	        SU R
                  R                  S5      PnU" XCS5        / SQn[	        SU R
                  R                  S	5      [        R                  " S
U S5      [        R                  " SU SS5      [        R                  " S
U S5      [        R                  " SU SS5      [	        SU R
                  R                  S	5      [	        SU R
                  R                  S5      [        R                  " S
U S5      [        R                  " SU SS5      [        R                  " S
U S5      [        R                  " SU SS5      [	        SU R
                  R                  S5      /[        U S5      Q[        U S5      Q[        U S5      Q[        U S5      QnU" XCS5        / SQn/ [        U S5      Q[        U S5      Q[	        SU R
                  R                  S5      P[	        SU R
                  R                  S5      P[        U S5      Q[        U S5      Q[        U S5      Q[        U S5      QnU" XCS5        g )Nr  r   r   r(  r   r   r(  r  r  r  r   )r   r   r  r  r   r   rc   r`   r  rf   key_release_event)r   r   )r(  r   r  r   ra   rh  r  )U   r   r  r  )r   r   r  r   ))r   r   )r   r   )r   r   r)  )rh   r   rz  )		functoolspartialr  r  r   r  rD   r   rq   )r   r  check_selectorexpected_resultevent_sequences        r   test_polygon_selectorr    sQ   &&2CEN 7O	b(	+	b)	, 
b)	, 
b(	+	N >A6 7O	b(	+	b)	, 	"BII$4$4i@ 	""#8"hG	
 	""#7XqI 	""#8"hG 	""#92xK 	$bii&6&6	B 
b)	, 
b(	+N >A6 7O	b(	+	b)	, 	"BII$4$4g> 	""#8"jI	
 	""#7ZK 	""#8"jI 	""#92z1M 	$bii&6&6@ 
b)	, 
b(	+N >A6 7O		b(	+		b)	,	 
b)	,	 
b(	+		
 	""#8"hG	 	""#7XqI	 	""#8"hG	 	""#92xK	N >A6 7O	b(	+	b)	, 
b)	, 
b(	+	
 	"BII$4$4g> 	""#8"jI 	""#7ZK 	""#8"jI 	""#92z1M 	$bii&6&6@N >A6 7O"BII$4$4i@""#8"jI""#7ZK""#8"jI""#92z1M$bii&6&6	B"BII$4$4g>""#8"jI""#7ZK""#8"jI""#92z1M$bii&6&6@ 
b(	+ 
b)	, 
b)	,  
b(	+!N$ >A6 7O		b(	+		b)	,	 	"BII$4$4h?	 	$bii&6&6A		
 
b(	+	 
b)	,	 
b)	,	 
b(	+	N >A6r   c                    [         R                  " U [        SSS9[        SS9US9n/ [        U S5      Q[        U S5      Q[        U S	5      Q[        U S5      Q H  nUR	                  5         M     UR
                  nUR                  5       S:X  d   eUR                  5       S:X  d   eUR                  S
SS9  UR                  5       S
:X  d   eUR                  5       S:X  d   eUR                   H/  nUR                  5       S:X  d   eUR                  5       S:X  a  M/   e   UR                  S
SS9  UR                   H/  nUR                  5       S
:X  d   eUR                  5       S:X  a  M/   e   g )Nr   r   rs  r   r   )rZ   r   r  r  r  r  r   r   )ro   r  r   r  rr   r   rt  r   r   r   r   )r   r  ry   r  r   s        r   ,test_polygon_selector_set_props_handle_propsr    s   ""2)-Cs)C0435FHD
	b(	+	b)	, 
b)	, 
b(	+	 	 ##F$$$$$$NNCN($$$$$$''!S(((!S((( ( 	3/''!S(((!S((( (r   c                     U R                  5       nUR                  5       n[        R                  " USS0S9nSUl        g )NvisibleFrY   )r   r  r   r  )rB   ro   rp   r   )rG  rH  ax_test_ry   s        r   test_rect_visibilityr  5  s>     !GA$$WY4FGD'DLr   r  )r   r   r   c                 H   / SQn[        XS   5      [        XS   5      [        XS   5      [        XS   5      /nUR                  U[        U S5      5        UR                  [        U S5      5        [        R
                  " [        R                  U/ 5      n[        XCSUS9  g )Nr  r   r   r   )rO  rO  r  )	r  insertrU  r  r  reduceoperatoriaddr  )r   r  r  vertsr  s        r   test_polygon_selector_remover  @  s     -E*2Qx8*2Qx8*2Qx8*2Qx8	:N #3B
CD/J?@%%hmm^RHN>!->@r   c                     / SQn/ [        XS   5      Q[        XS   5      Q[        XS   5      Q[        XS   5      Q[        XS   5      Qn[        X2SS  SUS9  g Nr  r   r   r   r  )r  r  r  )r   r  r  r  s       r   (test_polygon_selector_remove_first_pointr  S  s    ,E	b(	+	b(	+ 
b(	+ 
b(	+	
 
r8	,N >9a->@r   c                 X   / SQn/ [        XS   5      Q[        XS   5      Q[        XS   5      Q[        XS   5      Q[        XS   5      Q[        XS   5      Q[        XS   5      Qn[        R                  " XS9nU H  nUR	                  5         M     UR
                  USS :X  d   eg r  )r  r  ro   r  rr   r  )r   r  r  r  ry   r  s         r   test_polygon_selector_redrawr  a  s    ,E
	b(	+
	b(	+
 
b(	+
 
b(	+	
 
r8	,
 
r8	,
 
b(	+
N ""2KD   ::q###r   c                 n   / SQnU R                  5       n[        R                  " XBS9nX5l        UR                  U:X  d   eUR                  5       n[        R                  " XbS9n/ [	        XcS   5      Q[	        XcS   5      Q[	        XcS   5      Q[	        XcS   5      Q H  nUR                  5         M     g )N))r  r  )r   r  )r   r   r  r   r   r   )rC  ro   r  r  r  rr   )	rG  rH  r  r  r  	tool_testax_reftool_refr  s	            r   "test_polygon_selector_verts_setterr  x  s     1E""$G''UIO??e###  "F&&vSH	fAh	/	fAh	/ 
fAh	/ 
fAh	/	 	r   c                 \   U R                  SSS9  / SQn/ [        XS   5      Q[        XS   5      Q[        XS   5      Q[        XS   5      Q[        XS   5      Qn[        R                  " U SS	9nU H  nUR	                  5         M     [
        R                  " S
U SS5      R	                  5         [
        R                  " SU S5      R	                  5         [
        R                  " SU SS5      R	                  5         [        R                  R                  UR                  / SQ5        [
        R                  " S
U SS5      R	                  5         [
        R                  " SU S5      R	                  5         [
        R                  " SU SS5      R	                  5         [        R                  R                  UR                  / SQ5        [        R                  R                  UR                  R                  S5        [
        R                  " S
U SS5      R	                  5         [
        R                  " SU SS5      R	                  5         [        R                  R                  UR                  / SQ5        [        R                  R                  UR                  R                  S5        g )N)ir   rP  ))r'   r   )r   r'   )r'   (   )r  r'   r   r   r   r   Tr  r`   )r  r  rc   r   rf   ))rS   r   r   )rS   r'   )r'   rS   r   r   )r   r'   r   r   r  r  r   )      4@      D@r  r  r   )r  r  r  )r  r  g      >@r  )setr  ro   r  rr   r   rq   r  testingr   r  _boxr   )r   r  r  ry   r  s        r   test_polygon_selector_boxr    s-   FF		F*2E	b(	+	b(	+ 
b(	+ 
b(	+	
 
b(	+N ""2>D   3R1ENNP4b(CLLN5r8QGPPRJJ

:< 3R1ENNP4b(CLLN5r8QGPPRJJ

<> JJ		35 3R1ENNP5r8QGPPRJJ

24JJ		35r   c           	         [        SS9n[        SSSS9n[        SSSS	9n[        S
S9n[        R                  " U SXX4S9n/ [        U S5      Q[        U S5      Q[        U S5      Q[        U S5      Q H  nUR	                  5         M     UR
                  n[        R                  " UR                  5       S5      (       d   eUR                   Hq  nUR                  5       S:X  d   e[        R                  " UR                  5       S5      (       d   e[        R                  " UR                  5       S5      (       a  Mq   e   UR                  R
                  nUR                  5       S:X  d   e[        R                  " UR                  5       S5      (       d   e[        R                  " UR!                  5       S5      (       d   eUR                  R                   Hq  nUR                  5       S:X  d   e[        R                  " UR                  5       S5      (       d   e[        R                  " UR                  5       S
5      (       a  Mq   e   g )Nr   r  ow)ro  r2  r   :r  r   )r  r/   r.   y)r   T)r  rZ   r   	box_propsbox_handle_propsr  r  r  )r   ro   r  r  rr   r   r   r7  rt  r   
get_markerr:  r   r  r  r   get_edgecolor)	r   rZ   r   r  r  ry   r  r   
box_artists	            r   ,test_polygon_selector_box_props_handle_propsr    s   sOEsCMLscSAIC0""
d@D
	b(	+	b)	, 
b)	, 
b(	+	 	 ##Ff..0#6666''  "c)))!!&"<"<">DDDD!!&"<"<">DDDD (
 ,,J##%,,,j668#>>>>j668#>>>>)),,   "c)))!!&"<"<">DDDD!!&"<"<">DDDD -r   c                    [         R                  " [        S S9n[        R                  " X5      n/ SQ/ SQ4 GH  nU H%  n[        X5       H  nUR                  5         M     M'     UR                  nUR                  (       d   eUR                  5       (       d   eUR                  5       (       d   e[        R                  R                  UR                  5       U5        UR                  US S 40 4:X  d   eUR                  5         UR                  (       a   e[        R                  R                  UR                  5       S/5        GM     g )Nr\   )r  r  r  r  )r  )rb   r   r  r  r  r    )r   rn   r   ro   r  r  rr   r   r   r~  r  r  assert_equal
get_xydatarv   r   )r   r_   ry   resultr  r  r   s          r   "test_polygon_selector_clear_methodr    s   yyd6H""20D==?B-b5  6  ''((((!!!!!!####


 1 1 3V<!!vcr{nb%9999

,,,,


 1 1 3fX>!?r   horizOnvertOnwith_deprecated_canvasc           	      &   [         R                  " 5       nUR                  SSS9u  pE[         R                  " 5       R                  5       nU(       aE  [        R                  " [
        R                  SS9   [        R                  " S XF4SXS9nS S S 5        O[        R                  " XF4SXS9n[        WR                  5      S:X  d   e[        UR                  5      S:X  d   e[        R                  " SUS	5      R                  5         UR                  R!                  5         UR                   H  nUR#                  5       S
:X  a  M   e   UR                   H  nUR%                  5       S:X  a  M   e   [        UR                   V	s/ s H  oR'                  5       (       d  M  U	PM     sn	5      U(       a  SOS:X  d   e[        UR                   V	s/ s H  oR'                  5       (       d  M  U	PM     sn	5      U (       a  SOS:X  d   eUR(                  (       + Ul        UR*                  (       + Ul        [        R                  " SUS	5      R                  5         [        UR                   V	s/ s H  oR'                  5       (       d  M  U	PM     sn	5      U(       a  SOS:X  d   e[        UR                   V	s/ s H  oR'                  5       (       d  M  U	PM     sn	5      U (       a  SOS:X  d   e[        R                  " SUS5      R                  5         UR                   H  nUR#                  5       S
:X  a  M   e   UR                   H  nUR%                  5       S:X  a  M   e   g ! , (       d  f       GN= fs  sn	f s  sn	f s  sn	f s  sn	f )Nr   T)sharexzcanvas.*deprecatr  F)rQ   r  r  rc   )r   r@  r  )r@  r@  r   )r  r  )rA   r  rB   r?   rg  mplMatplotlibDeprecationWarningro   MultiCursorr  vlineshlinesr   rq   rr   rD   rE   r  r  r~  r  r  )
r  r  r  rI   ax1ax3ax2multilrj   s
             r   test_MultiCursorr    s    **,Ca-JS
**,


!C\\#::BUV''sj%E WV ##Jw

 u||!!!u||!!!4c9ENNPJJOO \\{{}((( \\{{}
***  D1A1A1CDE  D1A1A1CDE!   %EM||#EL4c9ENNPD1A1A1CDE  D1A1A1CDE!  
 4c:FOOQ\\{{}((( \\{{}
*** W WV0 ED EDs<   5M-	M?%M?N0N1N	N	<NN-
M<c                     [         R                  " SS5      u  n u  p[        R                  " USS/S5      n[        R                  " USS/SS/5      nUR                  5         UR                  5         [        R                  " 5        nU R                  USS	9  S S S 5        U R                  5       n[        S
U R                  U5      nUR                  U5        UR                  U5        g ! , (       d  f       NX= f)Nr   r   12r   TFrawr;   
draw_event)rA   rB   ro   r   r   removerF   rG   rH   _get_rendererr   rD   _clear)rI   ax_radio	ax_checksr  checksoutrendererevts           r   test_parent_axes_removalr#  -  s    !$a!3C	(  C:q9E!!)c3Z$GFOO	C& 
   "H
L#**h
7C	LL
MM# 
s   C++
C9c                  0   [         R                  " 5       n U R                  / SQ5      nU R                  / SQ5      nSn[        R                  " [
        US9   [        R                  " USS9nSSS5        WR                  SL d   eg! , (       d  f       N = f)	zKTest that a warning is raised and useblit is disabled for overlapping axes.)r  r  r  r  )r   r   r  r  z>Cursor blitting is currently not supported on overlapping axesr  Tr  NF)	rA   r  r+  r?   rg  rh  ro   CursorrQ   )rI   r  r  
match_textcursors        r   -test_cursor_overlapping_axes_blitting_warningr(  D  sw    
**,C
,,+
,C
,,+
,C	  
k	4T2 
5 >>U""" 
5	4s   B
B)qr  rF   r  unittestr   
matplotlibr
  matplotlib.backend_basesr   r   r   matplotlib.colorscolorsr   r=   ro   matplotlib.pyplotpyplotrA   matplotlib.testing.decoratorsr   r   matplotlib.testing.widgetsr	   r
   r   numpyr  numpy.testingr   r?   fixturer   rO   markparametrizer   r|   r   r   r   r   r   r   r   r   rp   r,  r  r  r  r$  r0  r;  rC  rI  rd  rf  ri  rl  rq  ru  r|  r  r  r  r  backendr  r  r  r  r  r  r  r  r  r  r4  rI  rR  rd  rk  rm  rq  rv  r   r   rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r(  r   r   r   <module>r8     s    	    D D # $  O C C  )   $0N Fa "rh7t	$ 0 '9:1b'At9q"g)FG1b'At9q"g)FG  H H ; F 9* (+-.%.%*)* JF tUm4F; 5F;R tUm4F3 5F3R<C~ )!33W5L5LMODODB
% /%?7 @7B,56D> u6" 7"  /$?< @<, ?5$r489t1~&5$Tt_565$401	B ::B u6" 7" /$?* @*8 -e}=& >&2*$), fk%:;) <): fk%:;( <(23& &@A< B<6 W$7/ 8/d$$"#" Fd/0a $ 
K
K%#*. $GH- I->% ,-W$O9 P9< E E : : 12'tT U,N   E E : :, G$8$8':N:N#OP$ Q$"'%'5( z(BC); D);X z(BCI DI 48 ,udm<n7 =n7b ,udm<) =)< ( ( 	*,udm<@ = +@" ,udm<
@ =
@ ,udm<$ =$, ,udm<  =&(5V#EL?. UDM2E4=11E4=A2+ B 2 32+j.#r   