
    P/Phq                       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         !                    d	 e"             e"d
d           e"ddd           e" e"d
                    g          d             Z#ej         !                    dddg          ej         !                    dd dgddgddgg          ej         !                    dd dgddgddgg          d                                     Z$ej         !                    dd
dgddgg          d             Z%d Z&d  Z'd! Z(ej         !                    d"d
dg          d#             Z)ej         !                    d"d
dg          d$             Z*d% Z+ej         !                    d&ej,        ej-        g          d'             Z.d( Z/ej         !                    d)dd
g          d*             Z0d+ Z1d, Z2ej         !                    d-d
dg          d.             Z3ej         !                    d/d
dg          d0             Z4ej         !                    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         !                    d-d
dg          d8             Z6ej         !                    d/d
dg          d9             Z7ej         !                    d:d
dg          d;             Z8d< Z9d= Z:ej         !                    d>d?d@g          dA             Z;ej         !                    d>d?d@g          dB             Z<dC Z=dD Z>ej         !                    dEdF          dG             Z?ej         @                    dHd
I          dJ             ZAdK ZBdL ZCdM ZDej         !                    d	 e"             e"d e"dNO          P           e"d
d          g          dQ             ZEdR ZFdS ZGdT ZHej         !                    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         !                    dkd2d4g          dl             ZXej         !                    dkd2d4g          dm             ZYdn ZZdo Z[dp Z\ej         !                    dqdd
g          dr             Z]ej         !                    dqdd
g          ds             Z^ e            dt             Z_ej         !                    dug dv          ej         !                    dqdd
g          dw                         Z`ej         !                    dqdd
g          dx             Zaej         !                    dqdd
g          dy             Zbej         !                    dqdd
g           ed]g^          dz                         Zcd{ Zdd| Zeej         !                    d}dd
g          ej         !                    d~dd
g          d                         ZfdS )    N)mock)
MouseEvent)check_figures_equalimage_comparison)click_and_dragdo_eventget_ax
mock_eventnoop)assert_allclosec                      t                      S N)r	        ]/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/tests/test_widgets.pyaxr      s    88Or   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
         	                    d           |d         	                    d            |j
                                         t          j                    5 }	|                    |	d!"           d d d            d S # 1 swxY w Y   d S )#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      sJ   ========CCCCCC))++3EEEDEEElq&1v  GC bh9(=>>J
48Y'$h/"$b+ +#(("3#."<> >	  I bh9(='+Tl4 4 4J
48Y't$h/"$b+ +#(("3#."<> >y,78  I tHy!!!tHz"""JOO	 0L///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   ,EEE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           |                    dd           dvr"t          |j        g dg dg|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 d S )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   @   sV    yd666H$REE(EfEEDT7#S;;;;T83c!<<<< T9Cs1====zz*d##+;;;3332224 $	/ 	/ 	/ 	/
 !!!!)!3VX<3<3>S    >S    R<<<<<<r   rU   datazminspanx, x1      %@   zminspany, y1c                    t          j        t          d           }d\  }}|dk    r<| j                            ||f          | j                            ||f          z
  \  }}t          j        | |d|||          }	t          |	||f||f           |	j        rJ |	                                 t          |	dd           |	j        sJ |
                                 |                                 t          |	||f||f           |	j        rJ |
                                 |j        \  \  }
}}|
j        |k    sJ |
j        |k    sJ |j        |k    sJ |j        |k    sJ |i k    sJ d S )	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   
 yd666HFBX l44b"X>> l44b"X>>?( $R(0:.6K K KD 4Bxb"X6666((((   4xX6666$$$$!!! 4Bxb"X6666((((!!!!)!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 d S )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 L LD 4wJ7777;("""" 4xX6666;*$$$$ 4zz::::;*$$$$$$r   c                    t          j        | dt          dd          t          d                    }t          |dd	
           |j        }|                                t          j        dd          k    sJ |                    dd           |                                t          j        dd          k    sJ |j	        D ]6}|
                                dk    sJ |                                dk    sJ 7|                    dd           |j	        D ]6}|
                                dk    sJ |                                dk    sJ 7d S )NTb皙?r.   alpha      ?r   )r|   rX   handle_propsr   r   r}   r333333?black)markeredgecolorr   )rm   rn   dictr   _selection_artistget_facecolormcolorsto_rgba	set_props_handles_artistsget_markeredgecolor	get_alphaset_handle_propsr   rs   artists      r   .test_rectangle_selector_set_props_handle_propsr      s   $RT+/#S+I+I+I26S///C C CD 4wJ7777#F!!W_S%D%D%DDDDDNNSN,,,!!W_S%D%D%DDDDD' ) )))++w6666!!S(((((#S999' ) )))++s2222!!S((((() )r   c                 p   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 d S )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777<44444 lG1:wqz5E 2:uqyyI4u~Iy3IJJJJ<GAJ	71:yIIIII lG1:wqzWQZ'!*-D,II5E 2:uyI4u~Iy3IJJJJ<GAJ	71:wqzJJJJJ lG1:wqzWQZ'!*-D,II5E 2:uyI4u~Iy3IJJJJ<Iwqz71:wqzJJJJJ lG1:wqz5E 2:urzyI4u~Iy3IJJJJ<Iwqz9gajIIIIIIIr   c                    t          j        | d          }t          |dd           t          j        t
                    5  |                    d           d d d            n# 1 swxY w Y   t          j        t
                    5  |                    d           d d d            n# 1 swxY w Y   |                    d           |                    d	           |                    d
           d S )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      sY   $RT:::D4xZ8888	z	"	" , ,*+++, , , , , , , , , , , , , , , 
z	"	"    w                             NN6NN8NN8s$   A$$A(+A(B**B.1B.r   c                    t          j        | d          }t          |dd           |j        dk    sJ |r|                    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 d S )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888<55555 x    lG1:wqz5ELE5 5=%%-yI4u~Iy3I       <GAJ.	#AJ.	; ; ; ; ; lG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I       <GAJ.	#AJ
4 4 4 4 4 lG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I       <GAJ.	#AJ
4 4 4 4 4 lG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I       <IwqzE'9#AJ
4 4 4 4 4 lG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I       <IwqzE'9#AJ
4 4 4 4 4 lG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|                    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 d S )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888<55555 x    lG1:wqz5ELE5 5=%%-yI4u~Iy3I       <GAJ	#AJ
U(:< < < < < lG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I       <GAJ	#AJ
U(:< < < < < lG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I       <GAJ	#AJ
U(:< < < < < lG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I       <Iwqz#AJ
U(:< < < < < lG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I       <Iwqz#AJ
U(:< < < < < lG1:wqz5ELE5 5=%%-yI4u~Iy3I       <GAJ.
%wqz3 3 3 3 3 3 3r   c                    t          j        | d          }t          |dd           |                    d           |                    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           d S )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888NN8NN8DL"<=== lG1:wqz5ELE5 5=%%-yI4u~Iy3IJJJJDL71:#5y#*1:#5wqzE7I#K L L L lG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJJJJDL71:#5y#*1:#5wqzE7I#K L L L lG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJJJJDL71:#5y#*1:#5wqzE7I#K L L L lG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJJJJDL9gaj5.@#*1:#5wqzE7I#K L L L lG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJJJJDL9gaj5.@#*1:#5wqzE7I#K L L L lG1:wqz5ELE5 5=%%-yI4u~Iy3IJJJJDL71:#5wqzE7I#,gaj5.@#B C C C C Cr   selector_classc                 B    || 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    r@t          j        t                    5  d|j        _        d d d            d S # 1 swxY w Y   d S d S )NTr   r_   r_   r      r}   r_   r   r_   r   r   on_key_pressr   r   rotater   )r      g(\9@g{Gz?)atol-   )gR]@     xa@g=
ףp[@g     V@)g     W@g=
ףp]@g     b@g(\^@)n   r   )r      )r_   r   r_   g
ףp=b@unvalid_value)r   r   len_stater   r   rotationcornersnparrayrm   rn   r=   r   r   r   rotation_point)r   r   rs   s      r   test_rectangle_rotater    sO    >"$///D4zz::::</////t{q     T>s++++;8*$$$$t{q    4zz::::T>s++++t{q    </////DM5t4444DM=BDLH======? @ @FJL L L L
 4zz::::DL"<4HHHH222]:&& 	D 	D4CD"1	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 32s   8FFFc                 j   t          j        | d          }t          |dd           |j        dk    sJ t	          |j                  dk    sJ dD ]`}|                    |           t	          |j                  d	k    sJ |                    |           t	          |j                  dk    sJ ad S )
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                    |                      d           t          j        | d|          }t          |dd           |j        dk    sJ |                    d           |                    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           d S |j        }|d
         |d         }}d}||z   |}
}	|d
z  |j        z  }t          |||f|	|
f           t          |j        |d         |z
  |	ddg           d S )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 P PD 4xZ8888<55555NN8NN8 7,%aj'!*gaj71:6MeugajGAJ,Cq+HHw$u}e9	!)e#tE5>	97MNNNNwqzE'99'.'8'G:K'M 	N 	N 	N 	N 	N ,qz71:u$u}e9	!)d;;tE5>	97MNNNNwqzE'99',f'6 	7 	7 	7 	7 	7r   c                    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           d |j        D             }|g dk    sJ t          |d	dd           d |j        D             }|g dk    sJ |j        j        dk    sJ t          |j        dddf         ddg           dS )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   c                 ,    g | ]}t          |          S r   int.0es     r   
