
    gq                       d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ	 d dl
mZ d dlmZ d dlmZmZ d dlmZmZmZmZmZ d dlZd dlmZ d dlZej:                  d        Zd Zej@                  jC                  d	 e"        e"d
d       e"ddd       e" e"d
            g      d        Z#ej@                  jC                  dddg      ej@                  jC                  dd dgddgddgg      ej@                  jC                  dd dgddgddgg      d                      Z$ej@                  jC                  dd
dgddgg      d        Z%d Z&d  Z'd! Z(ej@                  jC                  d"d
dg      d#        Z)ej@                  jC                  d"d
dg      d$        Z*d% Z+ej@                  jC                  d&ejX                  ejZ                  g      d'        Z.d( Z/ej@                  jC                  d)dd
g      d*        Z0d+ Z1d, Z2ej@                  jC                  d-d
dg      d.        Z3ej@                  jC                  d/d
dg      d0        Z4ej@                  jC                  d1d2d e"dd
3      fd4d
 e"d5      fd2d e" e"d
            fd2d e"d
6      fg      d7        Z5ej@                  jC                  d-d
dg      d8        Z6ej@                  jC                  d/d
dg      d9        Z7ej@                  jC                  d:d
dg      d;        Z8d< Z9d= Z:ej@                  jC                  d>d?d@g      dA        Z;ej@                  jC                  d>d?d@g      dB        Z<dC Z=dD Z>ej@                  jC                  dEdF      dG        Z?ej@                  j                  dHd
I      dJ        ZAdK ZBdL ZCdM ZDej@                  jC                  d	 e"        e"d e"dNO      P       e"d
d      g      dQ        ZEdR ZFdS ZGdT ZHej@                  jC                  dUg dV      dW        ZIdX ZJ edYgdZd
[      d\        ZK ed]g^      d_        ZL ed]g^      d`        ZMda ZN ed]g^      db        ZO ed]g^      dc        ZP ed]g^      dd        ZQde ZRdf ZSdg ZTdh ZUdi ZVdj ZWej@                  jC                  dkd2d4g      dl        ZXej@                  jC                  dkd2d4g      dm        ZYdn ZZdo Z[dp Z\ej@                  jC                  dqdd
g      dr        Z]ej@                  jC                  dqdd
g      ds        Z^ e       dt        Z_ej@                  jC                  dug dv      ej@                  jC                  dqdd
g      dw               Z`ej@                  jC                  dqdd
g      dx        Zaej@                  jC                  dqdd
g      dy        Zbej@                  jC                  dqdd
g       ed]g^      dz               Zcd{ Zdd| Zeej@                  jC                  d}dd
g      ej@                  jC                  d~dd
g      d               Zfy)    N)mock)
MouseEvent)check_figures_equalimage_comparison)click_and_dragdo_eventget_ax
mock_eventnoop)assert_allclosec                      t               S N)r	        Z/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/matplotlib/tests/test_widgets.pyaxr      s	    8Or   c            
      `   ddl m} m} ddlm}  |       dvrt        j                  d       t        j                  dddddg	      \  }} ||d
   ddg      } ||d   ddgddgddgdddgddgd      } | |d   ddgddg      } | |d   ddgddgddgddgdddgddgddddgi      }|d
   j                  d       |d   j                  d        |j                  j                          t        j                         5 }	|j                  |	d!"       d d d        y # 1 sw Y   y xY w)#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      sq   =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	 0L/0 0 0s   D$$D-kwargsTr   )useblitbutton
   pixels)minspanxminspany
spancoords)fillpropsc                    t        j                  t        d       }t        j                  | fd|i|}t        |dddd       t        |dddd       t        |d	d
d
d       |j                  dd       dvr(t        |j                  g dg dg|j                         |j                          |j                  \  \  }}}|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |i k(  sJ y )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VX<<3<<3>>S   >>S   R<<r   rU   datazminspanx, x1      %@   zminspany, y1c                    t        j                  t        d       }d\  }}|dk(  r>| j                  j	                  ||f      | j                  j	                  ||f      z
  \  }}t        j                  | |d|||      }	t        |	||f||f       |	j                  rJ |j                          t        |	dd       |	j                  sJ |j                          |j                          t        |	||f||f       |	j                  rJ |j                          |j                  \  \  }
}}|
j                  |k(  sJ |
j                  |k(  sJ |j                  |k(  sJ |j                  |k(  sJ |i k(  sJ y )	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   _   s|   
 yyd6HFBX ll44b"X> ll44b"X>?( $$R(0:.6KD 4Bxb"X6(((( 4xX6$$$$! 4Bxb"X6((((!!)!3!3VX<<2<<2>>R>>RR<<r   zdrag_from_anywhere, new_center)<   K   Fr   r&   c                     t        j                  | d|      }t        |dd       |j                  dk(  sJ t        |dd       |j                  |k(  sJ t        |d	d
       |j                  dk(  sJ y )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                 t   t        j                  | dt        dd      t        d            }t        |dd	
       |j                  }|j                         t        j                  dd      k(  sJ |j                  dd       |j                         t        j                  dd      k(  sJ |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  |j                  dd       |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  y )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      s0   $$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                    t        j                  | d      }t        |dd       |j                  dk(  sJ |j                  }|d   |d   }}|d	z   |d
z   }}t        |||f||f       |j                  |d   ||d   |fk(  sJ |j                  }|d   |d   |d   |d   z
  dz  z   }}|d	z   |}}t        |||f||f       |j                  |d   ||d   |d   fk(  sJ |j                  }|d   |d   |d   |d   z
  dz  z   }}|dz   |}}t        |||f||f       |j                  ||d   |d   |d   fk(  sJ |j                  }|d   |d   }}|dz   |dz   }}t        |||f||f       |j                  ||d   ||d   fk(  sJ y )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:wqz5E 2:uqyyI4u~Iy3IJ<<GAJ	71:yIIII llG1:wqzWQZ'!*-D,II5E 2:uyI4u~Iy3IJ<<GAJ	71:wqzJJJJ llG1:wqzWQZ'!*-D,II5E 2:uyI4u~Iy3IJ<<Iwqz71:wqzJJJJ llG1:wqz5E 2:urzyI4u~Iy3IJ<<Iwqz9gajIIIIr   c                    t        j                  | d      }t        |dd       t        j                  t
              5  |j                  d       d d d        t        j                  t
              5  |j                  d       d d d        |j                  d       |j                  d	       |j                  d
       y # 1 sw Y   pxY w# 1 sw Y   IxY w)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   C 2C C	Cr   c                    t        j                  | d      }t        |dd       |j                  dk(  sJ |r|j	                  d       d }nd}|j                  }|d	   |d
   }}d\  }}||z   ||z   }
}	t        |||f|	|
f|       |j                  |d   |z
  |	|d   |z
  |
fk(  sJ |j                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |d   |z
  |	|d   |d
   fk(  sJ |j                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |d   |z
  |	|d   |d
   fk(  sJ |j                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |	|d	   |z
  |d   |d
   fk(  sJ |j                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |	|d	   |z
  |d   |d
   fk(  sJ |j                  }|d   |d   }}d\  }}||z   ||z   }
}	t        |||f|	|
f|       |j                  |	|d	   |z
  |
|d
   |z
  fk(  sJ y )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:wqz5ELE5 5=%%-yI4u~Iy3I <<GAJ.	#AJ.	; ; ; ; llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<GAJ.	#AJ
4 4 4 4 llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<GAJ.	#AJ
4 4 4 4 llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<IwqzE'9#AJ
4 4 4 4 llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<IwqzE'9#AJ
4 4 4 4 llG1:wqz5ELE5 5=%%-yI4u~Iy3I <<IwqzE'9%wqzE'9; ; ; ;r   c                    t        j                  | d      }t        |dd       |j                  dk(  sJ |r|j	                  d       d }nd}|j                  }|d	   |d
   }}d\  }}||z   ||z   }
}	t        |||f|	|
f|       |j                  |d   |	|d   |d
   |z   fk(  sJ |j                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |d   |	|d   |d
   |z   fk(  sJ |j                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |d   |	|d   |d
   |z   fk(  sJ |j                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |	|d	   |d   |d
   |z
  fk(  sJ |j                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |	|d	   |d   |d
   |z
  fk(  sJ |j                  }|d   |d   }}d\  }}||z   ||z   }
}	t        |||f|	|
f|       |j                  |d   |z   |d	   |
|d
   fk(  sJ y )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:wqz5ELE5 5=%%-yI4u~Iy3I <<GAJ	#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<GAJ	#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<GAJ	#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<Iwqz#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<Iwqz#AJ
U(:< < < < llG1:wqz5ELE5 5=%%-yI4u~Iy3I <<GAJ.
%wqz3 3 3 3r   c                    t        j                  | d      }t        |dd       |j                  d       |j                  d       t	        |j
                  d       |j
                  }|d	   |d
   }}d\  }}||z   ||z   }}t        |||f||f       t	        |j
                  |d   |z
  ||d   |z
  |d
   |z   f       |j
                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}}t        |||f||f       t	        |j
                  |d   |z
  ||d   |z
  |d
   |z   f       |j
                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}}t        |||f||f       t	        |j
                  |d   |z
  ||d   |z
  |d
   |z   f       |j
                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}}t        |||f||f       t	        |j
                  ||d	   |z
  |d   |z   |d
   |z
  f       |j
                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}}t        |||f||f       t	        |j
                  ||d	   |z
  |d   |z   |d
   |z
  f       |j
                  }|d   |d   }}d\  }}||z   ||z   }}t        |||f||f       t	        |j
                  |d   |z   |d	   |z
  ||d
   |z
  f       y )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  s   $$RT:D4xZ8NN8NN8DLL"<= llG1:wqz5ELE5 5=%%-yI4u~Iy3IJDLL71:#5y#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJDLL71:#5y#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJDLL71:#5y#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJDLL9gaj5.@#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJDLL9gaj5.@#*1:#5wqzE7I#K L llG1:wqz5ELE5 5=%%-yI4u~Iy3IJDLL71:#5wqzE7I#,gaj5.@#B Cr   selector_classc                 @    || d      }t        |dd       |j                  dk(  sJ t        |j                        dk(  sJ t	        |dd	
       |j                  dhk(  sJ t        |j                        dk(  sJ t        |dd       t	        |dd	
       t        |j                        dk(  sJ |j                  dk(  sJ t        |j                  dd       d|_        |j                  dk(  sJ t        |j                  t        j                  g dg dg      d       t        |dd       t        |j                  dd       |t        j                  k(  r4t        j                  t              5  d|j                  _        d d d        y y # 1 sw Y   y xY w)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    s    "$/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]]:& 	D4CD""1	D 	D 3	D 	Ds   8FFc                 ^   t        j                  | d      }t        |dd       |j                  dk(  sJ t	        |j
                        dk(  sJ dD ]X  }|j                  |       t	        |j
                        d	k(  sJ |j                  |       t	        |j
                        dk(  rXJ  y )
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$$$	%r   use_data_coordinatesc                    | j                  d       t        j                  | d|      }t        |dd       |j                  dk(  sJ |j                  d       |j                  d	       |r|j                  }|d
   |d   |d
   |d   z
  }}}d|d   |d   |d   z
  dz  z   }}||z   |}
}	|dz  |z   }t        |||f|	|
f       t        |j                  |d   |z
  |	||z
  ||z   g       y |j                  }|d
   |d   }}d}||z   |}
}	|d
z  |j                  z  }t        |||f|	|
f       t        |j                  |d   |z
  |	ddg       y )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    s   MM#$$RT:NPD 4xZ8<<5555NN8NN8,,%aj'!*gaj71:6MeugajGAJ,Cq+HHw$u}e9	!)e#tE5>	97MNwqzE'99'.'8'G:K'M 	N ,,qz71:u$u}e9	!)d;;;tE5>	97MNwqzE'99',f'6 	7r   c                 0   t        j                  | dd      }d|_        t        |dd       |j                  dk(  sJ t        |d	dd
       |j                  dk(  sJ t        |ddd       |j                  D cg c]  }t	        |       }}|g dk(  sJ t        |d	dd       |j                  D cg c]  }t	        |       }}|g dk(  sJ |j
                  j                  dk(  sJ t        |j
                  dddf   ddg       yc c}w c c}w )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   <D6Dc                    t        j                  | ddddd      }d|_        t        |j                  d       |j                  dk(  sJ t        |j
                  d	       |j                  dk(  sJ t        |d
d       |j                  dk(  sJ t        |dd       |j                  dk(  sJ t        |dd
       |j                  dk(  sJ t        j                  |j                  j                  d   j                         d      sJ t        j                  |j                  j                  d   j                         d      sJ y )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,  $  sP   $$RBDFIFI3KLD (DLDLL"NO<<////D%%HJ<<//// 4zz:<<//// 4zz:<<//// 4xZ8<<---- $$Q';;=sD D D$$Q';;=sD D Dr   r|   c                 $   t        j                  t        d       }t        j                  | ||      }t        |dd       |j                          |j                  dk(  sJ |j                          t        |dd       |j                          y )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  sw     yyd6H$$R(TD4zz:!<<77774yi8!r   ignore_event_outsidec                    t        j                  t        d       }t        j                  | ||      }t        |dd       |j                          |j                  dk(  sJ |j                          t        |dd       |r"|j                          |j                  dk(  sJ y |j                          |j                  d	k(  sJ y )
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                    t        j                  t        d       }t        j                  t        d       }|r||d<   | j                  d       | j	                         }t        j                  | ||fi |}t        |dddd       t        |dd	d	d       t        |d
ddd       |j                  dd	       |r|j                  dd	       y y )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HkDVDDT7#S;T83c!<T9Cs1=$$S#.&&sC0 r   c                 &   t        j                  t        d       }t        j                  | |d|      }t        |dd       |j                          |j                  dk(  sJ |j                          t        |dd       |j                          y )	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    s{    yyd6HHl,79D 4zz:!<<:%%%4yi8!r   c                 H   t        j                  t        d       }t        j                  t        d       }t        j                  | |d||      }t        |dd       |j                          |j                          |j                  dk(  sJ |j                          |j                          t        |dd	       |r2|j                          |j                          |j                  dk(  sJ y |j                          |j                          |j                  d
k(  sJ y )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Hl065IKD 4zz:!
<<:%%%
4zz:""$  "||z))) 	##%!!#||z)))r   r   c                     t        j                  | t        dd|      }t        |dd       |j                  dk(  sJ t        |dd	       |r|j                  d
k(  sJ |j                  dk(  sJ t        |dd       |j                  dk(  sJ y )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                    t        j                  | t        dd      }|j                  dk(  sJ |j                  j                  dk(  sJ t        j                  t              5  t        j                  | t        d      }d d d        d|_        |j                  dk(  sJ |j                  j                  dk(  sJ t        j                  t              5  d|_        d d d        y # 1 sw Y   fxY w# 1 sw Y   y xY w)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	" C##B.ACC  DN>>Z''''':555	z	" *)* *C C* *s   #C%C1%C.1C:c           
         t        j                  | t        ddt        dd      t        d            }t	        |d	d
       |j
                  }|j                         t        j                  dd      k(  sJ |j                  dd       |j                         t        j                  dd      k(  sJ |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  |j                  dd       |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  y )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    s4   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                    t        | d      }|dk(  rt        j                  }d|d<   t        |d<   nt        j                  } |di |}t        |dd	       t        |d
d
	       |j                  rJ d|d<    |di |}|j                  sJ t        |dd	       t        |d
d
	       |j                  sJ t        |dd       |j                  rJ y )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                    |dk(  rt        j                  | t        ddd      }nt        j                  | d      }t	        |dd       |j
                  sJ |j                         sJ |dk(  r|j                  d	k(  sJ |j                          |j
                  rJ |j                         rJ t	        |dd
       |j
                  sJ |j                         sJ |dk(  r|j                  dk(  sJ y y )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                    t        j                  | t        dd      }t        j                  t
              5  |j                  d       d d d        t        j                  t
              5  |j                  d       d d d        t        j                  t
              5  |j                  d       d d d        |j                  d       y # 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   3xY w)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                 x   g d}t        j                  | |dd      }|j                  D ]&  }|j                         rJ |j	                         s&J  |j                  d       |j                  d       |j                  D ]&  }|j                         sJ |j	                         r&J  |j                  |k(  sJ y )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..r9l7<> #** (&&(((%%'''(   &!!$'"** $""$$$!!###$ %%222r   rL  )r;  r=  c                    t        j                  dd      \  }}|j                  ddgddg       |j                  j	                          |j                         }|j                         }t        j                  |t        | d      }|j                         |k(  sJ |j                         |k(  sJ | dk(  r|n|}|j                  j                  t        |      k(  sJ d}d	}|}	t        |||
       |j                         |k(  sJ |j                         |k(  sJ | dk(  rdnd}
||
   |	|
   g}|j                  j                  |k(  sJ y )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  s;   ll1a GCGGRHr2hJJOOmmoGmmoGE9$GD==?g%%%==?g%%% L0GgE''4;666JIL4zy9==?g%%%==?g%%%l*AE"5)<+>?''+;;;;r   QtAgg)skip_on_importerrorc            	      V  	
 t        j                  ddt         j                  z  d      
t        j                  
      	t	        j
                         \  } }|j                  
	d      \  }|j                  g d      \  t	        j                  d       |j                  |       | j                  j                  | j                         	
fd}t        j                  ||d|ddd	      }d
dg}ddg}t        |d|d   |d
   d
       t        |d|d   |d
   d
       |j                         |fk(  sJ |j                   du sJ j                   sJ t#        j%                         d       |j'                          j                   du sJ ddg}ddg}ddg}t        |d|d   |d
   d
       t        |d|d   |d
   d
       |j                   du sJ j                   sJ t#        j%                         d       t        |d|d   |d
   d
       j                   du sJ y)zACheck that the animated artists changed in callbacks are updated.r   r   r_   T)animated皙?c                     t        j                  | |f      \  }}|| j                         }j                  t        j                  |             y r   )r  searchsortedmeanset_data	full_like)vminvmaxindminindmaxvln2valuesxs        r   r  z:test_span_selector_animated_artists_callback.<locals>.mean~  sI    T4L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, DL04,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                    d }t        j                  | |d      }|j                  }t        j                  ddd      }t        j
                  g d      }t        j
                  g d      } |||      }t        ||       y )	Nc                       y r   r   )argss    r   r]   z4test_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    sl     HFDJJM++aB'KXXJKFXXJKF6;/FFF#r   c                       fd}t        j                  d      dz  }t        j                   |d|      }d|_        |j                  dk(  sJ d |_        |j
                  J d|_        |j                  dk(  sJ y )Nc                     d_         y )NT)_got_onselect)r  r  r   s     r   r]   z)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                     t        j                  | d dd      }d|_        |j                  dk(  sJ |j                  sJ d}d}t	        |||       |j                  dk(  sJ y )	Nc                      y r   r   )ar   s     r   <lambda>z,test_span_selector_extents.<locals>.<lambda>      r   r;  T)r5  )r   rQ   )      )r&   r  r}   )rm   rB  r   r   r   )r   rs   ru  rw  s       r   test_span_selector_extentsr    sp    
|$
D DL<<7"""$$$$ JL4z|<<<7"""r   r#   )r(   )rO   rX   c                     t        j                  t        d       }t        j                  | fd|i|}t        |dddd       t        |dddd       t        |d	d
d
d       |j                  g d       y )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                    t        j                  t        d       }t        j                  | |t        dd            }|j                  }t        j                  |j                         d      sJ |j                         dk(  sJ |j                  dd       t        j                  |j                         d      sJ |j                         dk(  sJ y )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  h'+#S'ACD ##Ff..0#666$$$NNCN(f..0#666$$$r   c                    t        j                  t        d       }t        j                  | d|      }|j
                  }t        j                  |j                         d      sJ |j                         dk(  sJ |j                         dk(  sJ t        j                  | d|t        dddd	      
      }|j
                  }t        j                  |j                         d      sJ |j                         dk(  sJ |j                         dk(  sJ |j                         dk(  sJ |j                  d       |j                  d       t        j                  |j                         d      sJ |j                         dk(  sJ y )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    sK   yyd6H==Z2D99Ddnn.8883&&&;;=A==ZZsq:: ;D 99Ddnn.
;;;>>s""";;=A3&&&NN3NN3dnn.444>>s"""r   c                    d}t        j                  | |d      }|j                         g dk(  sJ |j                  d       |j                         g dk(  sJ |j	                         dgk(  sJ |j                          |j                         g dk(  sJ |j	                         g k(  sJ dt        |      t        |      dz   fD ]6  }t        j                  t              5  |j                  |	       d d d        8 d
D ]7  }t        j                  t              5  |j                  d|       d d d        9 |j                  d       }|j                  |       y # 1 sw Y   xY w# 1 sw Y   sxY w)N)r  r   c)TFTr   )FFTr  )FFFr   )rx  )invalidr  r   )r  c                       y r   r   r   r   r   r  z#test_CheckButtons.<locals>.<lambda>  r  r   )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  	  sn   F  V-@AE!4444	Q!5555##%#...	KKM!6666##%+++c&k3v;q=9 2]]:& 	2=1	2 	22 ) 5]]9% 	5Qm4	5 	55 

<
(C	S	2 	2	5 	5s   !EE*E'	*E3	toolbar)ri   toolbar2toolmanagerc                    t         j                  j                  d|       t        j                  t
        d       }t        j                  t
        d       }t        j                  | d      }|j                  |       |j                  |       |j                  dk(  sJ t        |d       |j                  d       |j                  dk(  sJ |j                  dk(  sJ |j                          |j                          |j                  dk(  sJ t        |ddd	       t        |d
d       t        |d
d       |j                  dk(  sJ y )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                     t        j                  | d      }|j                  d       |j                  dk(  sJ |j                  dk(  sJ |j                          |j                  dk(  sJ |j                  dk(  sJ y )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            
         t               } | j                  d      }|j                  d       |j                  d      }t	        j
                  |d      }|j                  d      }t	        j                  |dd	      }|j                  d
      }t	        j
                  |dg dg ddg dg dd      }|j                  d      }t	        j                  |dd	g dg ddg dg dddg di      }	y )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                 p   t        j                  | j                         ddg       |j                  g g       }|j	                  ddgddg|j
                  t        j                  d   dz  dz  d	d
g       |j                  ddd|j
                  d       |j                  ddd|j
                  d       y )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                    dgdgd}dddd}t        j                  |j                         dd	g||
       t        j                  | j                         dd	g      }|j                  |       |j	                  i |ddi       y )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_propsr2  s  s    "G"6K 'f1MK))+eX->%0kK 
		h//1E83D	EB{# 8+8sK89r   c                    t        j                  t        d      5  t        j                  | ddgdddi      }d d d        t        j                  j                  j                         dd	g      sJ y # 1 sw Y   <xY w)
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:    s{    	kA
C F!!"uh&7U/:G.DFF
 bkk779GV;LMMMF Fs   A55A>c                     t        j                  |j                         ddgd       t        j                  | j                         ddgd      }d|_        y )Nr  r  r  )r5  r#   )rm   r   r@   r5  )r'  r(  r1  s      r   %test_radio_buttons_activecolor_changer<    sS    ))+eX->%,. 
		h//1E83D*/
1BBNr   c           	         t        j                  | j                         ddgddg       |j                  g g       }|j	                  ddgddgd|j
                  t        j                  d	   d
z  d
z  ddg       |j	                  ddgddgd|j
                  t        j                  d	   d
z  d
z  ddg       |j                  ddd|j
                  d       |j                  ddd|j
                  d       y )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_buttonsr@    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                 z   dgdgd}dddd}ddd}t        j                  |j                         d	d
gddg|||       t        j                  | j                         d	d
gddg      }|j                  |       |j	                  i |ddi       |j                  d      |d<   |j                  i |ddi       y )Nr#   r+  r'   r  r  r   r,  )r.   r-  r  r  Tr  r  r.  r.   r-   )rm   r   r@   r/  set_frame_propspopset_check_props)r'  r(  r0   r5   r6   r1  s         r   test_check_button_propsrE    s    "G"6K 'f1MK %A6K))+eX->t%0k%02 
		h//1E83D#Tl
,B{# 8+8sK89  +{;K8+8sK89r   c                  R   t        j                         \  } }t        j                  t              5  t        j                  |dddd       d d d        t        j                  t              5  t        j                  |dddd       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)Nr  r         8@r   )r   labelvalminvalmax	slidermin)r   rH  rI  rJ  	slidermax)r?   r@   r=   r   r   rm   Slider)rG   r   s     r   'test_slider_slidermin_slidermax_invalidrN    s    llnGC	z	" '"Bs4!%	'' 
z	" '"Bs4!%	'' '' '' 's   B-BBB&c                  >   t        j                         \  } }t        j                  |dddd      }t        j                  |dddd|      }|j                  |j                  k(  sJ t        j                  |dddd|	      }|j                  |j                  k(  sJ y )
Nr  r   rG  r  r   rH  rI  rJ  valinitr  )r   rH  rI  rJ  rQ  rK  r   )r   rH  rI  rJ  rQ  rL  r?   r@   rm   rM  val)rG   r   slider_sliders       r   test_slider_slidermin_slidermaxrV    s    llnGCnn"S%(*G ^^rC$'7<F::$$$^^rC$(G=F::$$$r   c                     t        j                         \  } }t        j                  |dddd      }|j                  |j
                  k(  sJ t        j                  |dddd      }|j                  |j                  k(  sJ y )Nr  r   rG  g      $rP  g      9@)r?   r@   rm   rM  rS  rI  rJ  rG   r   rU  s      r   test_slider_valmin_valmaxrY    so    llnGC^^rC$)+F::&&&^^rC$(*F::&&&r   c            	          t        j                         \  } }t        j                  |ddddd      }|j                  dk(  sJ t        j                  |ddddg d      }|j                  d	k(  sJ y )
Nr  r   rG  g&@r   )r   rH  rI  rJ  rQ  valstepry   )r   r   r  g333333@r  rR  rX  s      r   test_slider_valstep_snappingr\    sm    llnGC^^rC$(!5F::^^rC$(2CEF::r   c                     t        j                         \  } }t        j                  |ddddd      }|j	                  d       |j
                  dk(  sJ |j                  j                         j                  |j                  j                               }t        |j                  g d       t        j                         \  } }t        j                  |ddddd	      }|j	                  d       |j
                  dk(  sJ |j                  j                         j                  |j                  j                               }t        |j                  g d
       y )Nr  r   r+  r  r;  )r   rH  rI  rJ  rQ  rD  rQ   )r   r   竪?r   r=  )r   r   r   r^  )r?   r@   rm   rM  r  rS  polyget_extentstransformedr%  invertedr   bounds)rG   r   rU  boxs       r   test_slider_horizontal_verticalre    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                      t        j                         \  } }t        j                  |dddd      }|j	                  d       |j                          |j                  dk(  sJ y )Nr  r   r   r   rP        ?)r?   r@   rm   rM  r  resetrS  rX  s      r   test_slider_resetri    sN    llnGC^^rAaLF
NN4
LLN::r   rD  c           	      >     dk(  rg d}ng d}t        j                         \  }}t        j                  |ddd ddg	      }|j                  j                         j                  |j                  j                               }t        |j                         j                         |   g d
       t        |j                  d        fd}|j                  d       t        |j                  d       t         ||      d       |j                  j                         j                  |j                  j                               }t        |j                         j                         |   g d       |j                  d       t        |j                  d       t         ||      d       |j                  d       t        |j                  d       t         ||      d       |j                          t        |j                  d       t         ||      d       y )Nr=  r   r   r   r   r   r   r   r   r  r   r  r  (\?r   rH  rI  rJ  rD  rQ  )r  r   rm  rg  )r  rm  c                     dk(  r+| j                   D cg c]  }|j                         d    c}S | j                   D cg c]  }|j                         d    c}S c c}w c c}w )Nr=  r   )_handlesr  	get_xdata)rU  hrD  s     r   ry  z+test_range_slider.<locals>.handle_positions  sS    *$.4oo>AKKM!$>>.4oo>AKKM!$>> ?>s   A A")皙?r  )rs  r   r  rg  )r   r  )r  r   )r  rQ   r"   )r?   r@   rm   RangeSliderr_  r`  ra  r%  rb  r   
