
    hq                       S SK r S SKrS SKrS SKJr  S SK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JrJr  S SKrS SKJr  S SKr\R:                  S 5       rS r\R@                  RC                  S	\"" 5       \"" S
SS9\"" SSSS9\"" \"" S
S9S9/5      S 5       r#\R@                  RC                  SSS/5      \R@                  RC                  SS S/SS/SS//5      \R@                  RC                  SS S/SS/SS//5      S 5       5       5       r$\R@                  RC                  SS
S/SS//5      S 5       r%S r&S  r'S! r(\R@                  RC                  S"S
S/5      S# 5       r)\R@                  RC                  S"S
S/5      S$ 5       r*S% r+\R@                  RC                  S&\RX                  \RZ                  /5      S' 5       r.S( r/\R@                  RC                  S)SS
/5      S* 5       r0S+ r1S, r2\R@                  RC                  S-S
S/5      S. 5       r3\R@                  RC                  S/S
S/5      S0 5       r4\R@                  RC                  S1S2S\"" SS
S394S4S
\"" SS594S2S\"" \"" S
S9S94S2S\"" S
S694/5      S7 5       r5\R@                  RC                  S-S
S/5      S8 5       r6\R@                  RC                  S/S
S/5      S9 5       r7\R@                  RC                  S:S
S/5      S; 5       r8S< r9S= r:\R@                  RC                  S>S?S@/5      SA 5       r;\R@                  RC                  S>S?S@/5      SB 5       r<SC r=SD r>\R@                  RC                  SESF5      SG 5       r?\R@                  R                  SHS
SI9SJ 5       rASK rBSL rCSM rD\R@                  RC                  S	\"" 5       \"" S\"" SNSO9SP9\"" S
SS9/5      SQ 5       rESR rFSS rGST rH\R@                  RC                  SU/ SVQ5      SW 5       rISX rJ\" SY/SZS
S[9S\ 5       rK\" S]/S^9S_ 5       rL\" S]/S^9S` 5       rMSa rN\" S]/S^9Sb 5       rO\" S]/S^9Sc 5       rP\" S]/S^9Sd 5       rQSe rRSf rSSg rTSh rUSi rVSj rW\R@                  RC                  SkS2S4/5      Sl 5       rX\R@                  RC                  SkS2S4/5      Sm 5       rYSn rZSo r[Sp r\\R@                  RC                  SqSS
/5      Sr 5       r]\R@                  RC                  SqSS
/5      Ss 5       r^\" 5       St 5       r_\R@                  RC                  Su/ SvQ5      \R@                  RC                  SqSS
/5      Sw 5       5       r`\R@                  RC                  SqSS
/5      Sx 5       ra\R@                  RC                  SqSS
/5      Sy 5       rb\R@                  RC                  SqSS
/5      \" S]/S^9Sz 5       5       rcS{ rdS| re\R@                  RC                  S}SS
/5      \R@                  RC                  S~SS
/5      S 5       5       rfg)    N)mock)
MouseEvent)check_figures_equalimage_comparison)click_and_dragdo_eventget_ax
mock_eventnoop)assert_allclosec                      [        5       $ N)r	        O/var/www/html/env/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)r2   r0   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_pdfrM      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[        USSSSS9  [        USSSSS9  [        US	S
S
SS9  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pressd   r   xdataydatarP   onmove   release   drawtype)linenone)      Y@r_   rd   rd   r_   )r_   rd   rd   r_   r_   )err_msg)r   Mockr   widgetsRectangleSelectorr   getr   geometryassert_called_once	call_argsra   rb   )r   rN   r]   toolepressereleases         r   test_rectangle_selectorrv   @   s	    yyd6H$$RE(EfEDT7#S;T83c!< T9Cs1=zz*d#+;;324 $	/
 !!)!3!3V<<3<<3>>S   >>S   R<<r   rU   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 )	NrZ   rQ   rQ   rR   T)r]   interactiverU   rS   rT   startendr&   r&      r   )r   rl   r   	transData	transformrm   rn   r   _selection_completedassert_not_calledrq   
reset_mockrr   ra   rb   )r   rU   rS   x1rT   y1r]   x0y0rs   rt   ru   rN   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_anywherer   rQ   r_   x   r}   )2   A         #   r         r      )      )rm   rn   r   center)r   r   
new_centerrs   s       r   test_rectangle_dragr      s|     $$RT8JLD 4wJ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|   rX   handle_propsr   r   r}   r333333?black)markeredgecolorr   )rm   rn   dictr   _selection_artistget_facecolormcolorsto_rgba	set_props_handles_artistsget_markeredgecolor	get_alphaset_handle_propsr   rs   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}   )        rj         $@      ^@r      rQ   r   r   r   r   r&   r   )rm   rn   r   extents)r   rs   r   ra   rb   	xdata_new	ydata_news          r   test_rectangle_resizer      s   $$RT:D4wJ7<<4444 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   )rm   rn   r   r=   raises
ValueError	add_stater   rs   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   rQ   r   r~   r   keyr   r   rQ   r   r&   r   rm   rn   r   r   r   r   r   rs   use_keyr   ra   rb   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   rQ   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   rQ   r   r   r   r   )rm   rn   r   r   r   r   )	r   rs   r   ra   rb   r   r   r   r   s	            r   #test_rectangle_resize_square_centerr   x  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[	        USS	S
9  UR                  S1:X  d   e[        UR                  5      S:X  d   e[        USSS9  [	        USS	S
9  [        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   r_   r_   r      r}   r_   r   r_   r   r   on_key_pressr   r   rotater   )r      g(\9@g{Gz?)atol-   )gR]@     xa@g=
ףp[@g     V@)g     W@g=
ףp]@g     b@g(\^@)n   r   )r      )r_   r   r_   g
ףp=b@unvalid_value)r   r   len_stater   r   rotationcornersnparrayrm   rn   r=   r   r   r   rotation_point)r   r   rs   s      r   test_rectangle_rotater    so    "$/D4zz:<<////t{{q    T>s+;;8*$$$t{{q   4zz:T>s+t{{q   <<////DMM5t4DM==BDLLHH==? @FJL
 4zz:DLL"<4H222]]:&4CD""1 '& 3&&s   'F
F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   r   r   r}   r   r   )r   r   r   r   )rm   rn   r   r   r  r  r   remove_state)r   rs   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   rQ   r   g      G@g     `@)
set_aspectrm   rn   r   r   r   r   _aspect_ratio_correction)r   r  rs   r   ra   rb   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                  " 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 modifiersrQ   T)
grab_ranger|   r_      r_   r  r   r   )r   r   r}   )r      r   r  r   r   r   )r   r   r   r   r{   )r   r   r   )rQ   r   rQ   r   r   z
ctrl+shift)r   r   r   r   )r   I   Nr   r   r_   )rm   EllipseSelectorr   r   intrp   shaper   )r   rs   er   s       r   test_ellipser!  	  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 )NrQ   Tr   r   )markerfacecolorr   )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   r  )   r$  )l      r%  r&  r{   )rQ   r_   rQ   r_   r   )rm   rn   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 )NrZ   )r]   r|   r_   r   r  r   r}   rj        b@g     [@r   rQ   r_   )	r   rl   r   rm   rn   r   rq   r   r   r   r|   r]   rs   s       r    test_rectangle_selector_onselectr4  C  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 )
NrZ   )r]   r5  r.  r/  r}   r0  r  r  r   r   )r1        d@r1  r9  )
r   rl   r   rm   rn   r   rq   r   r   r   )r   r5  r]   rs   s       r   &test_rectangle_selector_ignore_outsider:  T  s    yyd6H$$R:NPD4zz:!<<77774zz:""$||;;;; 	##%||;;;;r   z$orientation, onmove_callback, kwargs
horizontal)minspanrO   vertical)rP   r   c                    [         R                  " [        S S9n[         R                  " [        S S9nU(       a  XSS'   U R                  S5        U R	                  5       n[
        R                  " XU40 UD6n[        USSSSS9  [        USS	S	SS9  [        US
SSSS9  UR                  SS	5        U(       a  UR                  SS	5        g g )NrZ   onmove_callbackautor^   r_   r   r`   rc   rd   re   rf   )	r   rl   r   r  twinxrm   SpanSelectorr   assert_called_once_with)r   orientationr?  rN   r]   rc   taxrs   s           r   test_span_selectorrF  k  s     yyd6HYYDt4F$* ! MM&
((*CkDVDDT7#S;T83c!<T9Cs1=$$S#.&&sC0 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 )	NrZ   r;  r   r   )r  r_   r}   )r_   r  r2  )	r   rl   r   rm   rB  r   rq   r   r   r3  s       r   test_span_selector_onselectrH    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 )NrZ   r;  )r?  r5  r   r  r}   )r_   r   r7  r8  )r  r   )
r   rl   r   rm   rB  r   rq   r   r   r   )r   r5  r]   rc   rs   s        r   !test_span_selector_ignore_outsiderJ    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 )Nr;  T)r]   	directionr|   r   r{   r   r}   r2  r   r   )r&   r   )r   r   r   r   )rm   rB  r   r   r   )r   r   rs   s      r   test_span_selector_dragrM    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)Nr;  T)r]   rL  r|   invalid_direction)r]   rL  r=  invalid_string)rm   rB  r   rL  _edge_handlesr=   r   r   r   s     r   test_span_selector_directionrR    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 )Nr;  Tr   r   r   r   r   )r]   rL  r|   rX   r   r   r   r}   r   r   r(   r   )rm   rB  r   r   r   r   r   r   r   r   r   	get_colorr   r   r   s      r   )test_span_selector_set_props_handle_propsrV    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[        USSS9  UR                  (       a   eg )NT)r   r|   rX  r;  rL  r]   r{   r   r}   )r   r   r5  r   escaper   r   )	r   rm   rB  r   rn   r   r   r5  r   )r   rW  rN   Selectorrs   s        r   test_selector_clearr]    s    RT*F6''*{!z,,fD4xZ8 4zz:((((%)F!"fD$$$$4xZ8 4zz:$$$$T>x0(((((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 )NrX  r;  T)r]   rL  r|   r5  r   r{   r   r}   r2  )r   r   )rQ   r   )	rm   rB  r   rn   r   r   get_visibler   r   )r   rW  rs   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)Nr;  Tr   r   r   r   r   )rm   rB  r   r=   r   r   r   r   s     r   test_span_selector_add_staterb  0  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   r;  F)rO   T)rm   ToolLineHandlesr*  get_animatedr_  set_visibleset_animated	positions)r   rh  tool_line_handler   s       r   test_tool_line_handlerj  >  s    I..rl7<> #**&&((((%%'''' +   &!!$'"**""$$$$!!#### + %%222r   rL  )r;  r=  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   rQ   r&   r   Tr   r;  )rx   g      '@)ry      r}   r   )r?   r@   plotrB   rC   
get_xbound
get_yboundrm   rB  printrQ  rh  listr   )rL  rG   r   x_boundy_boundrs   bound
press_data	move_datarelease_dataindexhandle_positionss               r   test_span_selector_boundrz  Q  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            
      L  ^^	^
 [         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S
S/nSS/n[        USUS   US
   S
S9  [        USUS   US
   S
S9  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SS/nSS/nSS/n[        USUS   US
   S
S9  [        USUS   US
   S
S9  UR                   SL d   eTR                   (       d   e[#        TR%                  5       S5        [        USUS   US
   S
S9  TR                   SL d   eg)zACheck that the animated artists changed in callbacks are updated.r   r   r_   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   r;  )rL  r?  r|   r   rO   r   r^   r`   rc   FgSG-?   r   gȄC(re   N)r  linspacepisinr?   r@   rm  pausedraw_artistrB   blitbboxrm   rB  r   _get_animated_artistsstaler   	get_ydataupdate)rG   r   lnr  rX  ru  rv  rw  r  r  r  s           @@@r   ,test_span_selector_animated_artists_callbackr  m  s	    	Aq255y#&AVVAYFllnGC
''!Vd'
+CB7727%DC
 IIcNNN2JJOOCHH, L04,037(,	.D QJAIT7*Q-z!}QOT89Q<y|AN%%'B944488u999CMMO%78KKM99 QJAIq6LT7*Q-z!}QOT89Q<y|AN88u999CMMO%89T9LO?1.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   )argss    r   r]   4test_snapping_values_span_selector.<locals>.onselect  s    r   r;  )rL  r   r   ry   )
gr  r   r   333333?ffffff??g
ףp=
@      @      @)
r   r   r   r   r   r         ?r  r  r  )rm   rB  _snapr  r  r  r   )r   r]   rs   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  r;  )rL  r  )   r   )r%   $   )r  arangerm   rB  r   r  )r   r]   r  rs   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   r;  T)r5  )r   rQ   )      )r&   r  r}   )rm   rB  r   r   r   )r   rs   ru  rw  s       r   test_span_selector_extentsr    sn    
|$
D DL<<7"""$$$$ JL4|<<<7"""r   r#   )r(   )rO   rX   c                     [         R                  " [        S S9n[        R                  " U 4SU0UD6n[        USSSSS9  [        USSSSS9  [        US	S
S
SS9  UR                  / SQ5        g )NrZ   r]   r^   r_   r   r`   rc   r   re   r  )r   r  r7  )r   rl   r   rm   LassoSelectorr   rC  )r   rN   r]   rs   s       r   test_lasso_selectorr    sm     yyd6H  AhA&ADT7#S;T83c!<T9Cs1=$$%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 )NrZ   r   r   rT  )r]   rX   r   r   )r   rl   r   rm   r  r   r   r   r(  rU  r   r   )r   r]   rs   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 )NrZ   r   r   -r   darkbluer   r   )	linestyler(   r   lwrW   r   r   )r   rl   r   rm   Lassorh   r   r(  rU  get_linestyleget_lwr   r   	set_color	set_alpha)r   r]   rs   rh   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   )rx  )invalidr  r   )r  c                      g r   r   r   r   r   r  #test_CheckButtons.<locals>.<lambda>  s    4r   )rm   r   
get_status
set_activeget_checked_labelsr   r  r=   r   r   	TypeError
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)ri   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[        US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[        USSSS	9  [        US
SS9  [        US
SS9  UR                  S:X  d   eg )Nr  rZ    _clickzx**2r   r   r   ra   rb   	_keypress+r   5r   )r?   rcParams_setr   rl   r   rm   TextBox	on_submiton_text_changetextr   set_val
call_countbegin_typingstop_typing)r   r  submit_eventtext_change_eventrs   s        r   test_TextBoxr     s    LLi)99$T:L		t$???2r"DNN< )*99??T8LL99''1,,,""a'''T82R0T;C(T;C(''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   )rm   r   r  value_selectedindex_selectedr   )r   radios     r   test_RadioButtonsr  @  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,   r/   )r  r  r   r  r(   r0   r5   r6   )r	   
get_figuresubplots_adjustadd_axesrm   r   r   )
r   rG   rax1rb1rax2cb1rax3rb3rax4cb4s
             r   test_check_radio_buttons_imager  J  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   png)
extensionsc                 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   C0ri   )r   sr        ?r   r   va)	rm   r   r@   add_subplotscatter	transAxesr?   r  r  fig_testfig_refr   s      r   test_radio_buttonsr-  i  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-   	linewidthr  r  r/   r#        b@)rm   r   r@   set_label_propsset_radio_props)r+  r,  r0   r1   cbs        r   test_radio_buttons_propsr6  s  s    "G"6K 'f1MK))+eX->%0K 
		h//1E83D	EB{# 8+8sK89r   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\* parameter)matchr  r  r#   r.   r  )activecolorr1   ri   )	r=   warnsUserWarningrm   r   r   r(  _buttonsr   )r   rbs     r   !test_radio_button_active_conflictr>    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 )Nr  r  r  )r9  r#   )rm   r   r@   r9  )r+  r,  r5  s      r   %test_radio_buttons_activecolor_changer@    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 )Nr  r  Tr  r  r  r   r#  r!  r   ri   )markerr   r#  r  r  kr$  r   r%  )	rm   r   r@   r'  r(  r)  r?   r  r  r*  s      r   test_check_buttonsrD    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#   r/  r'   r  r  r   r0  )r.   r1  r  r  Tr
  r#  r2  r.   r-   )rm   r   r@   r3  set_frame_propspopset_check_props)r+  r,  r0   r5   r6   r5  s         r   test_check_button_propsrI    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   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   rL  rM  rN  	slidermax)r?   r@   r=   r   r   rm   Slider)rG   r   s     r   'test_slider_slidermin_slidermax_invalidrR    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   rK  r  r   rL  rM  rN  valinitr  )r   rL  rM  rN  rU  rO  r   )r   rL  rM  rN  rU  rP  r?   r@   rm   rQ  val)rG   r   slider_sliders       r   test_slider_slidermin_slidermaxrZ    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   rK  g      $rT  g      9@)r?   r@   rm   rQ  rW  rM  rN  rG   r   rY  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   rK  g&@r   )r   rL  rM  rN  rU  valstepry   )r   r   r  g333333@r  rV  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   r/  r  r;  )r   rL  rM  rN  rU  rD  rQ   )r   r$  竪?r   r=  )r$  r   r   rb  )r?   r@   rm   rQ  r  rW  polyget_extentstransformedr)  invertedr   bounds)rG   r   rY  boxs       r   test_slider_horizontal_verticalri    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   rT        ?)r?   r@   rm   rQ  r  resetrW  r\  s      r   test_slider_resetrm    sL    llnGC^^rAaLF
NN4
LLN::r   rD  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 )Nr=  r   r   r   r   r   r   r   r   r  r   r  r  (\?r   rL  rM  rN  rD  rU  )r  r$  rq  rk  )r  rq  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 )Nr=  r   )_handlesr  	get_xdata)rY  hrD  s     r   ry  +test_range_slider.<locals>.handle_positions  sW    *$.4oo>oKKM!$o>>.4oo>oKKM!$o>> ?>s   A"A')皙?r  )rx  r$  r  rk  )r   r  )r  r   )r  rQ   r"   )r?   r@   rm   RangeSliderrc  rd  re  r)  rf  r   
get_pointsflattenrW  r  rl  )rD  idxrG   r   rY  rh  ry  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 )
Nr=  ro  rp  r  r   r  r   rr  )r   r$  r   rk  )r?   r@   rm   ry  rc  rd  re  r)  rf  r   rz  r{  )rD  r|  rG   r   rY  rh  s         r   "test_range_slider_same_init_valuesr  1  s    j llnGC  bSkQF ++
!
!
#
/
/0E0E0G
HCCNN$,,.s35GHr   c                     [        5       n[        R                  " [        SS9n[        R
                  " U4SU0UD6nU  H  u  px[        Xg40 UD6  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
----------
event_sequence : list of tuples (etype, dict())
    A sequence of events to perform. The sequence is a list of tuples
    where the first element of the tuple is an etype (e.g., 'onmove',
    'press', etc.), and the second element of the tuple is a dictionary of
     the arguments for the event (e.g., xdata=5, key='shift', etc.).
expected_result : list of vertices (xdata, ydata)
    The list of vertices that are 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_result`