<listcomp>z test_ellipse.<locals>.<listcomp>      ,,,!s1vv,,,r   )rQ   r   rQ   r   r   z
ctrl+shiftc                 ,    g | ]}t          |          S r   r  r  s     r   r"  z test_ellipse.<locals>.<listcomp>  r#  r   )r   r   r   r   )r   I   Nr   r   r_   )rm   EllipseSelectorr   r   rp   shaper   )r   rs   r   s      r   test_ellipser(  	  sC   "2"$GGGD'DL 4zz::::<///// 4zzyIIII<----- 4xX7CCCC,,t|,,,G&&&&&&& 4zz|LLLL,,t|,,,G(((((((='))))DM!!!Q$'#s44444r   c                 p   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                                         d          sJ t          j        |j	        j
        d                                         d          sJ d S )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_handlesr3  $  s   $RBDFIFI3K 3KL L LD (DLDL"NOOO</////D%HJ J J<///// 4zz::::<///// 4zz::::<///// 4xZ8888<----- $Q';;==sD D D D D$Q';;==sD D D D D D Dr   r|   c                 D   t          j        t          d           }t          j        | ||          }t          |dd           |                                 |j        dk    sJ |                                 t          |dd           |                                 d S )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_onselectr;  C  s     yd666H$R(TTTD4zz::::!!!<777774yi8888!!!!!r   ignore_event_outsidec                    t          j        t          d           }t          j        | ||          }t          |dd           |                                 |j        dk    sJ |                                 t          |dd           |r#|	                                 |j        dk    sJ d S |                                 |j        d	k    sJ d S )
NrZ   )r]   r<  r5  r6  r}   r7  r  r  r   r   )r8        d@r8  r@  )
r   rl   r   rm   rn   r   rq   r   r   r   )r   r<  r]   rs   s       r   &test_rectangle_selector_ignore_outsiderA  T  s    yd666H$R(:NP P PD4zz::::!!!<7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<   |                     d           |                                 }t          j        | ||fi |}t          |dddd           t          |dd	d	d           t          |d
ddd           |                    dd	           |r|                    dd	           d S d S )NrZ   onmove_callbackautor^   r_   r   r`   rc   rd   re   rf   )	r   rl   r   r  twinxrm   SpanSelectorr   assert_called_once_with)r   orientationrF  rN   r]   rc   taxrs   s           r   test_span_selectorrM  k  s    yd666HYDt444F +$* ! MM&
((**CHkDDVDDDT7#S;;;;T83c!<<<<T9Cs1====$$S#... 1&&sC000001 1r   c                 F   t          j        t          d           }t          j        | |d|          }t          |dd           |                                 |j        dk    sJ |                                 t          |dd           |                                 d S )	NrZ   rB  r   r   )r  r_   r}   )r_   r  r9  )	r   rl   r   rm   rI  r   rq   r   r   r:  s       r   test_span_selector_onselectrO    s    yd666HHl,79 9 9D 4zz::::!!!<:%%%%4yi8888!!!!!r   c                    t          j        t          d           }t          j        t          d           }t          j        | |d||          }t          |dd           |                                 |                                 |j        dk    sJ |                                 |                                 t          |dd	           |r7|	                                 |	                                 |j        dk    sJ d S |                                 |                                 |j        d
k    sJ d S )NrZ   rB  )rF  r<  r   r  r}   )r_   r   r>  r?  )r  r   )
r   rl   r   rm   rI  r   rq   r   r   r   )r   r<  r]   rc   rs   s        r   !test_span_selector_ignore_outsiderQ    s[   yd666HYDt444FHl065IK K 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 n|j        dk    sJ t          |dd           |j        dk    sJ d S )NrB  T)r]   	directionr|   r   r{   r   r}   r9  r   r   )r&   r   )r   r   r   r   )rm   rI  r   r   r   )r   r   rs   s      r   test_span_selector_dragrT    s     T\,03EG G GD 4xZ8888<9$$$$ 4xX666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            n# 1 swxY w Y   d|_        |j        dk    sJ |j        j        dk    sJ t          j        t                    5  d|_        d d d            d S # 1 swxY w Y   d S )NrB  T)r]   rS  r|   invalid_direction)r]   rS  rD  invalid_string)rm   rI  r   rS  _edge_handlesr=   r   r   r   s     r   test_span_selector_directionrY    s   T\,02 2 2D>\))))'<7777	z	"	" C C#B.AC C CC C C C C C C C C C C C C C C  DN>Z''''':5555	z	"	" * *)* * * * * * * * * * * * * * * * * *s$   A??BB	CC"%C"c           
         t          j        | t          ddt          dd          t          d                    }t	          |d	d
           |j        }|                                t          j        dd          k    sJ |	                    dd           |                                t          j        dd          k    sJ |j
        D ]6}|                                dk    sJ |                                dk    sJ 7|                    dd           |j
        D ]6}|                                dk    sJ |                                dk    sJ 7d S )NrB  Tr   r   r   r   r   )r]   rS  r|   rX   r   r   r   r}   r   r   r(   r   )rm   rI  r   r   r   r   r   r   r   r   r   	get_colorr   r   r   s      r   )test_span_selector_set_props_handle_propsr]    s   T\,0&*S&D&D&D-1___> > >D
 4wJ7777#F!!W_S%D%D%DDDDDNNSN,,,!!W_S%D%D%D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 d S )NT)r   r|   r_  rB  rS  r]   r{   r   r}   )r   r   r<  r   escaper   r   )	r   rm   rI  r   rn   r   r   r<  r   )r   r^  rN   Selectorrs   s        r   test_selector_clearrd    s*   RT***F6'*{!z,8fD4xZ8888 4zz::::((((%)F!"8fD$$$$4xZ8888 4zz::::$$$$T>x0000((((((r   c                    |dk    rt          j        | t          ddd          }nt          j        | d          }t	          |dd           |j        sJ |                                sJ |dk    r|j        d	k    sJ |                                 |j        rJ |                                rJ t	          |dd
           |j        sJ |                                sJ |dk    r|j        dk    sJ d S d S )Nr_  rB  T)r]   rS  r|   r<  r   r{   r   r}   r9  )r   r   )rQ   r   )	rm   rI  r   rn   r   r   get_visibler   r   )r   r^  rs   s      r   test_selector_clear_methodrg    sA   6#B049=? ? ? (>>>4xZ8888$$$$6|y((((JJLLL((((!!!!! 4xY7777$$$$6|x'''' ''r   c                    t          j        | t          dd          }t          j        t
                    5  |                    d           d d d            n# 1 swxY w Y   t          j        t
                    5  |                    d           d d d            n# 1 swxY w Y   t          j        t
                    5  |                    d           d d d            n# 1 swxY w Y   |                    d           d S )NrB  Tr   r   r   r   r   )rm   rI  r   r=   r   r   r   r   s     r   test_span_selector_add_stateri  0  s   D,,02 2 2D 
z	"	" , ,*+++, , , , , , , , , , , , , , ,	z	"	" ! !x   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	z	"	" ! !x   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 	NN6s5   AA A=BB#&B#C%%C),C)c                    g d}t          j        | |dd          }|j        D ].}|                                rJ |                                rJ /|                    d           |                    d           |j        D ].}|                                sJ |                                sJ /|j        |k    sJ d S )N)r&   r   r   rB  F)rO   T)rm   ToolLineHandlesr1  get_animatedrf  set_visibleset_animated	positions)r   ro  tool_line_handler   s       r   test_tool_line_handlerq  >  s    I.r9l7<> > > #* ( (&&(((((%%''''''  &&&!!$'''"* $ $""$$$$$!!######%222222r   rS  )rB  rD  c                    t          j        dd          \  }}|                    ddgddg           |j                                         |                                }|                                }t          j        |t          | d          }|                                |k    sJ |                                |k    sJ | dk    r|n|}|j
        j        t          |          k    sJ d}d	}|}	t          |||
           |                                |k    sJ |                                |k    sJ | dk    rdnd}
||
         |	|
         g}|j
        j        |k    sJ d S )Nr   rQ   r&   r   Tr   rB  )rx   g      '@)ry      r}   r   )r?   r@   plotrB   rC   
get_xbound
get_yboundrm   rI  printrX  ro  listr   )rS  rG   r   x_boundy_boundrs   bound
press_data	move_datarelease_dataindexhandle_positionss               r   test_span_selector_boundr  Q  sv   l1a  GCGGRHr2hJOOmmooGmmooGE9$GGGD==??g%%%%==??g%%%% L00GGgE'4;;6666JIL4zy9999==??g%%%%==??g%%%%l**AAE"5)<+>?'+;;;;;;;r   QtAgg)skip_on_importerrorc            	        	
 t          j        ddt           j        z  d          
t          j        
          	t	          j                    \  } }|                    
	d          \  }|                    g d          \  t	          j        d           |                    |           | 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
           |                                |fk    sJ |j        du sJ j        sJ t#                                          d           |                                 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#                                          d           t          |d|d         |d
         d
           j        du sJ dS )zACheck that the animated artists changed in callbacks are updated.r   r   r_   T)animated皙?c                     t          j        | |f          \  }}||                                         }                    t          j        |                     d S 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~  s\    T4L996&=!&&((QQ**+++++r   rB  )rS  rF  r|   r   rO   r   r^   r`   rc   FgSG-?   r   gȄC(re   N)r  linspacepisinr?   r@   rt  pausedraw_artistrB   blitbboxrm   rI  r   _get_animated_artistsstaler   	get_ydataupdate)rG   r   lnr  r_  r|  r}  r~  r  r  r  s           @@@r   ,test_span_selector_animated_artists_callbackr  m  s    	Aq25y#&&AVAYYFlnnGC