get_pointsflattenrS  r  rh  )rD  idxrG   r   rU  rd  ry  s   `      r   test_range_sliderrx    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           	      d   | dk(  rg d}ng d}t        j                         \  }}t        j                  |ddd| ddg      }|j                  j                         j                  |j                  j                               }t        |j                         j                         |   g d	       y )
Nr=  rk  rl  r  r   r  r   rn  )r   r   r   rg  )r?   r@   rm   rt  r_  r`  ra  r%  rb  r   ru  rv  )rD  rw  rG   r   rU  rd  s         r   "test_range_slider_same_init_valuesrz  1  s    j llnGC  bSkQF ++
!
!
#
/
/0E0E0G
HCCNN$,,.s35GHr   c                     t               }t        j                  t        d      }t	        j
                  |fd|i|}| D ]  \  }}t        ||fi |  |j                  |k(  sJ |j                  |fi fk(  sJ y)a4  
    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- ,
u+
+, "2222?"5r!::::r   c                 Z    dt        | |      fdt        | |      fdt        | |      fgS )Nrc   r  r^   re   r   r  s     r   polygon_place_vertexr  d  s9    t%u56de455679 9r   c                 ^    dt        | |      fdt        | |d      fdt        | |d      fgS )Nrc   r  r^   r   r`   re   r  r  s     r   polygon_remove_vertexr  j  s?    t%u56deA>?5a@AC Cr   draw_bounding_boxc                    t        j                  t        |       }g d}g t        dd      t        dd      t        dd      t        dd      } |||d       g d}g t        dd      t        dd      dt	        d	      fd
t	        dd      fdt	        dd      fd
t	        dd      fdt	        dd      fdt	        d	      ft        dd      t        dd      } |||d       g d}g t        dd      t        dd      dt	        d	      fd
t	        dd      fdt	        dd      fd
t	        dd      fdt	        dd      fdt	        d	      ft        dd      t        dd      } |||d       g d}g t        dd      t        dd      t        dd      t        dd      d
t	        dd      fdt	        dd      fd
t	        dd      fdt	        dd      f} |||d       g d}g t        dd      t        dd      t        dd      t        dd      dt	        d	      fd
t	        dd      fdt	        dd      fd
t	        dd      fdt	        dd      fdt	        d	      f} |||d       g d}dt	        d	      fd
t	        dd      fdt	        dd      fd
t	        dd      fdt	        dd      fdt	        d	      fdt	        d	      fd
t	        dd      fdt	        dd      fd
t	        dd      fdt	        dd      fdt	        d	      fgt        dd      t        dd      t        dd      t        dd      } |||d       g d}g t        dd      t        dd      dt	        d	      fdt	        d	      ft        dd      t        dd      t        dd      t        dd      } |||d       y )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  so   &&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                    t        j                  | t        dd      t        d      |      }g t        dd      t        dd      t        dd      t        dd      }|D ]  \  }}t	        ||fi |  |j
                  }|j                         dk(  sJ |j                         dk(  sJ |j                  d	d
       |j                         d	k(  sJ |j                         d
k(  sJ |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  |j                  d	d
       |j                  D ],  }|j                         d	k(  sJ |j                         d
k(  r,J  y )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  . ,
u+
+, ##F$$$$$$NNCN($$$$$$'' )!S(((!S((() 	3/'' )!S(((!S((()r   c                     | j                         }|j                         }t        j                  |ddi      }d|_        y )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   rw  )r   r   r   c                 6   g d}t        |d    t        |d    t        |d    t        |d    g}|j                  | t        dd             |j                  t        dd             t	        j
                  t        j                  |g       }t        ||d|       y )Nr  r   r   r      r  )	r  insertappendr  r  reduceoperatoriaddr  )rw  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>5!->@r   c                     g d}g t        |d    t        |d    t        |d    t        |d    t        |d    }t        ||dd  d|        y 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 >59a->@r   c                 .   g d}g t        |d    t        |d    t        |d    t        |d    t        |d    t        |d    t        |d    }t        j                  | |      }|D ]  \  }}t	        ||fi |  |j
                  |dd k(  sJ y 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 ""29JKD- ,
u+
+, ::q###r   c                 b   g d}| j                         }t        j                  ||      }||_        |j                  |k(  sJ |j                         }t        j                  ||      }g t	        |d    t	        |d    t	        |d    t	        |d    }|D ]  \  }	}
t        ||	fi |
  y )N))r  rs  )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''CTUIIO??e###  "F&&vARSH	uQx	(	uQx	( 
uQx	( 
uQx	(	N  . 0
5/J/0r   c                    | j                  dd       g d}g t        |d    t        |d    t        |d    t        |d    t        |d    }t        j                  | d	      }|D ]  \  }}t	        ||fi |  | j
                  }| j                  d
      j                  }t        d|g|j                  d      d j                          t        d|g|j                  d       j                          t        d|g|j                  d      d j                          t        j                  j                  |j                  g d       t        d|g|j                  d      d j                          t        d|g|j                  d       j                          t        d|g|j                  d      d j                          t        j                  j                  |j                  g d       t        j                  j                  |j                  j                   d       t        d|g|j                  d      d j                          t        d|g|j                  d      d j                          t        j                  j                  |j                  g d       t        j                  j                  |j                  j                   d       y )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- ,
u+
+,
 	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                 v   t        j                  t        d       }t        j                  | |      }g dg dfD ]  }|D ]&  \  }}t        ||      D ]  \  }}t        ||fi |  ( |j                  }|j                  sJ |j                         sJ |j                         sJ t        j                  j                  |j                         |       |j                  |d d fi fk(  sJ |j                          |j                  rJ t        j                  j                  |j                         dg        y )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""2x0D==? ? 	4DAq%9!Q%? 4!zu3
34	4 ''((((!!!!!###


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

,,,,


 1 1 3fX>!?r   horizOnvertOnc                    t        j                         }|j                  dd      \  }}t        j                         j                         }t        j                  d ||fd| |      }t        |j                        dk(  sJ t        |j                        dk(  sJ t        |dd      }|j                  |       |j                  j                          |j                  D ]  }|j                         d	k(  rJ  |j                  D ]  }|j                         d
k(  rJ  t        |j                  D 	cg c]  }	|	j                         s|	 c}	      |rdndk(  sJ t        |j                  D 	cg c]  }	|	j                         s|	 c}	      | rdndk(  sJ |j                   |_        |j                    |_        t        |dd      }|j                  |       t        |j                  D 	cg c]  }	|	j                         s|	 c}	      |rdndk(  sJ t        |j                  D 	cg c]  }	|	j                         s|	 c}	      | rdndk(  sJ t        |dd      }|j                  |       |j                  D ]  }|j                         d	k(  rJ  |j                  D ]  }|j                         d
k(  rJ  y c c}	w c c}	w c c}	w c c}	w )Nr   T)sharexF)rO   r  r  r   r   r  )r   r   )r   r   r   rg  )r?   figurer@   rm   MultiCursorr  vlineshlinesr
   rc   rB   rC   rq  r  r_  r  r  )
r  r  rG   ax1ax3ax2multieventlrh   s
             r   test_MultiCursorr    s    **,Ca-JS#
**,


!C sCj%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   5KK2K
K
2KK/KK)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)  r2  r:  r<  r@  rE  rN  rV  rY  r\  re  ri  rx  rz  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   