**kwargs
    Keyword arguments are passed to PolygonSelector.
NrZ   r]   )	r	   r   rl   r   rm   PolygonSelectorr   r  rr   )	event_sequenceexpected_resultselections_countrN   r   r]   rs   etype
event_argss	            r   check_polygon_selectorr  B  s    * 
Byyd6H""2CCFCD-+
+  . "2222?"5r!::::r   c                 B    S[        XS94S[        XS94S[        XS94/$ )Nrc   r  r^   re   r   r  s     r   polygon_place_vertexr  d  s3    t%56d455679 9r   c           	      F    S[        XS94S[        XSS94S[        XSS94/$ )Nrc   r  r^   r   r`   re   r  r  s     r   polygon_remove_vertexr  j  s9    t%56dA>?5a@AC Cr   draw_bounding_boxc                    [         R                  " [        U S9n/ SQn/ [        SS5      Q[        SS5      Q[        SS5      Q[        SS5      QnU" X2S5        / SQn/ [        SS5      Q[        SS5      QS[	        SS	94PS
[	        SSS94PS[	        SSS94PS
[	        SSS94PS[	        SSS94PS[	        SS	94P[        SS5      Q[        SS5      QnU" X2S5        / SQn/ [        SS5      Q[        SS5      QS[	        SS	94PS
[	        SSS94PS[	        SSS94PS
[	        SSS94PS[	        SSS94PS[	        SS	94P[        SS5      Q[        SS5      QnU" X2S5        / SQn/ [        SS5      Q[        SS5      Q[        SS5      Q[        SS5      QS
[	        SSS94PS[	        SSS94PS
[	        SSS94PS[	        SSS94PnU" X2S5        / SQn/ [        SS5      Q[        SS5      Q[        SS5      Q[        SS5      QS[	        SS	94PS
[	        SSS94PS[	        SSS94PS
[	        SSS94PS[	        SSS94PS[	        SS	94PnU" X2S5        / SQnS[	        SS	94S
[	        SSS94S[	        SSS94S
[	        SSS94S[	        SSS94S[	        SS	94S[	        SS	94S
[	        SSS94S[	        SSS94S
[	        SSS94S[	        SSS94S[	        SS	94/[        SS5      Q[        SS5      Q[        SS5      Q[        SS5      QnU" X2S5        / SQn/ [        SS5      Q[        SS5      QS[	        SS	94PS[	        SS	94P[        SS5      Q[        SS5      Q[        SS5      Q[        SS5      QnU" X2S5        g )Nr  r   r   r  r   r   r  r   r  r   ))r   r   r  r  r   r   r   rc   r  r^   r   re   on_key_release))r   r   )r  r   r  r   r_   r   r   ))r   r   )r   r   )r   r   rf   r[  )	functoolspartialr  r  r   )r  check_selectorr  r  s       r   test_polygon_selectorr  p  sa   &&2CEN 7O	b"	%	c2	& 
b#	& 
b"	%	N >A6 7O	b"	%	c2	& 
),- 
4b+,	
 
$Rr*+ 
4b+, 
Dr,- 
4I./ 
b#	& 
b"	%N >A6 7O	b"	%	c2	& 
'*+ 
4c-.	
 
$S,- 
4c-. 
Ds#./ 
4G,- 
b#	& 
b"	%N >A6 7O		b"	%		c2	&	 
b#	&	 
b"	%		
 
4b+,	 
$Rr*+	 
4b+,	 
Dr,-	N >A6 7O	b"	%	c2	& 
b#	& 
b"	%	
 
'*+ 
4c-. 
$S,- 
4c-. 
Ds#./ 
4G,-N >A6 7O	),-	4c-.	$S,-	4c-.	Ds#./	4I./	'*+	4c-.	$S,-	4c-.	Ds#./	4G,- 
b"	% 
c2	& 
b#	&  
b"	%!N$ >A6 7O		b"	%		c2	&	 
(+,	 
4H-.		
 
b"	%	 
c2	&	 
b#	&	 
b"	%	N >A6r   c                    [         R                  " U [        SSS9[        SS9US9n/ [        SS5      Q[        SS5      Q[        SS5      Q[        SS5      QnU H  u  pE[	        X$40 UD6  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   rT  r   r   )rX   r   r  r   r  r   r   )rm   r  r   r  r   r   rU  r   r   r   r   )r   r  rs   r  r  r  r   s          r   ,test_polygon_selector_set_props_handle_propsr    s   ""2)-Cs)C0435FHD
	b"	%	c2	& 
b#	& 
b"	%	N  .+
+  . ##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visibleFrW   )r   r  r   r  )r@   rm   rn   r   )r+  r,  ax_test_rs   s        r   test_rect_visibilityr    s>     !GA$$WY4FGD'DLr   r|  )r   r   r   c                 0   / SQn[        US   6 [        US   6 [        US   6 [        US   6 /nUR                  U [        SS5      5        UR                  [        SS5      5        [        R
                  " [        R                  U/ 5      n[        X2SUS9  g )Nr  r   r   r      r  )	r  insertappendr  r  reduceoperatoriaddr  )r|  r  vertsr  s       r   test_polygon_selector_remover    s     -E*E!H5*E!H5*E!H5*E!H5	7N #3C=>/S9:%%hmm^RHN>!->@r   c                     / SQn/ [        US   6 Q[        US   6 Q[        US   6 Q[        US   6 Q[        US   6 Qn[        X!SS  SU S9  g Nr  r   r   r   r  )r  r  r  )r  r  r  s      r   (test_polygon_selector_remove_first_pointr  !  s    ,E	uQx	(	uQx	( 
uQx	( 
uQx	(	
 
a	)N >9a->@r   c                 *   / SQn/ [        US   6 Q[        US   6 Q[        US   6 Q[        US   6 Q[        US   6 Q[        US   6 Q[        US   6 Qn[        R                  " XS9nU H  u  pV[	        XE40 UD6  M     UR
                  USS :X  d   eg r  )r  r  rm   r  r   r  )r   r  r  r  rs   r  r  s          r   test_polygon_selector_redrawr  /  s    ,E
	uQx	(
	uQx	(
 
uQx	(
 
uQx	(	
 
a	)
 
a	)
 
uQx	(
N ""2KD-+
+  . ::q###r   c                 V   / 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/ [	        US   6 Q[	        US   6 Q[	        US   6 Q[	        US   6 QnU H  u  p[        Xy40 U
D6  M     g )N))r  rx  )r   r  )r   r   r  r   r   r   )r'  rm   r  r  r  r   )r+  r,  r  r  r  	tool_testax_reftool_refr  r  r  s              r   "test_polygon_selector_verts_setterr  F  s     1E""$G''UIO??e###  "F&&vSH	uQx	(	uQx	( 
uQx	( 
uQx	(	N  ./J/  .r   c                    U R                  SSS9  / SQn/ [        US   6 Q[        US   6 Q[        US   6 Q[        US   6 Q[        US   6 Qn[        R                  " U SS	9nU H  u  pE[	        X440 UD6  M     U R
                  nU R                  SS
9R                  n[        SU/UR                  S5      QSP76 R                  5         [        SU/UR                  S5      Q76 R                  5         [        SU/UR                  S5      QSP76 R                  5         [        R                  R                  UR                  / SQ5        [        SU/UR                  S5      QSP76 R                  5         [        SU/UR                  S5      Q76 R                  5         [        SU/UR                  S5      QSP76 R                  5         [        R                  R                  UR                  / SQ5        [        R                  R                  UR                  R                   S5        [        SU/UR                  S5      QSP76 R                  5         [        SU/UR                  S5      QSP76 R                  5         [        R                  R                  UR                  / SQ5        [        R                  R                  UR                  R                   S5        g )N)ir   )xlimylim))r&   r   )r   r&   )r&   (   )r  r&   r   r   r   r   Tr  r   button_press_event)r  r  motion_notify_eventr   button_release_event))rQ   r   r   )rQ   r&   )r&   rQ   r{   r   )r   r&   r   r   r  r  r   )      4@      D@r  r  r   )r  r  r  )r  r  g      >@r  )setr  rm   r  r   r   r  rB   r   r   _processr  testingr   r  _boxr   )r   r  r  rs   r  r  trB   s           r   test_polygon_selector_boxr  \  s   FF		F*2E	uQx	(	uQx	( 
uQx	( 
uQx	(	
 
uQx	(N ""2>D-+
+  .
 	A]]]%,,F fA'({{8'<A>?AAIv?()H(=??GxzC)*X)>C@ACCK8:JJ

:< fA'({{8'<A>?AAIv?()H(=??GxzC)*X)>C@ACCK8:JJ

<> JJ		35 fA'({{8'<A>?AAIC)*X)>C@ACCK8:JJ

24JJ		35r   c                    [         R                  " [        S S9n[        R                  " X5      n/ SQ/ SQ4 GH  nU H%  u  pE[        XE5       H  u  pg[        X&40 UD6  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 )NrZ   )r  r  r  r  )r  )r_   r   r  r  r  r   )r   rl   r   rm   r  r  r   r   r   r_  r  r  assert_equal
get_xydatarr   r   )	r   r]   rs   resultr  yr  r  r   s	            r   "test_polygon_selector_clear_methodr    s   yyd6H""20D==?DA%9!%?!3
3 &@  ''((((!!!!!!####


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

,,,,


 1 1 3fX>!?r   horizOnvertOnc                 0   [         R                  " 5       nUR                  SSS9u  p4[         R                  " 5       R                  5       n[        R                  " S X54SXS9n[        UR                  5      S:X  d   e[        UR                  5      S:X  d   e[        USSS9nUR                  U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        [        USSS9nUR                  U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[        USSS9nUR                  U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 s  sn	f s  sn	f s  sn	f s  sn	f )Nr   T)sharexF)rO   r  r  r   r$  r  )r   r   )r$  r$  r   rk  )r?   figurer@   rm   MultiCursorr  vlineshlinesr
   rc   rB   rC   ru  r  r_  r  r  )
r  r  rG   ax1ax3ax2multieventlrh   s
             r   test_MultiCursorr    s    **,Ca-JS
**,


!C sj%E
 u||!!!u||!!!
 s"C0E	LLJJOO \\{{}((( \\{{}
***  D1A1A1CDE  D1A1A1CDE!   %EM||#ELs"C0E	LLD1A1A1CDE  D1A1A1CDE!  
 s#S1E	LL\\{{}((( \\{{}
*** + ED EDs0   4LL?L	L	L.LL9L)gr  rD   r  unittestr   matplotlib.backend_basesr   matplotlib.colorscolorsr   r;   rm   matplotlib.pyplotpyplotr?   matplotlib.testing.decoratorsr   r   matplotlib.testing.widgetsr   r   r	   r
   r   numpyr  numpy.testingr   r=   fixturer   rM   markparametrizer   rv   r   r   r   r   r   r   r   r   rn   r  r  r  r  r!  r,  r4  r:  rF  rH  rJ  rM  rR  rV  r]  r`  rb  rj  rz  backendr  r  r  r  r  r  r  r  r  r  r  r-  r6  r>  r@  rD  rI  rR  rZ  r]  r`  ri  rm  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s    	   / # $  O: :  )   $0N Fa "rh7t	$ 2 '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 110 u6" 7" /$?* @*8 -e}=& >&2*$), fk%:;) <): fk%:;( <(23& &@A< B<6 W$75 85p$$"#" Fd/0a $ 
K
K%#*. $GH- I->% ,-W$O9 P9< (E )E (: ):N ( ) (E )E (: ):,'%'5( z(BC); D);X z(BCI DI ;D9C ,udm<n7 =n7b ,udm<) =)@ ( ( 	*,udm<@ = +@" ,udm<
@ =
@ ,udm<$ =$, ,udm<(0 ) =0(55p?. UDM2E4=12+ 2 32+r   