''!Vd'
+
+CB7727%%DC
 IcNNNNN2JOOCH, , , , , , , DL04,037(,	. . .D QJAIT7*Q-z!}QOOOOT89Q<y|ANNNN%%''B944448u9CMMOO%7888KKMMM9 QJAIq6LT7*Q-z!}QOOOOT89Q<y|ANNNN8u9CMMOO%8999T9LO?1. . . .9r   c                    d }t          j        | |d          }|j        }t          j        ddd          }t          j        g d          }t          j        g d          } |||          }t          ||           d S )	Nc                      d S r   r   )argss    r   r]   z4test_snapping_values_span_selector.<locals>.onselect  s    r   rB  )rS  r   r   ry   )
gr  r   r   333333?ffffff??g
ףp=
@      @      @)
r   r   r   r   r   r         ?r  r  r  )rm   rI  _snapr  r  r  r   )r   r]   rs   snap_functionsnap_valuesr  expects          r   "test_snapping_values_span_selectorr    s       HFFFDJM+aB''KXJJJKKFXJJJK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 d S )Nc                     d_         d S )NT)_got_onselect)r  r  r   s     r   r]   z)test_span_selector_snap.<locals>.onselect  s    r   r   r  rB  )rS  r  )   r   )r%   $   )r  arangerm   rI  r   r  )r   r]   r  rs   s   `   r   test_span_selector_snapr    s              )B--!#KH,79 9 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 d S )	Nc                     d S r   r   )ar   s     r   <lambda>z,test_span_selector_extents.<locals>.<lambda>  s     r   rB  T)r<  )r   rQ   )      )r&   r  r}   )rm   rI  r   r   r   )r   rs   r|  r~  s       r   test_span_selector_extentsr    s    
|$
 
 
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           |                    g d           d S )NrZ   r]   r^   r_   r   r`   rc   r   re   r  )r   r  r>  )r   rl   r   rm   LassoSelectorr   rJ  )r   rN   r]   rs   s       r   test_lasso_selectorr    s     yd666H AAhA&AADT7#S;;;;T83c!<<<<T9Cs1====$$%I%I%IJJJJJr   c                    t          j        t          d           }t          j        | |t          dd                    }|j        }t          j        |	                                d          sJ |
                                dk    sJ |                    dd           t          j        |	                                d          sJ |
                                dk    sJ d S )NrZ   r   r   r[  )r]   rX   r   r   )r   rl   r   rm   r  r   r   r   r/  r\  r   r   )r   r]   rs   r   s       r   test_lasso_selector_set_propsr    s    yd666H h'+#S'A'A'AC C CD #Ff..00#66666$$$$NNCN(((f..00#66666$$$$$$r   c                 X   t          j        t          d           }t          j        | d|          }|j        }t          j        |                                d          sJ |	                                dk    sJ |
                                dk    sJ t          j        | d|t          dddd	          
          }|j        }t          j        |                                d          sJ |                                dk    sJ |
                                dk    sJ |	                                dk    sJ |                    d           |                    d           t          j        |                                d          sJ |                                dk    sJ d S )NrZ   r   r   -r   darkbluer   r   )	linestyler(   r   lwrW   r   r   )r   rl   r   rm   Lassorh   r   r/  r\  get_linestyleget_lwr   r   	set_color	set_alpha)r   r]   rs   rh   s       r   test_lasso_set_propsr    s   yd666H=Z22D9Ddnn..888883&&&&;;==A=ZZsq:: :: :: ; ; ;D 9Ddnn..
;;;;;>>s"""";;==A3&&&&NN3NN3dnn..44444>>s""""""r   c                 b   d}t          j        | |d          }|                                g dk    sJ |                    d           |                                g dk    sJ |                                dgk    sJ |                                 |                                g dk    sJ |                                g k    sJ dt          |          t          |          dz   fD ]I}t          j        t                    5  |                    |	           d d d            n# 1 swxY w Y   Jd
D ]J}t          j        t                    5  |                    d|           d d d            n# 1 swxY w Y   K|                    d           }|                    |           d S )N)r  r   c)TFTr   )FFTr  )FFFr   )r  )invalidr  r   )r  c                      d S r   r   r   r   r   r  z#test_CheckButtons.<locals>.<lambda>  s    4 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  	  sI   F V-@AAE!4!4!44444	Q!5!5!55555##%%#....	KKMMM!6!6!66666##%%++++c&kk3v;;q=9 2 2]:&& 	2 	2=111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 ) 5 5]9%% 	5 	5Qm444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 

<<
(
(C	Ss$   D++D/	2D/	E88E<	?E<	toolbar)ri   toolbar2toolmanagerc                    t           j                            d|           t          j        t
          d           }t          j        t
          d           }t          j        | d          }|                    |           |	                    |           |j
        dk    sJ t          |d           |                    d           |j
        dk    sJ |j        dk    sJ |                                 |                                 |j        dk    sJ t          |ddd	           t          |d
d           t          |d
d           |j        dk    sJ d S )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     sh    Li)))9$T:::L	t$????2r""DNN<   )***9????T8LL9'1,,,,"a''''T82R0000T;C((((T;C(((('1,,,,,,r   c                     t          j        | d          }|                    d           |j        dk    sJ |j        dk    sJ |                                 |j        dk    sJ |j        dk    sJ d S )NRadio 1Radio 2zRadio 3r   r  r  r   )rm   r   r  value_selectedindex_selectedr   )r   radios     r   test_RadioButtonsr  @  s     %FGGE	Q9,,,,1$$$$	KKMMM9,,,,1$$$$$$r   zcheck_radio_buttons.pngmpl20)styleremove_textc            
         t                      } |                     d          }|                    d           |                    d          }t	          j        |d          }|                    d          }t	          j        |dd	          }|                    d
          }t	          j        |dg dg ddg dg dd          }|                    d          }t	          j        |dd	g dg ddg dg dddg di          }	d S )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  sq   	B
--U-
#
#CS!!!<<.//D

t%F
G
GC<<.//D

t%F24 4C <<.//D

/!,6668 8":":":"I"I"IK K	L L LC <<.//D

/1D!,6668 8":":":"I"I"IK K66679 9 9CCCr   png)
extensionsc                 x   t          j        |                                 ddg           |                    g g           }|                    ddgddg|j        t          j        d         dz  dz  d	d
g           |                    ddd|j        d           |                    ddd|j        d           d S )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		2	2BJJSzC:,{+a/A5$  I I IGGCer|GAAAGGCh",8GDDDDDr   c                 *   dgdgd}dddd}t          j        |                                dd	g||
           t          j        |                                 dd	g          }|                    |           |                    i |ddi           d S )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_propsr8  s  s    "G"66K 'f1MMK))++eX->%0kK K K K 
	h//11E83D	E	EB{### 8+8sK8899999r   c                    t          j        t          d          5  t          j        | ddgdddi          }d d d            n# 1 swxY w Y   t          j        |j                                        dd	g          sJ d S )
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 
C 
C F F!"uh&7U/:G.DF F FF F F F F F F F F F F F F F F
 bk7799GV;LMMMMMMMs   AA	A	c                     t          j        |                                ddgd           t          j        |                                 ddgd          }d|_        d S )Nr  r  r  )r;  r#   )rm   r   r@   r;  )r-  r.  r7  s      r   %test_radio_buttons_activecolor_changerB    sp    ))++eX->%,. . . . 
	h//11E83D*/
1 
1 
1BBNNNr   c           	         t          j        |                                 ddgddg           |                    g g           }|                    ddgddgd|j        t          j        d	         d
z  d
z  ddg           |                    ddgddgd|j        t          j        d	         d
z  d
z  ddg           |                    ddd|j        d           |                    ddd|j        d           d S )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_buttonsrF    s   **,,uh.?$NNN			Br		2	2BJJSzC:cR\,{+a/A5&&9I  K K KJJSzC:cR\,{+a/A5#s  E E EGGCer|GAAAGGCh",8GDDDDDr   c                    dgdgd}dddd}ddd}t          j        |                                d	d
gddg|||           t          j        |                                 d	d
gddg          }|                    |           |                    i |ddi           |                    d          |d<   |                    i |ddi           d S )Nr#   r1  r'   r  r	  r   r2  )r.   r3  r  r  Tr  r%  r4  r.   r-   )rm   r   r@   r5  set_frame_propspopset_check_props)r-  r.  r0   r5   r6   r7  s         r   test_check_button_propsrK    s   "G"66K 'f1MMK %A66K))++eX->t%0k%02 2 2 2 
	h//11E83D#Tl
, 
,B{### 8+8sK88999  +{;;K8+8sK8899999r   c                  \   t          j                    \  } }t          j        t                    5  t          j        |dddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        |dddd           d d d            d S # 1 swxY w Y   d S )Nr  r         8@r   )r   labelvalminvalmax	slidermin)r   rN  rO  rP  	slidermax)r?   r@   r=   r   r   rm   Slider)rG   r   s     r   'test_slider_slidermin_slidermax_invalidrT    s4   lnnGC	z	"	" ' '"Bs4!%	' 	' 	' 	'' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 
z	"	" ' '"Bs4!%	' 	' 	' 	'' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's#   AAA: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 d S )
Nr  r   rM  r  r   rN  rO  rP  valinitr  )r   rN  rO  rP  rW  rQ  r   )r   rN  rO  rP  rW  rR  r?   r@   rm   rS  val)rG   r   slider_sliders       r   test_slider_slidermin_slidermaxr\    s    lnnGCn"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 d S )Nr  r   rM  g      $rV  g      9@)r?   r@   rm   rS  rY  rO  rP  rG   r   r[  s      r   test_slider_valmin_valmaxr_    s    lnnGC^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 d S )
Nr  r   rM  g&@r   )r   rN  rO  rP  rW  valstepry   )r   r   r  g333333@r  rX  r^  s      r   test_slider_valstep_snappingrb    s    lnnGC^rC$(!5 5 5F:^rC$(2C2C2CE E EF:r   c                     t          j                    \  } }t          j        |ddddd          }|                    d           |j        dk    sJ |j                                                            |j	        
                                          }t          |j        g d           t          j                    \  } }t          j        |ddddd	          }|                    d           |j        dk    sJ |j                                                            |j	        
                                          }t          |j        g d
           d S )Nr  r   r1  r  rB  )r   rN  rO  rP  rW  rK  rQ   )r   r&  竪?r   rD  )r&  r   r   rd  )r?   r@   rm   rS  r  rY  polyget_extentstransformedr+  invertedr   bounds)rG   r   r[  boxs       r   test_slider_horizontal_verticalrk    sL   lnnGC^rAb$&LB B BF
NN2:
+
!
!
#
#
/
/0E0E0G0G
H
HCCJ 3 3 3444lnnGC^rAb$&J@ @ @F
NN2:
+
!
!
#
#
/
/0E0E0G0G
H
HCCJ 3 3 344444r   c                      t          j                    \  } }t          j        |dddd          }|                    d           |                                 |j        dk    sJ d S )Nr  r   r   r   rV        ?)r?   r@   rm   rS  r  resetrY  r^  s      r   test_slider_resetro    sc    lnnGC^rAaLLLF
NN4
LLNNN:r   rK  c           	           dk    rg d}ng d}t          j                    \  }}t          j        |ddd ddg	          }|j                                                            |j                                                  }t          |
                                                                |         g d
           t          |j        d            fd}|                    d           t          |j        d           t           ||          d           |j                                                            |j                                                  }t          |
                                                                |         g d           |                    d           t          |j        d           t           ||          d           |                    d           t          |j        d           t           ||          d           |                                 t          |j        d           t           ||          d           d S )NrD  r   r   r   r   r   r   r   r   r  r   r  r  (\?r   rN  rO  rP  rK  rW  )r  r&  rs  rm  )r  rs  c                 T    dk    rd | j         D             S d | j         D             S )NrD  c                 B    g | ]}|                                 d          S r   )r  r   hs     r   r"  z?test_range_slider.<locals>.handle_positions.<locals>.<listcomp>  %    >>>AKKMM!$>>>r   c                 B    g | ]}|                                 d          S rw  )	get_xdatarx  s     r   r"  z?test_range_slider.<locals>.handle_positions.<locals>.<listcomp>  rz  r   )_handles)r[  rK  s    r   r  z+test_range_slider.<locals>.handle_positions  s:    *$$>>fo>>>>>>fo>>>>r   )皙?r  )r~  r&  r  rm  )r   r  )r  r   )r  rQ   r"   )r?   r@   rm   RangeSliderre  rf  rg  r+  rh  r   
get_pointsflattenrY  r  rn  )rK  idxrG   r   r[  rj  r  s   `      r   test_range_sliderr    sN   j  lllllnnGC RC[d  F +
!
!
#
#
/
/0E0E0G0G
H
HCCNN$$,,..s35L5L5LMMM FJ,,,? ? ? ? ? NN:FJ
+++$$V,,j999
+
!
!
#
#
/
/0E0E0G0G
H
HCCNN$$,,..s35I5I5IJJJ
NN:FJ
+++$$V,,j999
NN8FJ'''$$V,,f555
LLNNNFJ,,,$$V,,k:::::r   c           	         | dk    rg d}ng d}t          j                    \  }}t          j        |ddd| ddg          }|j                                                            |j                                                  }t          |
                                                                |         g d	           d S )
NrD  rq  rr  r  r   r  r   rt  )r   r&  r   rm  )r?   r@   rm   r  re  rf  rg  r+  rh  r   r  r  )rK  r  rG   r   r[  rj  s         r   "test_range_slider_same_init_valuesr  1  s    j  lllllnnGC bSkQ  F +
!
!
#
#
/
/0E0E0G0G
H
HCCNN$$,,..s35G5G5GHHHH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 dS )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yd666H"2CCCFCCD- , ,
u++
++++"22222?"5r!:::::::r   c                 r    dt          | |          fdt          | |          fdt          | |          fgS )Nrc   r  r^   re   r   r  s     r   polygon_place_vertexr  d  sK    t%u5556de4445566679 9r   c                 v    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  sQ    t%u55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           d S )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   rb  )	functoolspartialr  r  r   )r  check_selectorr  r  s       r   test_polygon_selectorr  p  s   &2CE E EN 766O	b"	%	%	c2	&	& 
b#	&	& 
b"	%	%	N N>?A666 766O	b"	%	%	c2	&	& 
),,,- 
4b+++,	
 
$Rr***+ 
4b+++, 
Dr,,,- 
4I.../ 
b#	&	& 
b"	%	%N N>?A666 766O	b"	%	%	c2	&	& 
'***+ 
4c---.	
 
$S,,,- 
4c---. 
Ds#.../ 
4G,,,- 
b#	&	& 
b"	%	%N N>?A666 766O		b"	%	%		c2	&	&	 
b#	&	&	 
b"	%	%		
 
4b+++,	 
$Rr***+	 
4b+++,	 
Dr,,,-	N N>?A666 766O	b"	%	%	c2	&	& 
b#	&	& 
b"	%	%	
 
'***+ 
4c---. 
$S,,,- 
4c---. 
Ds#.../ 
4G,,,-N N>?A666 766O	),,,-	4c---.	$S,,,-	4c---.	Ds#.../	4I.../	'***+	4c---.	$S,,,-	4c---.	Ds#.../	4G,,,- 
b"	%	% 
c2	&	& 
b#	&	&  
b"	%	%!N$ N>?A666 766O		b"	%	%		c2	&	&	 
(+++,	 
4H---.		
 
b"	%	%	 
c2	&	&	 
b#	&	&	 
b"	%	%	N N>?A66666r   c                 R   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        }|                                dk    sJ |                                dk    sJ |                    d	d
           |                                d	k    sJ |                                d
k    sJ |j	        D ]6}|                                dk    sJ |                                dk    sJ 7|
                    d	d
           |j	        D ]6}|                                d	k    sJ |                                d
k    sJ 7d S )Nr   r   r[  r   r   )rX   r   r  r   r  r   r   )rm   r  r   r  r   r   r\  r   r   r   r   )r   r  rs   r  r  r  r   s          r   ,test_polygon_selector_set_props_handle_propsr    s   "2)-Cs)C)C)C0435FH H HD
	b"	%	%	c2	&	& 
b#	&	& 
b"	%	%	N  . , ,
u++
++++#F$$$$$$$$NNCN((($$$$$$$$' ) )!!S((((!!S(((((3///' ) )!!S((((!!S((((() )r   c                     |                                  }|                                 }t          j        |ddi          }d|_        d S )NvisibleFrW   )r   r  r   r  )r@   rm   rn   r   )r-  r.  ax_test_rs   s        r   test_rect_visibilityr    sK     !!GA$WY4FGGGD'DLLLr   r  )r   r   r   c                 v   g d}t          |d          t          |d          t          |d          t          |d          g}|                    | t          dd                     |                    t          dd                     t	          j        t          j        |g           }t          ||d|           d S )Nr  r   r   r      r  )	r  insertappendr  r  reduceoperatoriaddr  )r  r  vertsr  s       r   test_polygon_selector_remover    s     -,,E*E!H5*E!H5*E!H5*E!H5	7N #3C==>>>/S99:::%hm^RHHN>5!->@ @ @ @ @ @r   c                     g d}g t          |d          t          |d          t          |d          t          |d          t          |d          }t          ||dd          d|            d S 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                 f   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 d S 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KKKD- , ,
u++
++++ :qs######r   c                    g d}|                                  }t          j        ||          }||_        |j        |k    sJ |                                 }t          j        ||          }g t	          |d          t	          |d          t	          |d          t	          |d          }|D ]\  }	}
t          ||	fi |
 d S )N))r  r~  )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    100E""$$G'CTUUUIIO?e####  ""F&vARSSSH	uQx	(	uQx	( 
uQx	( 
uQx	(	N  . 0 0
5//J////0 0r   c                 L   |                      dd           g d}g t          |d          t          |d          t          |d          t          |d          t          |d          }t          j        | d	          }|D ]\  }}t	          ||fi | | j        }|                     d
          j        }t          d|g|	                    d          dR  
                                 t          d|g|	                    d          R  
                                 t          d|g|	                    d          dR  
                                 t          j                            |j        g d           t          d|g|	                    d          dR  
                                 t          d|g|	                    d          R  
                                 t          d|g|	                    d          dR  
                                 t          j                            |j        g d           t          j                            |j        j        d           t          d|g|	                    d          dR  
                                 t          d|g|	                    d          dR  
                                 t          j                            |j        g d           t          j                            |j        j        d           d S )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***222E	uQx	(	uQx	( 
uQx	( 
uQx	(	
 
uQx	(N "2>>>D- , ,
u++
++++ 	A]]]%%,F fA'({{8'<'<A>?A A AAIv?()H(=(=? ? ??GxzzzC)*X)>)>C@AC C CCK8:::J
:::< < < fA'({{8'<'<A>?A A AAIv?()H(=(=? ? ??GxzzzC)*X)>)>C@AC C CCK8:::J
<<<> > > J	35 5 5 fA'({{8'<'<A>?A A AAIC)*X)>)>C@AC C CCK8:::J
2224 4 4J	35 5 5 5 5r   c                    t          j        t          d           }t          j        | |          }g dg dfD ]}|D ])\  }}t          ||          D ]\  }}t          ||fi | *|j        }|j        sJ |	                                sJ |	                                sJ t          j                            |                                |           |j        |d d         fi fk    sJ |                                 |j        rJ t          j                            |                                dg           d S )NrZ   )r  r  r  r  )r  )r_   r   r  r  r  r   )r   rl   r   rm   r  r  r   r   r   rf  r  r  assert_equal
get_xydatarr   r   )	r   r]   rs   resultr  yr  r  r   s	            r   "test_polygon_selector_clear_methodr    s{   yd666H"2x00D======? ? ? 	4 	4DAq%9!Q%?%? 4 4!zu33
33334 '((((!!!!!!!#####

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

,,,,

 1 1 3 3fX>>>>!? ?r   horizOnvertOnc                    t          j                    }|                    dd          \  }}t          j                                                    }t          j        d ||fd| |          }t          |j                  dk    sJ t          |j                  dk    sJ t          |dd          }|	                    |           |j
                                         |j        D ]}|                                d	k    sJ |j        D ]}|                                d
k    sJ t          d |j        D                       |rdndk    sJ t          d |j        D                       | rdndk    sJ |j         |_        |j         |_        t          |dd          }|	                    |           t          d |j        D                       |rdndk    sJ t          d |j        D                       | rdndk    sJ t          |dd          }|	                    |           |j        D ]}|                                d	k    sJ |j        D ]}|                                d
k    sJ d S )Nr   T)sharexF)rO   r  r  r   r&  r  )r   r   )r&  r&  c                 :    g | ]}|                                 |S r   rf  r   rh   s     r   r"  z$test_MultiCursor.<locals>.<listcomp>  )    DDD1A1A1C1CDDDDr   r   c                 :    g | ]}|                                 |S r   r  r  s     r   r"  z$test_MultiCursor.<locals>.<listcomp>  r  r   c                 :    g | ]}|                                 |S r   r  r  s     r   r"  z$test_MultiCursor.<locals>.<listcomp>  r  r   c                 :    g | ]}|                                 |S r   r  r  s     r   r"  z$test_MultiCursor.<locals>.<listcomp>  r  r   rm  )r?   figurer@   rm   MultiCursorr  vlineshlinesr
   rc   rB   rC   r|  r  r  r  )	r  r  rG   ax1ax3ax2multieventls	            r   test_MultiCursorr    s    *,,Ca--JS#
*,,


!
!C sCj%  E
 u|!!!!u|!!!!
 s"C000E	LLJOO \ ) ){{}}(((((\ + +{{}}
*****DDDDDEE   DDDDDEE!    %EM|#ELs"C000E	LLDDDDDEE   DDDDDEE!   
 s#S111E	LL\ ) ){{}}(((((\ + +{{}}
*****+ +r   )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(  r3  r;  rA  rM  rO  rQ  rT  rY  r]  rd  rg  ri  rq  r  backendr  r  r  r  r  r  r  r  r  r  r  r/  r8  r@  rB  rF  rK  rT  r\  r_  rb  rk  ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s       				        / / / / / / # # # # # # $ $ $ $ $ $       O O O O O O O O: : : : : : : : : : : : : :     ) ) ) ) ) )    $0 $0 $0N DFFDa   D"rh777Dtt	$    2 '9::1b'At9q"g)FGG1b'At9q"g)FGG    HG HG ;: F 9* (+-. .% %. .%*) ) )* J  J  JF   tUm44F; F; 54F;R tUm44F3 F3 54F3R<C <C <C~ )!3W5LMO OD DO ODB
% 
% 
% /%??7 7 @?7B5 5 56D D D> u66" " 76"  /$??< < @?<, ?5$$r48889tt1~~~&5$$TTt___55565$$40001	B  1 1 10 u66" " 76" /$??* * @?*8 -e}==& & >=&2* * *$) ) ), fk%:;;) ) <;): fk%:;;( ( <;(2  3 3 3& &@AA< < BA<6 W$775 5 875p$ $ $$ $ $"# # #" DFFDdd///000Da   $  
K K 
K% % %# # #*  . $G$G$GHH- - IH->% % % ,-W$OOO9 9 PO9< (((E E )(E (((: : )(:N N N (((  )( (((E E )(E (((: : )(:,' ' '% % %' ' '  5 5 5(   z(BCC); ); DC);X z(BCCI I DCI ; ; ;D9 9 9C C C ,udm<<n7 n7 =<n7b ,udm<<) ) =<)@ ( ( ( 			**,udm<<@ @ =< +*@" ,udm<<
@ 
@ =<
@ ,udm<<$ $ =<$, ,udm<<(((0 0 )( =<0(55 55 55p? ? ?. UDM22E4=112+ 2+ 21 322+ 2+ 2+r   