
    Ng                       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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%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(             Z0d) Z1ej!        "                    d*dd
g          d+             Z2d, Z3d- Z4ej!        "                    d.d
dg          d/             Z5ej!        "                    d0d
dg          d1             Z6ej!        "                    d2d3d e#dd
4          fd5d
 e#d6          fd3d e# e#d
                    fd3d e#d
7          fg          d8             Z7ej!        "                    d.d
dg          d9             Z8ej!        "                    d0d
dg          d:             Z9ej!        "                    d;d
dg          d<             Z:d= Z;d> Z<ej!        "                    d?d@dAg          dB             Z=ej!        "                    d?d@dAg          dC             Z>dD Z?dE Z@ej!        "                    dFdG          dH             ZAej!        B                    dId
J          dK             ZCdL ZDdM ZEdN ZFej!        "                    d	 e#             e#d e#dOP          Q           e#d
d          g          dR             ZGdS ZHdT ZIdU ZJej!        "                    dVg dW          dX             ZKdY ZL edZgd[d
\          d]             ZM ed^g_          d`             ZN ed^g_          da             ZOdb ZP ed^g_          dc             ZQ ed^g_          dd             ZR ed^g_          de             ZSdf ZTdg ZUdh ZVdi ZWdj ZXdk ZYej!        "                    dld3d5g          dm             ZZej!        "                    dld3d5g          dn             Z[do Z\dp Z]dq Z^ej!        "                    drdd
g          ds             Z_ej!        "                    drdd
g          dt             Z` e            du             Zaej!        "                    dvg dw          ej!        "                    drdd
g          dx                         Zbej!        "                    drdd
g          dy             Zcej!        "                    drdd
g          dz             Zdej!        "                    drdd
g           ed^g_          d{                         Zed| Zfd} Zgej!        "                    d~dd
g          ej!        "                    ddd
g          d                         Zhd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	        Y/var/www/html/ai-engine/env/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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pressd   r   xdataydatarP   onmove   release   drawtype)linenone)      Y@r^   rc   rc   r^   )r^   rc   rc   r^   r^   )err_msg)r   Mockr   widgetsRectangleSelectorr   getr   geometryassert_called_once	call_argsr`   ra   )r   rN   onselecttoolepressereleases         r   test_rectangle_selectorrv   @   sS    yd666H$R<<V<<D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)interactiverU   rS   rT   startendr&   r&      r   )r   rk   r   	transData	transformrl   rm   r   _selection_completedassert_not_calledrp   
reset_mockrq   r`   ra   )r   rU   rS   x1rT   y1rr   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t0:.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   c                     t          j        | d           }|                                sJ t          j        t
          j        d          5  |j         d d d            d S # 1 swxY w Y   d S )Nc                      d S r   r   argss    r   <lambda>z=test_deprecation_selector_visible_attribute.<locals>.<lambda>   s    t r   z was deprecated in Matplotlib 3.8match)rl   rm   get_visibler=   warnsmplMatplotlibDeprecationWarningvisibler   rs   s     r   +test_deprecation_selector_visible_attributer      s    $R););<<D	c6>
