
    EVf                       d dl Z d dlZd dlm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 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!jD                  d	        Z#d
 Z$e!jJ                  jM                  d e'        e'dd       e'ddd       e' e'd            g      d        Z(e!jJ                  jM                  dddg      e!jJ                  jM                  dd dgddgddgg      e!jJ                  jM                  dd dgddgddgg      d                      Z)d Z*e!jJ                  jM                  dddgdd gg      d!        Z+d" Z,d# Z-d$ Z.e!jJ                  jM                  d%ddg      d&        Z/e!jJ                  jM                  d%ddg      d'        Z0d( Z1e!jJ                  jM                  d)ejd                  ejf                  g      d*        Z4d+ Z5e!jJ                  jM                  d,ddg      d-        Z6d. Z7d/ Z8e!jJ                  jM                  d0ddg      d1        Z9e!jJ                  jM                  d2ddg      d3        Z:e!jJ                  jM                  d4d5d e'dd6      fd7d e'd8      fd5d e' e'd            fd5d e'd9      fg      d:        Z;e!jJ                  jM                  d0ddg      d;        Z<e!jJ                  jM                  d2ddg      d<        Z=e!jJ                  jM                  d=ddg      d>        Z>d? Z?d@ Z@e!jJ                  jM                  dAdBdCg      dD        ZAe!jJ                  jM                  dAdBdCg      dE        ZBdF ZCdG ZDe!jJ                  jM                  dHdI      dJ        ZEe!jJ                  j                  dKdL      dM        ZGdN ZHdO ZIe!jJ                  jM                  d e'        e'd e'dPQ      R       e'dd      g      dS        ZJdT ZKdU ZLe!jJ                  jM                  dVg dW      dX        ZM edYgdZd[      d\        ZN ed]g^      d_        ZO ed]g^      d`        ZPda ZQ ed]g^      db        ZR ed]g^      dc        ZS ed]g^      dd        ZT ed]g^      de        ZU ed]g^      df        ZVdg ZWdh ZXdi ZYdj ZZdk Z[dl Z\e!jJ                  jM                  dmd5d7g      dn        Z]e!jJ                  jM                  dmd5d7g      do        Z^dp Z_dq Z`dr Zae!jJ                  jM                  dsddg      dt        Zbe!jJ                  jM                  dsddg      du        Zc e       dv        Zde!jJ                  jM                  dwg dx      e!jJ                  jM                  dsddg      dy               Zee!jJ                  jM                  dsddg      dz        Zfe!jJ                  jM                  dsddg      d{        Zge!jJ                  jM                  dsddg       ed]g^      d|               Zhd} Zid~ Zje!jJ                  jM                  dddg      e!jJ                  jM                  dddg      d               Zky)    N)mock)