@ 
@ 
@                   s   A""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 d S )NT)rr   r|   drag_from_anywherer   rQ   r^   x   r}   )2   A         #   r         r      )      )rl   rm   r   r   center)r   r   
new_centerrs   s       r   test_rectangle_dragr      s     $R$D8JL L LD 4wJ7777;("""" 4xX6666;*$$$$ 4zz::::;*$$$$$$r   c           	         t          j        | t          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   )rr   r|   rX   handle_propsr   r   r}   r333333?black)markeredgecolorr   )rl   rm   r   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   $R$D+/#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                 |   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 d S )NTrr   r|   r   r   r}   )        ri         $@      ^@r      rQ   r   r   r   r   r&   r   )rl   rm   r   r   extents)r   rs   r   r`   ra   	xdata_new	ydata_news          r   test_rectangle_resizer      s*   $R$DIIID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        | t          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   )rl   rm   r   r   r=   raises
ValueError	add_stater   s     r   test_rectangle_add_stater      s[   $R$DIIID4xZ8888	z	"	" , ,*+++, , , , , , , , , , , , , , , 
z	"	"    w                             NN6NN8NN8s$   A**A.1A.B00B47B4r   c                    t          j        | t          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   rl   rm   r   r   r   r   r   r   rs   use_keyr   r`   ra   xdiffydiffr   r   s              r   test_rectangle_resize_centerr      s.   $R$DIIID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        | t          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   8  s,   $R$DIIID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        | t          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   )rl   rm   r   r   r   r   r   )	r   rs   r   r`   ra   r   r   r   r   s	            r   #test_rectangle_resize_square_centerr     s+   $R$DIIID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                 N    || 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    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   r   len_stater   r   rotationcornersnparrayrl   rm   r=   r   r   r   rotation_point)r   r   rs   s      r   test_rectangle_rotater    sQ    >"t>>>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   >FFFc                 v   t          j        | t          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   )	rl   rm   r   r   r   r  r  r   remove_state)r   rs   states      r   test_rectangle_add_remove_setr    s    $R$DIIID4zz::::</////t{q    / % %u4;1$$$$%   4;1$$$$$	% %r   use_data_coordinatesc                    |                      d           t          j        | t          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)rr   r|   r  r   r   r}   r   r   r   r   r   r   rQ   r   g      G@g     `@)	
set_aspectrl   rm   r   r   r   r   r   _aspect_ratio_correction)r   r  rs   r   r`   ra   widthr   ycenterr   r   ychanges               r   *test_rectangle_resize_square_center_aspectr"    s   MM#$R$D: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        | 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           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)rr   
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>(  r0  r   )r   r   r   r   )r   I   Nr   r   r^   )rl   EllipseSelectorr   r   r   ro   shaper   )r   rs   r   s      r   test_ellipser5    sO   "2.0dD D DD'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           	      |   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                                         d          sJ t          j	        |j
        j        d                                         d          sJ d S )NrQ   Tr   r   )markerfacecolorr   )rr   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&  )   r8  )l      r9  r:  r{   )rQ   r^   rQ   r^   r   )rl   rm   r   r   r   r  edge_centersr   r   
same_color_corner_handlesartistsget_markerfacecolorr   r   s     r   test_rectangle_handlesr@  /  s   $R$0215FIFI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}   ri        b@g     [@r   rQ   r^   )	r   rk   r   rl   rm   r   rp   r   r   r   r|   rr   rs   s       r    test_rectangle_selector_onselectrI  P  s     yd666H$R{KKKD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   rJ  rC  rD  r}   rE  r&  r&  r  r  )rF        d@rF  rO  )
r   rk   r   rl   rm   r   rp   r   r   r   )r   rJ  rr   rs   s       r   &test_rectangle_selector_ignore_outsiderP  a  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   rB  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_   rb   rc   rd   re   )	r   rk   r   r  twinxrl   SpanSelectorr   assert_called_once_with)r   orientationrU  rN   rr   rb   taxrs   s           r   test_span_selectorr\  x  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   rQ  rB  r   )r&  r^   r}   )r^   r&  rG  )	r   rk   r   rl   rX  r   rp   r   r   rH  s       r   test_span_selector_onselectr^    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   rQ  )rU  rJ  r   r'  r}   )r^   r   rM  rN  )r&  r  )
r   rk   r   rl   rX  r   rp   r   r   r   )r   rJ  rr   rb   rs   s        r   !test_span_selector_ignore_outsider`    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 )NrQ  T)rr   	directionr|   r   r{   r   r}   rG  r   r   )r&   r  )r   r   r   r   )rl   rX  r   r   r   )r   r   rs   s      r   test_span_selector_dragrc    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 )NrQ  T)rr   rb  r|   invalid_direction)rr   rb  rS  invalid_string)rl   rX  r   rb  _edge_handlesr=   r   r   r   s     r   test_span_selector_directionrh    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 )NrQ  Tr   r   r   r   r   )rr   rb  r|   rX   r   r   r   r}   r   r   r(   r   )rl   rX  r   r   r   r   r   r   r   r   r   	get_colorr   r   r   s      r   )test_span_selector_set_props_handle_propsrl    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          | 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 d S )NT)r   rr   r|   rn  rQ  rb  r{   r   r}   )r   r   rJ  r  escaper  r   )	r   r   rl   rX  rm   r   r   rJ  r   )r   rm  rN   Selectorrs   s        r   test_selector_clearrs    s"   R$D999F6'*{,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        | t          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 )Nrn  rQ  T)rr   rb  r|   rJ  r   r{   r   r}   rG  )r   r   )rQ   r   )	rl   rX  r   rm   r   r   r   r   r   )r   rm  rs   s      r   test_selector_clear_methodru  "  sC   6#B049=? ? ? (dMMM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 )NrQ  TrB  r   r   r   r   )rl   rX  r   r=   r   r   r   r   s     r   test_span_selector_add_staterw  <  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   rQ  F)rO   T)rl   ToolLineHandlesr>  get_animatedr   set_visibleset_animated	positions)r   r}  tool_line_handler   s       r   test_tool_line_handler  J  s    I.r9l7<> > > #* ( (&&(((((%%''''''  &&&!!$'''"* $ $""$$$$$!!######%222222r   rb  )rQ  rS  c                    t          j        dd          \  }}|                    ddgddg           |j        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   TrB  rQ  )rx   g      '@)ry      r}   r   )r?   r@   plotfigurerB   rC   
get_xbound
get_yboundrl   rX  printrg  r}  listr   )rb  rG   r   x_boundy_boundrs   bound
press_data	move_datarelease_dataindexhandle_positionss               r   test_span_selector_boundr  ]  s{   l1a  GCGGRHr2hI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   rQ  )rb  rU  r|   r   rO   r   r]   r_   rb   FgSG-?   r   gȄC(rd   N)r  linspacepisinr?   r@   r  pausedraw_artistrB   blitbboxrl   rX  r   _get_animated_artistsstaler   	get_ydataupdate)rG   r   lnr  rn  r  r  r  r  r  r  s           @@@r   ,test_span_selector_animated_artists_callbackr  y  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   r   s    r   rr   z4test_snapping_values_span_selector.<locals>.onselect  s    r   rQ  )rb  r   r   ry   )
gr  r   r   333333?ffffff??g
ףp=
@      @      @)
r   r   r   r   r   r         ?r  r  r  )rl   rX  _snapr  r  r  r   )r   rr   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   rr   z)test_span_selector_snap.<locals>.onselect  s    r   r   r  rQ  )rb  r  )   r   )r%   $   )r  arangerl   rX  r   r  )r   rr   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   r   z,test_span_selector_extents.<locals>.<lambda>  s     r   rQ  TrL  )r   rQ   )      )r&   r  r}   )rl   rX  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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_   rb   r   rd   r&  )r   r'  rM  )r   rk   r   rl   LassoSelectorr   rY  )r   rN   rr   rs   s       r   test_lasso_selectorr    s     yd666H X8888D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   rj  rW   r   r   )r   rk   r   rl   r  r   r   r   r<  rk  r   r   )r   rr   rs   r   s       r   test_lasso_selector_set_propsr    s    yd666H XT35O5O5OPPPD#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   rk   r   rl   Lassorg   r   r<  rk  get_linestyleget_lwr   r   	set_color	set_alpha)r   rr   rs   rg   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   )rl   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)rh   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   r`   ra   	_keypress+r  5r   )r?   rcParams_setr   rk   r   rl   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   )rl   r   r  value_selectedindex_selectedr   )r   radios     r   test_RadioButtonsr
  K  s     %FGGE	Q9,,,,1$$$$	KKMMM9,,,,1$$$$$$r   zcheck_radio_buttons.pngmpl20)styleremove_textc            
         t                      } | j        }|                    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 )Nr   )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	   r  subplots_adjustadd_axesrl   r   r   )
r   rG   rax1rb1rax2cb1rax3rb3rax4cb4s
             r   test_check_radio_buttons_imager"  U  se   	B
)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   C0rh   )r   sr        ?r   r   va)	rl   r   r@   add_subplotscatter	transAxesr?   r  r  fig_testfig_refr   s      r   test_radio_buttonsr9  t  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@)rl   r   r@   set_label_propsset_radio_props)r7  r8  r0   r1   cbs        r   test_radio_buttons_propsrB  ~  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\* parameterr   r&  r'  r#   r.   r  )activecolorr1   rh   )	r=   r   UserWarningrl   r   r   r<  _buttonsr   )r   rbs     r   !test_radio_button_active_conflictrH    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  )rD  r#   )rl   r   r@   rD  )r7  r8  rA  s      r   %test_radio_buttons_activecolor_changerJ    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   rh   )markerr   r/  r  r  kr0  r   r1  )	rl   r   r@   r3  r4  r5  r?   r  r  r6  s      r   test_check_buttonsrN    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#   r;  r'   r  r  r   r<  )r.   r=  r&  r'  Tr  r/  r>  r.   r-   )rl   r   r@   r?  set_frame_propspopset_check_props)r7  r8  r0   r5   r6   rA  s         r   test_check_button_propsrS    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   rV  rW  rX  	slidermax)r?   r@   r=   r   r   rl   Slider)rG   r   s     r   'test_slider_slidermin_slidermax_invalidr\    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   rU  r  r   rV  rW  rX  valinitr  )r   rV  rW  rX  r_  rY  r   )r   rV  rW  rX  r_  rZ  r?   r@   rl   r[  val)rG   r   slider_sliders       r   test_slider_slidermin_slidermaxrd    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   rU  g      $r^  g      9@)r?   r@   rl   r[  ra  rW  rX  rG   r   rc  s      r   test_slider_valmin_valmaxrg    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   rU  g&@r   )r   rV  rW  rX  r_  valstepry   )r   r   r  g333333@r  r`  rf  s      r   test_slider_valstep_snappingrj    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   r;  r  rQ  )r   rV  rW  rX  r_  rZ  rQ   )r   r0  竪?r   rS  )r0  r   r   rl  )r?   r@   rl   r[  r  ra  polyget_extentstransformedr5  invertedr   bounds)rG   r   rc  boxs       r   test_slider_horizontal_verticalrs    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   r^        ?)r?   r@   rl   r[  r  resetra  rf  s      r   test_slider_resetrw    sc    lnnGC^rAaLLLF
NN4
LLNNN:r   rZ  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 )NrS  r   r   r   r   r   r   r   r   r  r   r  r  (\?r   rV  rW  rX  rZ  r_  )r  r0  r{  ru  )r  r{  c                 T    dk    rd | j         D             S d | j         D             S )NrS  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 r  )	get_xdatar  s     r   r/  z?test_range_slider.<locals>.handle_positions.<locals>.<listcomp>&  r  r   )_handles)rc  rZ  s    r   r  z+test_range_slider.<locals>.handle_positions"  s:    *$$>>fo>>>>>>fo>>>>r   )皙?r  )r  r0  r  ru  )r   r  )r  r   )r  rQ   r"   )r?   r@   rl   RangeSliderrm  rn  ro  r5  rp  r   
get_pointsflattenra  r  rv  )rZ  idxrG   r   rc  rr  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 )
NrS  ry  rz  r  r   r  r   r|  )r   r0  r   ru  )r?   r@   rl   r  rm  rn  ro  r5  rp  r   r  r  )rZ  r  rG   r   rc  rr  s         r   "test_range_slider_same_init_valuesr  <  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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   rk   r   rl   PolygonSelectorr   r  rq   )	event_sequenceexpected_resultselections_countrN   r   rr   rs   etype
event_argss	            r   check_polygon_selectorr  M  s    * 
Byd666H"2x::6::D- , ,
u++
++++"22222?"5r!:::::::r   c                 r    dt          | |          fdt          | |          fdt          | |          fgS )Nrb   r  r]   rd   r   r  s     r   polygon_place_vertexr  o  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 )Nrb   r  r]   r   r_   rd   r  r  s     r   polygon_remove_vertexr  u  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  rb   r  r]   r   rd   on_key_release))r   r   )r&  r   r  r   r^   r   r   ))r   r   )r   r   )r   r   re   rq  )	functoolspartialr  r  r   )r  check_selectorr  r  s       r   test_polygon_selectorr  {  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                 ^   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        }|                                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   rj  r   r   )rr   rX   r   r  r   r&  r   r   )rl   r  r   r   r  r   r   rk  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        |t          ddi          }d|_        d S )Nr   F)rr   rX   )r   r  r   r  )r@   rl   rm   r   r   )r7  r8  ax_test_rs   s        r   test_rect_visibilityr    sT     !!GA$Wt,5u+=? ? ?D'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	          |g           }t          ||d|           d S )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9:::,,N>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                 r   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 d S )Nr  r   r   r   rr   r  )r  r  rl   r  r   r   r  )r   r  r  r  rs   r  r  s          r   test_polygon_selector_redrawr  ;  s
   ,,,E
	uQx	(
	uQx	(
 
uQx	(
 
uQx	(	
 
a	)
 
a	)
 
uQx	(
N "25FH H HD- , ,
u++
++++ :qs######r   c                    g d}|                                  }t          j        |t          |          }||_        |j        |k    sJ |                                 }t          j        |t          |          }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   )r3  rl   r  r   r  r  r   )r7  r8  r  r  r  	tool_testax_reftool_refr  r  r  s              r   "test_polygon_selector_verts_setterr  S  s    100E""$$G'$2CE E EIIO?e####  ""F&1BD D DH	uQx	(	uQx	( 
uQx	( 
uQx	(	N  . 0 0
5//J////0 0r   c                 :   |                      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|
                    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  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  rl   r  r   r   r   r  rB   r   r   _processr  testingr   r  _boxr   )r   r  r  rs   r  r  trB   s           r   test_polygon_selector_boxr  k  s   FF		F***222E	uQx	(	uQx	( 
uQx	( 
uQx	(	
 
uQx	(N "2MMMD- , ,
u++
++++ 	AY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   rk   r   rl   r  r  r   r   r   r   r  r  assert_equal
get_xydatarq   r   )	r   rr   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
                                         |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   r0  r  )r   r   )r0  r0  c                 :    g | ]}|                                 |S r   r   r-  rg   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   ru  )r?   r  r@   rl   MultiCursorr  vlineshlinesr
   rb   rB   rC   r  r  r  r  )r  r  ax1ax3ax2multieventls           r   test_MultiCursorr    s    &&q&66JS#
*,,


!
!C sCj%  E
 u|!!!!u|!!!!
 s"C000E	LLJ \ ) ){{}}(((((\ + +{{}}
*****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   )ir  rD   unittestr   
matplotlibr   matplotlib.backend_basesr   matplotlib.colorscolorsr   r;   rl   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   r   rm   r3  r  r  r"  r5  r@  rI  rP  r\  r^  r`  rc  rh  rl  rs  ru  rw  r  r  backendr  r  r  r  r  r  r  r  r  r
  r"  r9  rB  rH  rJ  rN  rS  r\  rd  rg  rj  rs  rw  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 58D D DB 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%:;;) ) <;)8 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1+ 1+ 21 321+ 1+ 1+r   