MouseEvent)	Rectangle)Line2D)check_figures_equalimage_comparison)click_and_dragdo_eventget_ax
mock_eventnoop)assert_allclosec                      t               S N)r        f/var/www/html/software/conda/envs/catlas/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)r4   r2   frame_propscheck_propsDefaultStylizedpdf)format)matplotlib.widgetsr   r   matplotlib.cbookr   pytestxfailpltsubplots	set_titlecanvasdrawioBytesIOsavefig)
r   r   r   figr   
default_rb	styled_rb
default_cb	styled_cbresult_afters
             r   test_save_blitted_widget_as_pdfrO      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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pressd   r   xdataydatarR   onmove   release   drawtype)linenone)      Y@r`   re   re   r`   )r`   re   re   r`   r`   )err_msg)r   Mockr   widgetsRectangleSelectorr
   getr   geometryassert_called_once	call_argsrb   rc   )r   rP   onselecttoolepressereleases         r   test_rectangle_selectorrx   B   s    yyd6H$$R<V<DT7#S;T83c!< T9Cs1=zz*d#+;;324 $	/
 !!)!3!3VX<<3<<3>>S   >>S   R<<r   rW   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 )	Nr\   rS   rS   rT   T)interactiverW   rU   rV   startendr(   r(      r   )r   rm   r   	transData	transformrn   ro   r	   _selection_completedassert_not_calledrr   
reset_mockrs   rb   rc   )r   rW   rU   x1rV   y1rt   x0y0ru   rv   rw   rP   s                r   test_rectangle_minspanr   a   s|   
 yyd6HFBX ll44b"X> ll44b"X>?( $$Rt0:.6KD 4Bxb"X6(((( 4xX6$$$$! 4Bxb"X6((((!!)!3!3VX<<2<<2>>R>>RR<<r   c                     t        j                  | d       }|j                         sJ t        j                  t
        j                  d      5  |j                   d d d        y # 1 sw Y   y xY w)Nc                       y r   r   argss    r   <lambda>z=test_deprecation_selector_visible_attribute.<locals>.<lambda>       r   z was deprecated in Matplotlib 3.8match)rn   ro   get_visibler?   warnsmplMatplotlibDeprecationWarningvisibler   ru   s     r   +test_deprecation_selector_visible_attributer      s[    $$R);<D	c66>
@   s   A%%A.zdrag_from_anywhere, new_center)<   K   Fr   r(   c                     t        j                  | t        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)rt   r~   drag_from_anywherer   rS   r`   x   r   )2   A         #   r         r      )      )rn   ro   r   r	   center)r   r   
new_centerru   s       r   test_rectangle_dragr      s~     $$R$D8JLD 4wJ7;;(""" 4xX6;;*$$$ 4zz:;;*$$$r   c           	      ~   t        j                  | t        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皙?r0   alpha      ?r   )rt   r~   rZ   handle_propsr   r   r   r333333?black)markeredgecolorr   )rn   ro   r   dictr	   _selection_artistget_facecolormcolorsto_rgba	set_props_handles_artistsget_markeredgecolor	get_alphaset_handle_propsr   ru   artists      r   .test_rectangle_selector_set_props_handle_propsr      s2   $$R$D+/#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                  | t        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rt   r~   r   r   r   )        rk         $@      ^@r      rS   r   r   r   r   r(   r   )rn   ro   r   r	   extents)r   ru   r   rb   rc   	xdata_new	ydata_news          r   test_rectangle_resizer      s   $$R$DID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                  | t        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   )rn   ro   r   r	   r?   raises
ValueError	add_stater   s     r   test_rectangle_add_stater      s    $$R$DID4xZ8	z	" ,*+, 
z	"  w NN6NN8NN8, ,   s   C7CCCr   c                    t        j                  | t        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   rS   r   r   r   keyr   r   rS   r   r(   r   rn   ro   r   r	   r   r   r   r   ru   use_keyr   rb   rc   xdiffydiffr   r   s              r   test_rectangle_resize_centerr      s   $$R$DID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                  | t        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   rS   r   r   r   r   r   r   s              r   test_rectangle_resize_squarer   :  s   $$R$DID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                  | t        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   rS   r   r   r   r   )rn   ro   r   r	   r   r   r   )	r   ru   r   rb   rc   r   r   r   r   s	            r   #test_rectangle_resize_square_centerr     s   $$R$DID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                 J    || t         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	   r   len_stater
   r   rotationcornersnparrayrn   ro   r?   r   r   r   rotation_point)r   r  ru   s      r   test_rectangle_rotater    s    "t>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   =FF"c                 h   t        j                  | t        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   )	rn   ro   r   r	   r   r  r  r   remove_state)r   ru   states      r   test_rectangle_add_remove_setr    s    $$R$DID4zz:<<////t{{q   / %u4;;1$$$% 4;;1$$$	%r   use_data_coordinatesc                    | j                  d       t        j                  | t        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)rt   r~   r  r   r   r   r   r   r   r   r   r   rS   r   g      G@g     `@)	
set_aspectrn   ro   r   r	   r   r   r   _aspect_ratio_correction)r   r  ru   r   rb   rc   widthr   ycenterr   r   ychanges               r   *test_rectangle_resize_square_center_aspectr%    s   MM#$$R$D: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                 :   t        j                  | t        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 modifiersrS   T)rt   
grab_ranger~   r`      r`   r)  r   r   )r
  r
  r   )r      r   r+  r  r   r   )r   r   r   r   r}   )r   r   r   )rS   r   rS   r   r   z
ctrl+shift)r   r   r   r   )r   I   Nr   r   r`   )	rn   EllipseSelectorr   r   r	   intrq   shaper   )r   ru   er   s       r   test_ellipser1    s   ""2.0dDD'DL 4zz:<<//// 4zzyI<<---- 4xX7C#||,!s1v,G,&&&& 4zz|L#||,!s1v,G,((((==')))DMM!Q$'#s4 -
 -s   D;Dc           	         t        j                  | t        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 )NrS   Tr   r   )markerfacecolorr   )rt   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)  )   r4  )l      r5  r6  r}   )rS   r`   rS   r`   r   )rn   ro   r   r   r   r  edge_centersr	   r   
same_color_corner_handlesartistsget_markerfacecolorr   r   s     r   test_rectangle_handlesr<  1  sT   $$R$0215FIFI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 )Nr\   r~   r`   r  r)  r   r   rk        b@g     [@r   rS   r`   )	r   rm   r   rn   ro   r	   rr   r   r   r   r~   rt   ru   s       r    test_rectangle_selector_onselectrE  R  sw     yyd6H$$R{KD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 )
Nr\   )rF  r?  r@  r   rA  r)  r)  r  r  )rB        d@rB  rJ  )
r   rm   r   rn   ro   r	   rr   r   r   r   )r   rF  rt   ru   s       r   &test_rectangle_selector_ignore_outsiderK  c  s    yyd6H$$R:NPD4zz:!<<77774zz:""$||;;;; 	##%||;;;;r   z$orientation, onmove_callback, kwargs
horizontal)minspanrQ   vertical)rR   r>  c                    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 )Nr\   onmove_callbackautor_   r`   r   ra   rd   re   rf   rg   )	r   rm   r   r   twinxrn   SpanSelectorr
   assert_called_once_with)r   orientationrP  rP   rt   rd   taxru   s           r   test_span_selectorrW  z  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 )	Nr\   rL  r>  r  )r)  r`   r   )r`   r)  rC  )	r   rm   r   rn   rS  r	   rr   r   r   rD  s       r   test_span_selector_onselectrY    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 )Nr\   rL  )rP  rF  r  r*  r   )r`   r   rH  rI  )r)  r  )
r   rm   r   rn   rS  r	   rr   r   r   r   )r   rF  rt   rd   ru   s        r   !test_span_selector_ignore_outsider[    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 )NrL  T)rt   	directionr~   r   r}   r   r   rC  r   r   )r(   r  )r   r   r   r   )rn   rS  r   r	   r   )r   r   ru   s      r   test_span_selector_dragr^    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)NrL  T)rt   r]  r~   invalid_direction)rt   r]  rN  invalid_string)rn   rS  r   r]  _edge_handlesr?   r   r   r   s     r   test_span_selector_directionrc    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 )NrL  Tr   r   r   r   r   )rt   r]  r~   rZ   r   r   r   r   r   r   r*   r   )rn   rS  r   r   r	   r   r   r   r   r   r   	get_colorr   r   r   s      r   )test_span_selector_set_props_handle_propsrg    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        | t        d      }|dk(  rt        j                  }d|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   rt   r~   ri  rL  r]  r}   r   r   )r   r   rF  r  escaper  r   )	r   r   rn   rS  ro   r	   r   rF  r
   )r   rh  rP   Selectorru   s        r   test_selector_clearrn    s    R$D9F6''*{,,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                  | t        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 )Nri  rL  T)rt   r]  r~   rF  r   r}   r   r   rC  )r   r   )rS   r   )	rn   rS  r   ro   r	   r   r   r   r   )r   rh  ru   s      r   test_selector_clear_methodrp  $  s    6##B049=? ((dM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)NrL  Tr>  r   r   r   r   )rn   rS  r   r?   r   r   r   r   s     r   test_span_selector_add_staterr  >  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   rL  F)rQ   T)rn   ToolLineHandlesr:  get_animatedr   set_visibleset_animated	positions)r   rx  tool_line_handler   s       r   test_tool_line_handlerz  L  s    I..r9l7<> #** (&&(((%%'''(   &!!$'"** $""$$$!!###$ %%222r   r]  )rL  rN  c                    t        j                  dd      \  }}|j                  ddgddg       |j                  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   rS   r(   r   Tr>  rL  )rz   g      '@)r{      r   r   )rA   rB   plotfigurerD   rE   
get_xbound
get_yboundrn   rS  printrb  rx  listr	   )r]  rI   r   x_boundy_boundru   bound
press_data	move_datarelease_dataindexhandle_positionss               r   test_span_selector_boundr  _  sC   ll1a GCGGRHr2hII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   rL  )r]  rP  r~   r   rQ   r   r_   ra   rd   FgSG-?   r   gȄC(rf   N)r  linspacepisinrA   rB   r}  pausedraw_artistrD   blitbboxrn   rS  r
   _get_animated_artistsstaler   	get_ydataupdate)rI   r   lnr  ri  r  r  r  r  r  r  s           @@@r   ,test_span_selector_animated_artists_callbackr  {  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   r   s    r   rt   z4test_snapping_values_span_selector.<locals>.onselect  s    r   rL  )r]  r   r   r{   )
gr  r   r   333333?ffffff??g
ףp=
@      @      @)
r   r   r   r   r   r         ?r  r  r  )rn   rS  _snapr  r  r  r   )r   rt   ru   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   rt   z)test_span_selector_snap.<locals>.onselect  s    r   r   r  rL  )r]  r  )   r   )r'   $   )r  arangern   rS  r   r  )r   rt   r  ru   s   `   r   test_span_selector_snapr    s      ))B-!#KH,79DDL<<8###D###DL<<8###r   r%   )r*   )rQ   rZ   c                     t        j                  t        d       }t        j                  | |fi |}t        |dddd       t        |dddd       t        |dd	d	d       |j                  g d
       y )Nr\   r_   r`   r   ra   rd   r   rf   r)  )r  r*  rH  )r   rm   r   rn   LassoSelectorr
   rT  )r   rP   rt   ru   s       r   test_lasso_selectorr    sj     yyd6H  X88D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 )Nr\   r   r   re  rY   r   r   )r   rm   r   rn   r  r   r   r   r8  rf  r   r   )r   rt   ru   r   s       r   test_lasso_selector_set_propsr    s    yyd6H  XT35OPD##Ff..0#666$$$NNCN(f..0#666$$$r   c                     t        j                  | dd      }|j                         g dk(  sJ |j                  d       |j                         g dk(  sJ |j	                  d       }|j                  |       y )N)ar   c)TFTr   )FFTc                       y r   r   r   r   r   r   z#test_CheckButtons.<locals>.<lambda>  r   r   )rn   r   
get_status
set_active
on_clicked
disconnect)r   checkcids      r   test_CheckButtonsr    ss      _6IJE!4444	Q!5555


<
(C	Sr   toolbar)rj   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  r\    _clickzx**2r   r   r   rb   rc   	_keypress+r  5r   )rA   rcParams_setr   rm   r   rn   TextBox	on_submiton_text_changetextr
   set_val
call_countbegin_typingstop_typing)r   r  submit_eventtext_change_eventru   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   zcheck_radio_buttons.pngmpl20)styleremove_textc            
         t               } | j                  }|j                  d       |j                  d      }t	        j
                  |d      }t        j                  t        d      5  |j                   d d d        |j                  d      }t	        j                  |dd	      }t        j                  t        d
      5  |j                   d 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 # 1 sw Y   xY w# 1 sw Y   xY w)Nr   )left)皙?r  r   333333?)zRadio 1zRadio 2zRadio 3z$The circles attribute was deprecatedr   )r  r   r   r  )zCheck 1zCheck 2zCheck 3)FTT'The rectangles attribute was deprecated)r  r   r   r  )      r'   )r%   greenblue)r+   r*   )r,   	palegreen	lightbluer.   r1   )r  r  r   r  r*   r2   r7   r8   )r   r~  subplots_adjustadd_axesrn   r   r?   r   DeprecationWarningcirclesr   
rectangles)
r   rI   rax1rb1rax2cb1rax3rb3rax4cb4s
             r   test_check_radio_buttons_imager    sU   	B
))CS!<<./D


t%F
GC	(B
D  <<./D


t%F24C	(E
G  <<./D


/!,68":"IK	LC <<./D


/1D!,68":"IK679C)  s   +EEEE$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   C0rj   )r   sr        ?r   r   va)	rn   r   rB   add_subplotscatter	transAxesrA   r  r  fig_testfig_refr   s      r   test_radio_buttonsr  ?  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   r0   r/   	linewidthr  r  r1   r        b@)rn   r   rB   set_label_propsset_radio_props)r  r  r2   r3   cbs        r   test_radio_buttons_propsr#  I  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\* parameterr   r  r  r%   r0   r  )activecolorr3   rj   )	r?   r   UserWarningrn   r   r   r8  _buttonsr   )r   rbs     r   !test_radio_button_active_conflictr)  X  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  )r%  r%   )rn   r   rB   r%  )r  r  r"  s      r   %test_radio_buttons_activecolor_changer+  a  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   rj   )markerr   r  r  r  kr  r   r  )	rn   r   rB   r  r  r  rA   r  r  r  s      r   test_check_buttonsr/  l  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  )r0   r  r  r  Tr  r  r  r0   r/   )rn   r   rB   r   set_frame_propspopset_check_props)r  r  r2   r7   r8   r"  s         r   test_check_button_propsr4  x  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                    t        j                  | j                         ddgddg      }t        j                  t
        d      5  |j                   d d d        |j                  g g       }ddg}d}|dz  |dz  }}t        |      D 	cg c]+  \  }}	t        d	||   |dz  z
  f||d
d|j                        - }
}}	|
D ]  }|j                  |        y # 1 sw Y   xY wc c}	}w )Nr  Fr  r   r	  r  r  r   r  r   rj   )xyr"  heightr/   r0   r   )rn   r   rB   r?   r   r  r  r  	enumerater   r  	add_patch)r  r  r"  r   ysdywhiyr  rj  s               r   test_check_buttons_rectanglesr@    s    
		h//1B8$en
.B	(E
G 
 
		Br		2B
sB	B626qA bM Aq 	dBqEAEM*!A#"LL	J     	
Y  s   C0C#C c                    t        j                  | j                         ddgddg      }t        j                  t
        d      5  |j                   d d d        |j                  D ]  }|j                  d        |j                  g g       }ddg}d}|d	z  |d	z  }}d
d|j                  dd}	t        |      D ]  \  }
}d||d	z  z
  }}t        |||z   g||z   |gfi |	}t        |||z   g|||z   gfi |	}|j                  d       |j                  d       |j                  |       |j                  |        y # 1 sw Y   xY w)Nr  Tz"The lines attribute was deprecatedr   Fr	  r  r  r   r.  g      ?butt)r*   r  r   solid_capstyler  )rn   r   rB   r?   r   r  lines_rectanglesrv  r  r  r8  r   add_line)r  r  r"  rj  r   r:  r;  r<  r=  
lineparamsr>  r?  r  l1l2s                  r   test_check_buttons_linesrJ    s_    
		h//1B8dD\	JB	(@
B 
 ^^ %	e$%			Br		2B
sB	B626qAT!#&,.J " 1QQY1QAJQ
9j9QAJAE
9j9
t
t
B
B s   E  E	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   rM  rN  rO  	slidermax)rA   rB   r?   r   r   rn   Slider)rI   r   s     r   'test_slider_slidermin_slidermax_invalidrS    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   rL  r  r   rM  rN  rO  valinitr  )r   rM  rN  rO  rV  rP  r   )r   rM  rN  rO  rV  rQ  rA   rB   rn   rR  val)rI   r   slider_sliders       r   test_slider_slidermin_slidermaxr[    s    llnGCnn"S%(*G ^^rC$'7<F::$$$^^rC$(G=F::$$$r   c                     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   rL  g      $rU  g      9@)rA   rB   rn   rR  rX  rN  rO  rI   r   rZ  s      r   test_slider_valmin_valmaxr^    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   rL  g&@r   )r   rM  rN  rO  rV  valstepr{   )r   r   r  g333333@r  rW  r]  s      r   test_slider_valstep_snappingra    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  rL  )r   rM  rN  rO  rV  rU  rS   )r   r  竪?r   rN  )r  r   r   rc  )rA   rB   rn   rR  r  rX  polyget_extentstransformedr  invertedr   bounds)rI   r   rZ  boxs       r   test_slider_horizontal_verticalrj    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   rU        ?)rA   rB   rn   rR  r  resetrX  r]  s      r   test_slider_resetrn    sN    llnGC^^rAaLF
NN4
LLN::r   rU  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 )NrN  r   r   r   r   r   r   r   r   r  r   r  r  (\?r   rM  rN  rO  rU  rV  )r  r  rr  rl  )r  rr  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 )NrN  r   )_handlesr  	get_xdata)rZ  r=  rU  s     r   r  z+test_range_slider.<locals>.handle_positions   sS    *$.4oo>AKKM!$>>.4oo>AKKM!$>> ?>s   A A")皙?r  )rw  r  r  rl  )r   r  )r  r   )rS   r$   )rA   rB   rn   RangeSliderrd  re  rf  r  rg  r   
get_pointsflattenrX  r  rm  )rU  idxrI   r   rZ  ri  r  s   `      r   test_range_sliderr}    s   j llnGC  RC[dF ++
!
!
#
/
/0E0E0G
HCCNN$,,.s35LM FJJ,? NN:FJJ
+$V,j9
++
!
!
#
/
/0E0E0G
HCCNN$,,.s35IJ
NN:FJJ
+$V,j9
NN8FJJ'$V,f5
LLNFJJ,$V,k:r   c           	      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 )
NrN  rp  rq  r  r   r  r   rs  )r   r  r   rl  )rA   rB   rn   ry  rd  re  rf  r  rg  r   rz  r{  )rU  r|  rI   r   rZ  ri  s         r   "test_range_slider_same_init_valuesr  :  s    j llnGC  bSkQF ++
!
!
#
/
/0E0E0G
HCCNN$,,.s35GHr   c                     t               }t        j                  t        d      }t	        j
                  ||f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.
    Nr\   )	r   r   rm   r   rn   PolygonSelectorr
   r  rs   )	event_sequenceexpected_resultselections_countrP   r   rt   ru   etype
event_argss	            r   check_polygon_selectorr  K  s    * 
Byyd6H""2x:6:D- ,
u+
+, "2222?"5r!::::r   c                 Z    dt        | |      fdt        | |      fdt        | |      fgS )Nrd   r  r_   rf   r   r  s     r   polygon_place_vertexr  m  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 )Nrd   r  r_   r   ra   rf   r  r  s     r   polygon_remove_vertexr  s  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  rd   r  r_   r   rf   on_key_release))r   r   )r)  r   r  r   r`   r   r   ))r   r   )r   r   )r   r   rg   rl  )	functoolspartialr  r  r   )r  check_selectorr  r  s       r   test_polygon_selectorr  y  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        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   re  r   r   )rt   rZ   r   r  r   r)  r   r   )rn   r  r   r   r  r
   r   rf  r   r   r   r   )r   r  ru   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                  |t        ddi      }d|_        y )Nr   F)rt   rZ   )r   r  r   r  )rB   rn   ro   r   r   )r  r  ax_test_ru   s        r   test_rect_visibilityr    sC     !GA$$Wt,5u+=?D'DLr   r|  )r   r   r   c                    g d}t        |d    t        |d    t        |d    t        |d    g}|j                  | t        dd             |j                  t        dd             t	        |g       }t        ||d|       y )Nr  r   r   r      r  )r  insertappendr  sumr  )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:,N>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                 8   g d}g t        |d    t        |d    t        |d    t        |d    t        |d    t        |d    t        |d    }t        j                  | t        |      }|D ]  \  }}t        ||fi |  |j                  |dd k(  sJ y )Nr  r   r   r   rt   r  )r  r  rn   r  r   r
   r  )r   r  r  r  ru   r  r  s          r   test_polygon_selector_redrawr  9  s    ,E
	uQx	(
	uQx	(
 
uQx	(
 
uQx	(	
 
a	)
 
a	)
 
uQx	(
N ""25FHD- ,
u+
+, ::q###r   c                 v   g d}| j                         }t        j                  |t        |      }||_        |j                  |k(  sJ |j                         }t        j                  |t        |      }g t        |d    t        |d    t        |d    t        |d    }|D ]  \  }	}
t        ||	fi |
  y )N))r  rw  )r   r  )r   r   r  r   r   r   )r  rn   r  r   r  r  r
   )r  r  r  r  r  	tool_testax_reftool_refr  r  r  s              r   "test_polygon_selector_verts_setterr  Q  s     1E""$G''$2CEIIO??e###  "F&&1BDH	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                  | t        d	      }|D ]  \  }}t        ||fi |  | j                  }| j                  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  button_press_event)r  r  motion_notify_eventr   button_release_event))rS   r   r   )rS   r(   )r(   rS   r}   r   )r   r(   r   r   r  r  r   )      4@      D@r  r  r   )r  r  r  )r  r  g      >@r  )setr  rn   r  r   r
   r   r~  rD   r   r   _processr  testingr   r  _boxr   )r   r  r  ru   r  r  trD   s           r   test_polygon_selector_boxr  i  s   FF		F*2E	uQx	(	uQx	( 
uQx	( 
uQx	(	
 
uQx	(N ""2MD- ,
u+
+,
 	AYY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 )Nr\   )r  r  r  r  )r  )r`   r   r  r  rx  r!   )r   rm   r   rn   r  r  r
   r   r   r   r  r  assert_equal
get_xydatars   r   )	r   rt   ru   resultr  r?  r  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                          |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)rQ   r  r  r   r  r  )r   r   )r  r  r   rl  )rA   r~  rB   rn   MultiCursorr  vlineshlinesr   rd   rD   rE   rv  r  r   r  r  )	r  r  ax1ax3ax2multieventlri   s	            r   test_MultiCursorr    s    &&q&6JS#
**,


!C sCj%E
 u||!!!u||!!!
 s"C0E	LLJJ \\ ){{}((()\\ +{{}
***+ 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   =KK:KK:KK7KK)lr  rF   unittestr   
matplotlibr   matplotlib.backend_basesr   matplotlib.colorscolorsr   r=   rn   matplotlib.pyplotpyplotrA   matplotlib.patchesr   matplotlib.linesr   matplotlib.testing.decoratorsr   r   matplotlib.testing.widgetsr	   r
   r   r   r   numpyr  numpy.testingr   r?   fixturer   rO   markparametrizer   rx   r   r   r   r   r   r   r   r   r   ro   r-  r  r  r%  r1  r<  rE  rK  rW  rY  r[  r^  rc  rg  rn  rp  rr  rz  r  backendr  r  r  r  r  r  r  r  r  r#  r)  r+  r/  r4  r@  rJ  rS  r[  r^  ra  rj  rn  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58DB 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%:;) <)8 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!9H (E )E (: ):N ( ) (E )E (: ):, (  ) . ( )4'%'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1+ 2 31+r   