
    ^j                    `   d dl Z d dlZd dlZd dlmZ d dlZd dlmZm	Z	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 d dlZd dlmZ d dlZej>                  d        Z d Z!ejD                  jG                  d	 e$        e$d
d       e$ddd       e$ e$d
            g      d        Z%ejD                  jG                  dddg      ejD                  jG                  dd dgddgddgg      ejD                  jG                  dd dgddgddgg      d                      Z&ejD                  jG                  dd
dgddgg      d        Z'd Z(d  Z)d! Z*ejD                  jG                  d"d
dg      d#        Z+ejD                  jG                  d"d
dg      d$        Z,d% Z-ejD                  jG                  d&ej\                  ej^                  g      d'        Z0d( Z1ejD                  jG                  d)dd
g      d*        Z2d+ Z3d, Z4d- Z5ejD                  jG                  d.d
dg      d/        Z6ejD                  jG                  d0d
dg      d1        Z7ejD                  jG                  d2d3d e$dd
4      fd5d
 e$d6      fd3d e$ e$d
            fd3d e$d
7      fg      d8        Z8ejD                  jG                  d.d
dg      d9        Z9ejD                  jG                  d0d
dg      d:        Z:ejD                  jG                  d;d
dg      d<        Z;d= Z<d> Z=ejD                  jG                  d?d@dAg      dB        Z>ejD                  jG                  d?d@dAg      dC        Z?dD Z@dE ZAejD                  jG                  dFdG      dH        ZBejD                  j                  dId
J      dK        ZDdL ZEdM ZFdN ZGejD                  jG                  d	 e$        e$d e$dOP      Q       e$d
d      g      dR        ZHdS ZIdT ZJdU ZKejD                  jG                  dVg dW      dX        ZLdY ZM edZgd[d
\      d]        ZN e       d^        ZO e       d_        ZP ed`gd[d
\      da        ZQdb ZR e       dc        ZS e       dd        ZT e       de        ZUejD                  jG                  dfej                  ej                  g      dg        ZXdh ZYdi ZZdj Z[dk Z\dl Z]dm Z^ejD                  jG                  dnd3d5g      do        Z_ejD                  jG                  dnd3d5g      dp        Z`dq Zadr Zbds ZcejD                  jG                  dtdd
g      du        ZdejD                  jG                  dtdd
g      dv        Ze e       dw        ZfejD                  jG                  dxg dy      ejD                  jG                  dtdd
g      dz               ZgejD                  jG                  dtdd
g      d{        ZhejD                  jG                  dtdd
g      d|        ZiejD                  jG                  dtdd
g       e       d}               Zjd~ Zkd Zld ZmejD                  jG                  ddd
g      ejD                  jG                  ddd
g      ejD                  jG                  ddd
g      d                      Znd Zod Zpy)    N)mock)	DrawEventKeyEvent
MouseEvent)check_figures_equalimage_comparison)click_and_dragget_axnoop)assert_allclosec                      t               S N)r
        h/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/matplotlib/tests/test_widgets.pyaxr      s	    8Or   c            
      `   ddl m} m} ddlm}  |       dvrt        j                  d       t        j                  dddddg	      \  }} ||d
   ddg      } ||d   ddgddgddgdddgddgd      } | |d   ddgddg      } | |d   ddgddgddgddgdddgddgddddgi      }|d
   j                  d       |d   j                  d        |j                  j                          t        j                         5 }	|j                  |	d!"       d d d        y # 1 sw Y   y xY w)#Nr   )CheckButtonsRadioButtons)"_get_running_interactive_framework)headlessNz-Callback exceptions are not raised otherwise.      r      )nrowsncolsfigsizewidth_ratiosr   r   ApplesOrangesr   r   redorange      colorfontsize	mistyrose	peachpuff	edgecolor	facecolorlabel_propsradio_props)r   r   T)actives)r   r   r)   darkred
darkorange)r3   r1   frame_propscheck_propsDefaultStylizedpdfformat)matplotlib.widgetsr   r   matplotlib.cbookr   pytestxfailpltsubplots	set_titlecanvasdrawioBytesIOsavefig)
r   r   r   figr   
default_rb	styled_rb
default_cb	styled_cbresult_afters
             r   test_save_blitted_widget_as_pdfrO      sq   =C)+3EEDEllq&1vGC bh9(=>J
48Y'$h/"$b+#(("3#."<>	I bh9(='+Tl4J
48Y't$h/"$b+#(("3#."<>y,78I tHy!tHz"JJOO	 0L/0 0 0s   D$$D-kwargsTr   )useblitbutton
   pixels)minspanxminspany
spancoords)fillpropsc                    t        j                  t        d       }t        j                  | fd|i|}t        j                  d| dd      j                          t        j                  d| dd      j                          t        j                  d| d	d      j                          |j                  d
d       dvr(t        |j                  g dg dg|j                         |j                          |j                  \  \  }}}|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |i k(  sJ y )Nspecreturn_valueonselectbutton_press_eventd   rb   r   motion_notify_event   re   button_release_event   rh   drawtype)linenone)      Y@rb   re   re   rb   )rb   re   re   rb   rb   )err_msgrb   re   )r   Mockr   widgetsRectangleSelectorr   _from_ax_coords_processgetr   geometryassert_called_once	call_argsxdataydata)r   rP   r_   toolepressereleases         r   test_rectangle_selectorr|   @   s3    yyd6H$$RE(EfED3RQGPPR4b*aHQQS5r:qIRRTzz*d#+;;324 $	/
 !!)!3!3VX<<3<<3>>S   >>S   R<<r   rW   datazminspanx, x1      %@   zminspany, y1c                    t        j                  t        d       }d\  }}|dk(  r>| j                  j	                  ||f      | j                  j	                  ||f      z
  \  }}t        j                  | |d|||      }	t        |	||f||f       |	j                  rJ |j                          t        |	dd       |	j                  sJ |j                          |j                          t        |	||f||f       |	j                  rJ |j                          |j                  \  \  }
}}|
j                  |k(  sJ |
j                  |k(  sJ |j                  |k(  sJ |j                  |k(  sJ |i k(  sJ y )	Nr\   rS   rS   rT   T)r_   interactiverW   rU   rV   startendr'   r'      r   )r   rn   r   	transData	transformro   rp   r	   _selection_completedassert_not_calledru   
reset_mockrv   rw   rx   )r   rW   rU   x1rV   y1r_   x0y0ry   rz   r{   rP   s                r   test_rectangle_minspanr   ^   s|   
 yyd6HFBX ll44b"X> ll44b"X>?( $$R(0:.6KD 4Bxb"X6(((( 4xX6$$$$! 4Bxb"X6((((!!)!3!3VX<<2<<2>>R>>RR<<r   zdrag_from_anywhere, new_center)<   K   Fr   r'   c                     t        j                  | d|      }t        |dd       |j                  dk(  sJ t        |dd       |j                  |k(  sJ t        |d	d
       |j                  dk(  sJ y )NT)r   drag_from_anywherer   )Z   x   r   )2   A         #   r         r      )      )ro   rp   r	   center)r   r   
new_centerry   s       r   test_rectangle_dragr      s|     $$RT8JLD 4xY7;;(""" 4xX6;;*$$$ 4zz:;;*$$$r   c                 t   t        j                  | dt        dd      t        d            }t        |dd	
       |j                  }|j                         t        j                  dd      k(  sJ |j                  dd       |j                         t        j                  dd      k(  sJ |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  |j                  dd       |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  y )NTb皙?r/   alpha      ?r   )r   rZ   handle_propsr   rS   rb   r   r   r333333?black)markeredgecolorr   )ro   rp   dictr	   _selection_artistget_facecolormcolorsto_rgba	set_props_handles_artistsget_markeredgecolor	get_alphaset_handle_propsr   ry   artists      r   .test_rectangle_selector_set_props_handle_propsr      s0   $$RT+/#S+I26S/CD 4wJ7##F!W__S%DDDDNNSN,!W__S%DDDD'' )))+w666!S((() 	#S9'' )))+s222!S((()r   c                    t        j                  | d      }t        |dd       |j                  dk(  sJ |j                  }|d   |d   }}|d	z   |d
z   }}t        |||f||f       |j                  |d   ||d   |fk(  sJ |j                  }|d   |d   |d   |d   z
  dz  z   }}|d	z   |}}t        |||f||f       |j                  |d   ||d   |d   fk(  sJ |j                  }|d   |d   |d   |d   z
  dz  z   }}|dz   |}}t        |||f||f       |j                  ||d   |d   |d   fk(  sJ |j                  }|d   |d   }}|dz   |dz   }}t        |||f||f       |j                  ||d   ||d   fk(  sJ y )NTr   r   r   r   )      $@rl   r         ^@r      rS   r   r   r   r   r'   r   )ro   rp   r	   extents)r   ry   r   rw   rx   	xdata_new	ydata_news          r   test_rectangle_resizer      s   $$RT:D4xZ8<<5555 llG1:wqz5E 2:uqyyI4u~Iy3IJ<<GAJ	71:yIIII llG1:wqzWQZ'!*-D,II5E 2:uyI4u~Iy3IJ<<GAJ	71:wqzJJJJ llG1:wqzWQZ'!*-D,II5E 2:uyI4u~Iy3IJ<<Iwqz71:wqzJJJJ llG1:wqz5E 2:urzyI4u~Iy3IJ<<Iwqz9gajIIIIr   c                    t        j                  | d      }t        |dd       t        j                  t
              5  |j                  d       d d d        t        j                  t
              5  |j                  d       d d d        |j                  d       |j                  d	       |j                  d
       y # 1 sw Y   pxY w# 1 sw Y   IxY w)NTr   F   r   }      r   unsupported_stateclearmovesquarer   )ro   rp   r	   r?   raises
ValueError	add_stater   ry   s     r   test_rectangle_add_stater      s    $$RT:D4xZ8	z	" ,*+, 
z	"  w NN6NN8NN8, ,   s   C 2C C	Cr   c                    t        j                  | d      }t        |dd       |j                  dk(  sJ |r|j	                  d       d }nd}|j                  }|d	   |d
   }}d\  }}||z   ||z   }
}	t        |||f|	|
f|       |j                  |d   |z
  |	|d   |z
  |
fk(  sJ |j                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |d   |z
  |	|d   |d
   fk(  sJ |j                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |d   |z
  |	|d   |d
   fk(  sJ |j                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |	|d	   |z
  |d   |d
   fk(  sJ |j                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |	|d	   |z
  |d   |d
   fk(  sJ |j                  }|d   |d   }}d\  }}||z   ||z   }
}	t        |||f|	|
f|       |j                  |	|d	   |z
  |
|d
   |z
  fk(  sJ y )NTr   r   r   r   )     Q@     @_@     @P@g     @`@r   controlr   r   rS   r   r   r   keyr   r   rS   r   r'   r   ro   rp   r	   r   r   r   r   ry   use_keyr   rw   rx   xdiffydiffr   r   s              r   test_rectangle_resize_centerr      s   $$RT:D4xZ8<<5555x  llG1:wqz5ELE5 5=%%-yI4u~Iy3I <<GAJ.	#AJ.	; ; ; ; llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<GAJ.	#AJ
4 4 4 4 llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<GAJ.	#AJ
4 4 4 4 llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<IwqzE'9#AJ
4 4 4 4 llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<IwqzE'9#AJ
4 4 4 4 llG1:wqz5ELE5 5=%%-yI4u~Iy3I <<IwqzE'9%wqzE'9; ; ; ;r   c                    t        j                  | d      }t        |dd       |j                  dk(  sJ |r|j	                  d       d }nd}|j                  }|d	   |d
   }}d\  }}||z   ||z   }
}	t        |||f|	|
f|       |j                  |d   |	|d   |d
   |z   fk(  sJ |j                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |d   |	|d   |d
   |z   fk(  sJ |j                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |d   |	|d   |d
   |z   fk(  sJ |j                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |	|d	   |d   |d
   |z
  fk(  sJ |j                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |	|d	   |d   |d
   |z
  fk(  sJ |j                  }|d   |d   }}d\  }}||z   ||z   }
}	t        |||f|	|
f|       |j                  |d   |z   |d	   |
|d
   fk(  sJ y )NTr   r   r   s   r   r   r   r   g     \@r   shiftr   r   r   r   r   r   rS   r   r   r   r   r   r   s              r   test_rectangle_resize_squarer   -  s   $$RT:D4xZ8<<5555x  llG1:wqz5ELE5 5=%%-yI4u~Iy3I <<GAJ	#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<GAJ	#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<GAJ	#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<Iwqz#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<Iwqz#AJ
U(:< < < < llG1:wqz5ELE5 5=%%-yI4u~Iy3I <<GAJ.
%wqz3 3 3 3r   c                    t        j                  | d      }t        |dd       |j                  d       |j                  d       t	        |j
                  d       |j
                  }|d	   |d
   }}d\  }}||z   ||z   }}t        |||f||f       t	        |j
                  |d   |z
  ||d   |z
  |d
   |z   f       |j
                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}}t        |||f||f       t	        |j
                  |d   |z
  ||d   |z
  |d
   |z   f       |j
                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}}t        |||f||f       t	        |j
                  |d   |z
  ||d   |z
  |d
   |z   f       |j
                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}}t        |||f||f       t	        |j
                  ||d	   |z
  |d   |z   |d
   |z
  f       |j
                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}}t        |||f||f       t	        |j
                  ||d	   |z
  |d   |z   |d
   |z
  f       |j
                  }|d   |d   }}d\  }}||z   ||z   }}t        |||f||f       t	        |j
                  |d   |z   |d	   |z
  ||d
   |z
  f       y )NTr   r   r   r   r   r   r   r   r   r   r   r   rS   r   r   r   r   )ro   rp   r	   r   r   r   )	r   ry   r   rw   rx   r   r   r   r   s	            r   #test_rectangle_resize_square_centerr   w  s   $$RT:D4xZ8NN8NN8DLL"<= llG1:wqz5ELE5 5=%%-yI4u~Iy3IJDLL71:#5y#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJDLL71:#5y#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJDLL71:#5y#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJDLL9gaj5.@#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJDLL9gaj5.@#*1:#5wqzE7I#K L llG1:wqz5ELE5 5=%%-yI4u~Iy3IJDLL71:#5wqzE7I#,gaj5.@#B Cr   selector_classc                     || d      }t        |dd       |j                  dk(  sJ t        |j                        dk(  sJ t	        d| j
                  j                  d	      j                          |j                  d
hk(  sJ t        |j                        dk(  sJ t        |dd       t	        d| j
                  j                  d	      j                          t        |j                        dk(  sJ |j                  dk(  sJ t        |j                  dd       d|_	        |j                  dk(  sJ t        |j                  t        j                  g dg dg      d       t        |dd       t        |j                  dd       |t        j                  k(  r4t        j                   t"              5  d|j$                  _        d d d        y y # 1 sw Y   y xY w)NTr   ra   r      r   rb   r   rb   r   r   key_press_eventr   rotater   )r      g(\9@g{Gz?atol-   )gR]@     xa@g=
ףp[@g     V@)g     W@g=
ףp]@g     b@g(\^@)n   r   )r     )rb   r  rb   g
ףp=b@unvalid_value)r	   r   len_stater   figurerD   rr   r   rotationcornersnparrayro   rp   r?   r   r   r   rotation_point)r   r   ry   s      r   test_rectangle_rotater    s    "$/D4zz:<<////t{{q    		 0 0#6??A;;8*$$$t{{q   4zz:		 0 0#6??At{{q   <<////DMM5t4DM==BDLLHH==? @FJL
 4zz:DLL"<4H222]]:& 	D4CD""1	D 	D 3	D 	Ds   :GGc                 ^   t        j                  | d      }t        |dd       |j                  dk(  sJ t	        |j
                        dk(  sJ dD ]X  }|j                  |       t	        |j
                        d	k(  sJ |j                  |       t	        |j
                        dk(  rXJ  y )
NTr   ra   r   r   r   r   )r   r   r   r   )ro   rp   r	   r   r  r  r   remove_state)r   ry   states      r   test_rectangle_add_remove_setr    s    $$RT:D4zz:<<////t{{q   / %u4;;1$$$% 4;;1$$$	%r   use_data_coordinatesc                    | j                  d       t        j                  | d|      }t        |dd       |j                  dk(  sJ |j                  d       |j                  d	       |r|j                  }|d
   |d   |d
   |d   z
  }}}d|d   |d   |d   z
  dz  z   }}||z   |}
}	|dz  |z   }t        |||f|	|
f       t        |j                  |d   |z
  |	||z
  ||z   g       y |j                  }|d
   |d   }}d}||z   |}
}	|d
z  |j                  z  }t        |||f|	|
f       t        |j                  |d   |z
  |	ddg       y )N皙?T)r   r  r   r   r   r   r   r   r   r   r   rS   r   g      G@g     `@)
set_aspectro   rp   r	   r   r   r   _aspect_ratio_correction)r   r  ry   r   rw   rx   widthr   ycenterr   r   ychanges               r   *test_rectangle_resize_square_center_aspectr    s   MM#$$RT:NPD 4xZ8<<5555NN8NN8,,%aj'!*gaj71:6MeugajGAJ,Cq+HHw$u}e9	!)e#tE5>	97MNwqzE'99'.'8'G:K'M 	N ,,qz71:u$u}e9	!)d;;;tE5>	97MNwqzE'99',f'6 	7r   c                      t        j                         \  } }t        j                  t        d      5  t        j                  |d       ddd       y# 1 sw Y   yxY w)zY
    Test that an unraisable exception is not created when initialization
    fails.
    z'unexpected keyword argument 'undefined'matchbar)	undefinedN)rA   rB   r?   r   	TypeErrorro   ButtonrI   r   s     r   "test_axeswidget_del_on_failed_initr$    sE     llnGC	y(Q	R ,rU+, , ,s   AAc                 0   t        j                  | dd      }d|_        t        |dd       |j                  dk(  sJ t        |d	dd
       |j                  dk(  sJ t        |ddd       |j                  D cg c]  }t	        |       }}|g dk(  sJ t        |d	dd       |j                  D cg c]  }t	        |       }}|g dk(  sJ |j
                  j                  dk(  sJ t        |j
                  dddf   ddg       yc c}w c c}w )z'For ellipse, test out the key modifiersrS   T)
grab_ranger   rb      rb   r(  r   r   )r   r   r   )r      r   r*  ra   r   r   )r   r   r   r   r   )r   r   r   )rS   r   rS   r   r   z
ctrl+shift)r   r   r   r   )r   I   Nr   r   rb   )ro   EllipseSelectorr   r	   intrt   shaper   )r   ry   er   s       r   test_ellipser0    s   ""2"$GD'DL 4zz:<<//// 4zzyI<<---- 4xX7C#||,!s1v,G,&&&& 4zz|L#||,!s1v,G,((((==')))DMM!Q$'#s4 -
 -s   <D6Dc                    t        j                  | ddddd      }d|_        t        |j                  d       |j                  dk(  sJ t        |j
                  d	       |j                  dk(  sJ t        |d
d       |j                  dk(  sJ t        |dd       |j                  dk(  sJ t        |dd
       |j                  dk(  sJ t        j                  |j                  j                  d   j                         d      sJ t        j                  |j                  j                  d   j                         d      sJ y )NrS   Tr   r   )markerfacecolorr   )r&  r   r   r'  ))rb   r(  r(  rb   )rb   rb   r(  r(  ))rb   r   r(  r   )r   rb   r   r(  ra   )r   r   r   )r   r(  r   r(  )   r3  )l      r4  r5  r   )rS   rb   rS   rb   r   )ro   rp   r   r   r
  edge_centersr	   r   
same_color_corner_handlesartistsget_markerfacecolorr   r   s     r   test_rectangle_handlesr;  .  sP   $$RBDFIFI3KLD (DLDLL"NO<<////D%%HJ<<//// 4zz:<<//// 4zz:<<//// 4xZ8<<---- $$Q';;=sD D D$$Q';;=sD D Dr   r   c                 $   t        j                  t        d       }t        j                  | ||      }t        |dd       |j                          |j                  dk(  sJ |j                          t        |dd       |j                          y )Nr\   )r_   r   rb   r  r(  r   r   rl        b@g     [@r   rS   rb   )	r   rn   r   ro   rp   r	   ru   r   r   r   r   r_   ry   s       r    test_rectangle_selector_onselectrC  M  sw     yyd6H$$R(TD4zz:!<<77774yi8!r   ignore_event_outsidec                    t        j                  t        d       }t        j                  | ||      }t        |dd       |j                          |j                  dk(  sJ |j                          t        |dd       |r"|j                          |j                  dk(  sJ y |j                          |j                  d	k(  sJ y )
Nr\   )r_   rD  r=  r>  r   r?  r(  r(  r  r  )r@        d@r@  rH  )
r   rn   r   ro   rp   r	   ru   r   r   r   )r   rD  r_   ry   s       r   &test_rectangle_selector_ignore_outsiderI  ^  s    yyd6H$$R(:NPD4zz:!<<77774zz:""$||;;;; 	##%||;;;;r   z$orientation, onmove_callback, kwargs
horizontal)minspanrQ   vertical)rR   r   c                   	
 | j                  d       | j                          | j                  g ddd      }| |fD ]  }g 

fd}g 		fd}|r||d<   t        j                  |||fi |}t        j                  d|d	d
      j                          t        j                  d|dd
      j                          t        j                  d|dd
      j                          t        
dgd       |st        	dgd        y )Nauto)r   r   r   r   )r      xlimylimc                  (    j                  |        y r   append)argsselecteds    r   r_   z$test_span_selector.<locals>.onselect  s    X__T2r   c                  (    j                  |        y r   rT  )rV  moveds    r   onmovez"test_span_selector.<locals>.onmove  s    5<<-r   onmove_callbackr`   ra   r   rc   rd   rf   rg   )rb   re   r   r   )	r  twinx
inset_axesro   SpanSelectorr   rq   rr   r   )r   orientationr[  rP   childtargetr_   rZ  ry   rY  rW  s            @@r   test_span_selectorrb  u  s     MM&HHJMM,XHMEEu+ :2-(.F$%##FHkLVL"" &*a	99A""!6:q	::B(*"""FJ	;;C8: 	:,R8EJ<b9):r   c                 &   t        j                  t        d       }t        j                  | |d|      }t        |dd       |j                          |j                  dk(  sJ |j                          t        |dd       |j                          y )	Nr\   rJ  r   ra   )r(  rb   r   )rb   r(  rA  )	r   rn   r   ro   r^  r	   ru   r   r   rB  s       r   test_span_selector_onselectrd    s{    yyd6HHl,79D 4zz:!<<:%%%4yi8!r   c                 H   t        j                  t        d       }t        j                  t        d       }t        j                  | |d||      }t        |dd       |j                          |j                          |j                  dk(  sJ |j                          |j                          t        |dd	       |r2|j                          |j                          |j                  dk(  sJ y |j                          |j                          |j                  d
k(  sJ y )Nr\   rJ  )r[  rD  ra   r)  r   rb   r   rF  rG  )r(  r  )
r   rn   r   ro   r^  r	   ru   r   r   r   )r   rD  r_   rZ  ry   s        r   !test_span_selector_ignore_outsiderg    s    yyd6HYYDt4FHl065IKD 4zz:!
<<:%%%
4zz:""$  "||z))) 	##%!!#||z)))r   r   c                     t        j                  | t        dd|      }t        |dd       |j                  dk(  sJ t        |dd	       |r|j                  d
k(  sJ |j                  dk(  sJ t        |dd       |j                  dk(  sJ y )NrJ  T)r_   	directionr   r   r   r   r   rA  r   r   )r'   r  )r   r   r   r   )ro   r^  r   r	   r   )r   r   ry   s      r   test_span_selector_dragrj    s     T\,03EGD 4xZ8<<9$$$ 4xX6||y(((||x''' 4zz:<<:%%%r   c                    t        j                  | t        dd      }|j                  dk(  sJ |j                  j                  dk(  sJ t        j                  t              5  t        j                  | t        d      }d d d        d|_        |j                  dk(  sJ |j                  j                  dk(  sJ t        j                  t              5  d|_        d d d        y # 1 sw Y   fxY w# 1 sw Y   y xY w)NrJ  T)r_   ri  r   invalid_direction)r_   ri  rL  invalid_string)ro   r^  r   ri  _edge_handlesr?   r   r   r   s     r   test_span_selector_directionro    s    T\,02D>>\)))''<777	z	" C##B.ACC  DN>>Z''''':555	z	" *)* *C C* *s   #C%C1%C.1C:c           
         t        j                  | t        ddt        dd      t        d            }t	        |d	d
       |j
                  }|j                         t        j                  dd      k(  sJ |j                  dd       |j                         t        j                  dd      k(  sJ |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  |j                  dd       |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  y )NrJ  Tr   r   r   r   r   )r_   ri  r   rZ   r   r   r   r   r   r   r)   r   )ro   r^  r   r   r	   r   r   r   r   r   r   	get_colorr   r   r   s      r   )test_span_selector_set_props_handle_propsrs    s4   T\,0&*S&D-1_>D
 4wJ7##F!W__S%DDDDNNSN,!W__S%DDDD'' )!S(((!S((() 	3/'' )!S(((!S((()r   selectorspan	rectanglec                    t        | d      }|dk(  rt        j                  }d|d<   t        |d<   nt        j                  } |di |}t        |dd	       t        |d
d
	       |j                  rJ d|d<    |di |}|j                  sJ t        |dd	       t        |d
d
	       |j                  sJ t        d| j                  j                  d      j                          |j                  rJ y )NT)r   r   ru  rJ  ri  r_   r   r   r   )r   r   rD  r   escaper   )r   ro   r^  r   rp   r	   r   rD  r   r  rD   rr   )r   rt  rP   Selectorry   s        r   test_selector_clearrz    s    RT*F6''*{!z,,fD4xZ8 4zz:((((%)F!"fD$$$$4xZ8 4zz:$$$$		 0 0(;DDF(((((r   c                    |dk(  rt        j                  | t        ddd      }nt        j                  | d      }t	        |dd       |j
                  sJ |j                         sJ |dk(  r|j                  d	k(  sJ |j                          |j
                  rJ |j                         rJ t	        |dd
       |j
                  sJ |j                         sJ |dk(  r|j                  dk(  sJ y y )Nru  rJ  T)r_   ri  r   rD  r   r   r   r   rA  )r   r   )rS   r   )	ro   r^  r   rp   r	   r   get_visibler   r   )r   rt  ry   s      r   test_selector_clear_methodr}  )  s    6##B049=? ((>4xZ8$$$$6||y(((JJL((((!!! 4xY7$$$$6||x''' r   c                    t        j                  | t        dd      }t        j                  t
              5  |j                  d       d d d        t        j                  t
              5  |j                  d       d d d        t        j                  t
              5  |j                  d       d d d        |j                  d       y # 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   3xY w)NrJ  Tr   r   r   r   r   )ro   r^  r   r?   r   r   r   r   s     r   test_span_selector_add_stater  C  s    D,,02D 
z	" ,*+,	z	" !x !	z	" !x ! 	NN6, ,! !! !s#   C	*CC!	CC!C*c                 x   g d}t        j                  | |dd      }|j                  D ]&  }|j                         rJ |j	                         s&J  |j                  d       |j                  d       |j                  D ]&  }|j                         sJ |j	                         r&J  |j                  |k(  sJ y )N)r'   r   r   rJ  FrQ   T)ro   ToolLineHandlesr9  get_animatedr|  set_visibleset_animated	positions)r   r  tool_line_handler   s       r   test_tool_line_handler  Q  s    I..r9l7<> #** (&&(((%%'''(   &!!$'"** $""$$$!!###$ %%222r   ri  )rJ  rL  c                    t        j                  dd      \  }}|j                  ddgddg       |j                  j	                          |j                         }|j                         }t        j                  |t        | d      }|j                         |k(  sJ |j                         |k(  sJ | dk(  r|n|}|j                  j                  t        |      k(  sJ d}d	}|}	t        |||
       |j                         |k(  sJ |j                         |k(  sJ | dk(  rdnd}
||
   |	|
   g}|j                  j                  |k(  sJ y )Nr   rS   r'   r   Tr   rJ  )r~   g      '@)r      r   r   )rA   rB   plotrD   rE   
get_xbound
get_yboundro   r^  printrn  r  listr	   )ri  rI   r   x_boundy_boundry   bound
press_data	move_datarelease_dataindexhandle_positionss               r   test_span_selector_boundr  d  s;   ll1a GCGGRHr2hJJOOmmoGmmoGE9$GD==?g%%%==?g%%% L0GgE''4;666JIL4zy9==?g%%%==?g%%%l*AE"5)<+>?''+;;;;r   QtAgg)skip_on_importerrorc            	         t        j                  ddt         j                  z  d      t        j                        t	        j
                         \  } }|j                  d      \  }|j                  g d      \  t	        j                  d       |j                  |       | j                  j                  | j                         fd}t        j                  ||d|ddd	      }t        j                  d
|dd      j!                          t        j                  d|dd      j!                          |j#                         |fk(  sJ |j$                  du sJ j$                  sJ t'        j)                         d       |j+                          j$                  du sJ t        j                  d
|dd      j!                          t        j                  d|dd      j!                          |j$                  du sJ j$                  sJ t'        j)                         d       t        j                  d|dd      j!                          j$                  du sJ y)zACheck that the animated artists changed in callbacks are updated.r   r   rb   T)animated皙?c                     t        j                  | |f      \  }}|| j                         }j                  t        j                  |             y r   )r  searchsortedmeanset_data	full_like)vminvmaxindminindmaxvln2valuesxs        r   r  z:test_span_selector_animated_artists_callback.<locals>.mean  sI    T4L96&!&&(QQ*+r   rJ  )ri  r[  r   r   rQ   r`   )r   r   r   rc   )r   r   FgSG-?)   r   r   gȄC(rf   N)r  linspacepisinrA   rB   r  pausedraw_artistrD   blitbboxro   r^  r   rq   rr   _get_animated_artistsstaler   	get_ydataupdate)rI   r   lnr  ru  r  r  r  s        @@@r   ,test_span_selector_animated_artists_callbackr    s    	Aq255y#&AVVAYFllnGC
''!Vd'
+CB7727%DC
 IIcNNN2JJOOCHH, DL04,037(,	.D 3RCLLN4b&!DMMO%%'B944488u999CMMO%78KKM99 3RCLLN4b&!DMMO88u999CMMO%895r61ENNP99r   c                    d }t        j                  | |d      }|j                  }t        j                  ddd      }t        j
                  g d      }t        j
                  g d      } |||      }t        ||       y )	Nc                       y r   r   )rV  s    r   r_   z4test_snapping_values_span_selector.<locals>.onselect  s    r   rJ  )ri  r   r   r   )
gr  r   r   333333?ffffff??g
ףp=
@      @      @)
        r  r  r   r   r         ?r  r  r  )ro   r^  _snapr  r  r  r   )r   r_   ry   snap_functionsnap_valuesr  expects          r   "test_snapping_values_span_selectorr    sl     HFDJJM++aB'KXXJKFXXJKF6;/FFF#r   c                       fd}t        j                  d      dz  }t        j                   |d|      }d|_        |j                  dk(  sJ d |_        |j
                  J d|_        |j                  dk(  sJ y )Nc                     d_         y )NT)_got_onselect)r  r  r   s     r   r_   z)test_span_selector_snap.<locals>.onselect  s    r   r   r  rJ  )ri  r  )   r   )r&   $   )r  arangero   r^  r   r  )r   r_   r  ry   s   `   r   test_span_selector_snapr    s      ))B-!#KH,79DDL<<8###D###DL<<8###r   c                     t        j                  | d dd      }d|_        |j                  dk(  sJ |j                  sJ d}d}t	        |||       |j                  dk(  sJ y )	Nc                      y r   r   )ar   s     r   <lambda>z,test_span_selector_extents.<locals>.<lambda>      r   rJ  T)rD  )r   rS   )      )r'   r  r   )ro   r^  r   r   r	   )r   ry   r  r  s       r   test_span_selector_extentsr    sp    
|$
D DL<<7"""$$$$ JL4z|<<<7"""r   r$   r)   )rQ   rZ   c                 t   t        j                  t        d       }t        j                  | fd|i|}t        j                  d| dd      j                          t        j                  d| dd      j                          t        j                  d| d	d      j                          |j                  g d
       y )Nr\   r_   r`   ra   r   rc   r)  rf   rF  )ra   r)  rF  )	r   rn   r   ro   LassoSelectorr   rq   rr   assert_called_once_with)r   rP   r_   ry   s       r   test_lasso_selectorr    s     yyd6H  AhA&AD3RQGPPR4b*aHQQS5r:qIRRT$$%IJr   c                    t        j                  t        d       }t        j                  | |t        dd            }|j                  }t        j                  |j                         d      sJ |j                         dk(  sJ |j                  dd       t        j                  |j                         d      sJ |j                         dk(  sJ y )Nr\   r   r   rq  )r_   rZ   r   r   )r   rn   r   ro   r  r   r   r   r7  rr  r   r   )r   r_   ry   r   s       r   test_lasso_selector_set_propsr    s    yyd6H  h'+#S'ACD ##Ff..0#666$$$NNCN(f..0#666$$$r   c                    t        j                  t        d       }t        j                  | d|      }|j
                  }t        j                  |j                         d      sJ |j                         dk(  sJ |j                         dk(  sJ t        j                  | d|t        dddd	      
      }|j
                  }t        j                  |j                         d      sJ |j                         dk(  sJ |j                         dk(  sJ |j                         dk(  sJ |j                  d       |j                  d       t        j                  |j                         d      sJ |j                         dk(  sJ y )Nr\   ra   r   -r   darkbluer   r   )	linestyler)   r   lwrY   r   r   )r   rn   r   ro   Lassorj   r   r7  rr  get_linestyleget_lwr   r   	set_color	set_alpha)r   r_   ry   rj   s       r   test_lasso_set_propsr    sK   yyd6H==Z2D99Ddnn.8883&&&;;=A==ZZsq:: ;D 99Ddnn.
;;;>>s""";;=A3&&&NN3NN3dnn.444>>s"""r   c                    d}t        j                  | |d      }|j                         g dk(  sJ |j                  d       |j                         g dk(  sJ |j	                         dgk(  sJ |j                          |j                         g dk(  sJ |j	                         g k(  sJ dt        |      t        |      dz   fD ]6  }t        j                  t              5  |j                  |	       d d d        8 d
D ]7  }t        j                  t              5  |j                  d|       d d d        9 |j                  d       }|j                  |       y # 1 sw Y   xY w# 1 sw Y   sxY w)N)r  r   c)TFTr   )FFTr  )FFFr   )r  )invalidr  r   )r  c                       y r   r   r   r   r   r  z#test_CheckButtons.<locals>.<lambda>)  r  r   )ro   r   
get_status
set_activeget_checked_labelsr   r  r?   r   r   r!  
on_clicked
disconnect)r   labelscheckinvalid_indexinvalid_valuecids         r   test_CheckButtonsr    sn   F  V-@AE!4444	Q!5555##%#...	KKM!6666##%+++c&k3v;q=9 2]]:& 	2=1	2 	22 ) 5]]9% 	5Qm4	5 	55 

<
(C	S	2 	2	5 	5s   !EE*E'	*E3	toolbar)rk   toolbar2toolmanagerc                    t         j                  j                  d|       t        j                  t
        d       }t        j                  t
        d       }t        j                  | d      }|j                  |       |j                  |       |j                  dk(  sJ t        j                  d| dd      j                          |j                  d       |j                  dk(  sJ |j                  dk(  sJ |j!                          |j#                          |j                  dk(  sJ t        j                  d| dd      j                          t%        d	| j&                  j(                  d
      j                          t%        d	| j&                  j(                  d      j                          |j                  dk(  sJ y )Nr  r\    r`   r   r   r   zx**2r   r   +5r   )rA   rcParams_setr   rn   r   ro   TextBox	on_submiton_text_changetextr   rq   rr   set_val
call_countbegin_typingstop_typingr   r  rD   )r   r  submit_eventtext_change_eventry   s        r   test_TextBoxr  -  sb    LLi)99$T:L		t$???2r"DNN< )*99??3R1ENNPLL99''1,,,""a'''3R1ENNP		 0 0#6??A		 0 0#6??A''1,,,r   c                     t        j                  | d      }|j                  d       |j                  dk(  sJ |j                  dk(  sJ |j                          |j                  dk(  sJ |j                  dk(  sJ y )NRadio 1Radio 2zRadio 3r   r  r  r   )ro   r   r  value_selectedindex_selectedr   )r   radios     r   test_RadioButtonsr  M  s|      %FGE	Q9,,,1$$$	KKM9,,,1$$$r   zcheck_radio_buttons.pngmpl20)styleremove_textc            
         t               } | j                  d      }|j                  d       |j                  d      }t	        j
                  |d      }|j                  d      }t	        j                  |dd	      }|j                  d
      }t	        j
                  |dg dg ddg dg dd      }|j                  d      }t	        j                  |dd	g dg ddg dg dddg di      }	y )NF)rootr   )left)皙?r  r   333333?r  )r  r   r   r  )zCheck 1zCheck 2zCheck 3)FTT)r  r   r   r  )   r  r&   )r$   greenblue)r*   r)   )r+   	palegreen	lightbluer-   r0   )r  r  r   r  r)   r1   r6   r7   )r
   
get_figuresubplots_adjustadd_axesro   r   r   )
r   rI   rax1rb1rax2cb1rax3rb3rax4cb4s
             r   test_check_radio_buttons_imager.  W  s    	B
--U-
#CS!<<./D


t%F
GC<<./D


t%F24C <<./D


/!,68":"IK	LC <<./D


/1D!,68":"IK679Cr   c                 p   t        j                  | j                         ddg       |j                  g g       }|j	                  ddgddg|j
                  t        j                  d   dz  dz  d	d
g       |j                  ddd|j
                  d       |j                  ddd|j
                  d       y )Nteacoffeexticksyticksr  UUUUUU?UUUUUU?	font.sizer   C0rk   )r   sr        ?r   r   va)	ro   r   rB   add_subplotscatter	transAxesrA   r   r  fig_testfig_refr   s      r   test_radio_buttonsrC  v  s    **,uh.?@			Br		2BJJSzC:,,{+a/A5$  IGGCer||GAGGCh",,8GDr   c                    dgdgd}dddd}t        j                  |j                         dd	g||
       t        j                  | j                         dd	g      }|j                  |       |j	                  i |ddi       y )Nr$      r(   r  r  r   r/   r.   	linewidthr0  r1  r0   r9        b@)ro   r   rB   set_label_propsset_radio_props)rA  rB  r1   r2   cbs        r   test_radio_buttons_propsrL    s    "G"6K 'f1MK))+eX->%0kK 
		h//1E83D	EB{# 8+8sK89r   zcheck_radio_grid_buttons.pngc                  ,   t        j                         } t        j                  | j	                  d      g ddd      }t        j
                  | j	                  d      g ddg d	
      }t        j                  | j	                  d      g ddd      }y )N)r  r  g?r  )r0  r1  zchocolate milkwatersodacokerJ  r  )layoutactive)r  r  r:  g433333?)ChickenSaladRiceSushiPizzaFries)r   r   )TTFFFT)rQ  r3   )r  gffffff?r   r   )zTrinity CreamCakez	Ice Cream	MuhallebirL  r   )rA   r  ro   r   r%  r   )rI   rb_horizontalcb_gridrb_verticals       r   test_radio_grid_buttonsr^    s    
**,C((,-D	M ""./?7	G &&-.;	Kr   c                    t        j                  t        d      5  t        j                  | ddgdddi      }d d d        t        j                  j                  j                         dd	g      sJ y # 1 sw Y   <xY w)
Nz"Both the \*activecolor\* parameterr  r0  r1  r$   r/   r  )activecolorr2   rk   )	r?   warnsUserWarningro   r   r   r7  _buttonsr   )r   rbs     r   !test_radio_button_active_conflictre    s{    	kA
C F!!"uh&7U/:G.DFF
 bkk779GV;LMMMF Fs   A55A>c                     t        j                  |j                         ddgd       t        j                  | j                         ddgd      }d|_        y )Nr0  r1  r  )r`  r$   )ro   r   rB   r`  )rA  rB  rK  s      r   %test_radio_buttons_activecolor_changerg    sS    ))+eX->%,. 
		h//1E83D*/
1BBNr   c           	         t        j                  | j                         ddgddg       |j                  g g       }|j	                  ddgddgd|j
                  t        j                  d	   d
z  d
z  ddg       |j	                  ddgddgd|j
                  t        j                  d	   d
z  d
z  ddg       |j                  ddd|j
                  d       |j                  ddd|j
                  d       y )Nr0  r1  Tr2  r  r5  r6  r9  r7  r   rk   )markerr   r9  r  r  kr:  r   r;  )	ro   r   rB   r=  r>  r?  rA   r   r  r@  s      r   test_check_buttonsrk    s    **,uh.?$N			Br		2BJJSzC:cR\\,,{+a/A5&&9I  KJJSzC:cR\\,,{+a/A5#s  EGGCer||GAGGCh",,8GDr   c                 z   dgdgd}dddd}ddd}t        j                  |j                         d	d
gddg|||       t        j                  | j                         d	d
gddg      }|j                  |       |j	                  i |ddi       |j                  d      |d<   |j                  i |ddi       y )Nr$   rE  r(   r  r  r   rF  )r/   rG  r0  r1  Tr"  r9  rH  r/   r.   )ro   r   rB   rI  set_frame_propspopset_check_props)rA  rB  r1   r6   r7   rK  s         r   test_check_button_propsrp    s    "G"6K 'f1MK %A6K))+eX->t%0k%02 
		h//1E83D#Tl
,B{# 8+8sK89  +{;K8+8sK89r   widgetc           	      \   t        j                  t        d      } || dg      }|j                  |       t	        j
                  d| | j                  j                         j                  | j                  j                  d            d      j                          |j                          y)zDTests what https://github.com/matplotlib/matplotlib/pull/31031 fixedNr\   zTest Buttonr`   )r  r   r   )r   rn   r   r  r   rq   r   invertedr   r?  rr   ru   )r   rq  r  rR   s       r   test__buttons_callbacksrt    s     48JB(F
j!

))",,*@*@+
 	 	
 hj!!#r   c                  R   t        j                         \  } }t        j                  t              5  t        j                  |dddd       d d d        t        j                  t              5  t        j                  |dddd       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)Nr  r        8@r   )r   labelvalminvalmax	slidermin)r   rw  rx  ry  	slidermax)rA   rB   r?   r   r   ro   Sliderr#  s     r   'test_slider_slidermin_slidermax_invalidr}    s    llnGC	z	" '"Bs4!%	'' 
z	" '"Bs4!%	'' '' '' 's   B-BBB&c                  >   t        j                         \  } }t        j                  |dddd      }t        j                  |dddd|      }|j                  |j                  k(  sJ t        j                  |dddd|	      }|j                  |j                  k(  sJ y )
Nr  r  rv  r  r   rw  rx  ry  valinitr  )r   rw  rx  ry  r  rz  r   )r   rw  rx  ry  r  r{  rA   rB   ro   r|  val)rI   r   slider_sliders       r   test_slider_slidermin_slidermaxr    s    llnGCnn"S%(*G ^^rC$'7<F::$$$^^rC$(G=F::$$$r   c                     t        j                         \  } }t        j                  |dddd      }|j                  |j
                  k(  sJ t        j                  |dddd      }|j                  |j                  k(  sJ y )Nr  r  rv  g      $r  g      9@)rA   rB   ro   r|  r  rx  ry  rI   r   r  s      r   test_slider_valmin_valmaxr    so    llnGC^^rC$)+F::&&&^^rC$(*F::&&&r   c            	          t        j                         \  } }t        j                  |ddddd      }|j                  dk(  sJ t        j                  |ddddg d      }|j                  d	k(  sJ y )
Nr  r  rv  g&@r   )r   rw  rx  ry  r  valstepr   )r   r   r  g333333@r  r  r  s      r   test_slider_valstep_snappingr    sm    llnGC^^rC$(!5F::^^rC$(2CEF::r   c                     t        j                         \  } }t        j                  |ddddd      }|j	                  d       |j
                  dk(  sJ |j                  j                         j                  |j                  j                               }t        |j                  g d       t        j                         \  } }t        j                  |ddddd	      }|j	                  d       |j
                  dk(  sJ |j                  j                         j                  |j                  j                               }t        |j                  g d
       y )Nr  r   rE  r  rJ  )r   rw  rx  ry  r  r_  rS   )r   r:  竪?r   rL  )r:  r   r   r  )rA   rB   ro   r|  r  r  polyget_extentstransformedr?  rs  r   bounds)rI   r   r  boxs       r   test_slider_horizontal_verticalr    s   llnGC^^rAb$&LBF
NN2::
++
!
!
#
/
/0E0E0G
HCCJJ 34llnGC^^rAb$&J@F
NN2::
++
!
!
#
/
/0E0E0G
HCCJJ 34r   c                      t        j                         \  } }t        j                  |dddd      }|j	                  d       |j                          |j                  dk(  sJ y )Nr  r   r   r   r        ?)rA   rB   ro   r|  r  resetr  r  s      r   test_slider_resetr  2  sN    llnGC^^rAaLF
NN4
LLN::r   r_  c           	      >     dk(  rg d}ng d}t        j                         \  }}t        j                  |ddd ddg	      }|j                  j                         j                  |j                  j                               }t        |j                         j                         |   g d
       t        |j                  d        fd}|j                  d       t        |j                  d       t         ||      d       |j                  j                         j                  |j                  j                               }t        |j                         j                         |   g d       |j                  d       t        |j                  d       t         ||      d       |j                  d       t        |j                  d       t         ||      d       |j                          t        |j                  d       t         ||      d       y )NrL  r   r   r   r   r   r   r   r   r  r  r  r  (\?r   rw  rx  ry  r_  r  )r  r:  r  r  )r  r  c                     dk(  r+| j                   D cg c]  }|j                         d    c}S | j                   D cg c]  }|j                         d    c}S c c}w c c}w )NrL  r   )_handlesr  	get_xdata)r  hr_  s     r   r  z+test_range_slider.<locals>.handle_positionsM  sS    *$.4oo>AKKM!$>>.4oo>AKKM!$>> ?>s   A A")皙?r  )r  r:  r  r  )r   r  )r  r   )r  rS   r#   )rA   rB   ro   RangeSliderr  r  r  r?  rs  r   
get_pointsflattenr  r  r  )r_  idxrI   r   r  r  r  s   `      r   test_range_sliderr  :  s   j llnGC  RC[dF ++
!
!
#
/
/0E0E0G
HCCNN$,,.s35LM FJJ,? NN:FJJ
+$V,j9
++
!
!
#
/
/0E0E0G
HCCNN$,,.s35IJ
NN:FJJ
+$V,j9
NN8FJJ'$V,f5
LLNFJJ,$V,k:r   c           	      d   | dk(  rg d}ng d}t        j                         \  }}t        j                  |ddd| ddg      }|j                  j                         j                  |j                  j                               }t        |j                         j                         |   g d	       y )
NrL  r  r  r  r  r  r   r  )r   r:  r   r  )rA   rB   ro   r  r  r  r  r?  rs  r   r  r  )r_  r  rI   r   r  r  s         r   "test_range_slider_same_init_valuesr  g  s    j llnGC  bSkQF ++
!
!
#
/
/0E0E0G
HCCNN$,,.s35GHr   c                 .   t        j                  t        d      }| d   j                  j                  j
                  d   }t        j                  |fd|i|}| D ]  }|j                           |j                  |k(  sJ |j                  |fi fk(  sJ y)a  
    Helper function to test Polygon Selector.

    Parameters
    ----------
    events : list[MouseEvent]
        A sequence of events to perform.
    expected : list of vertices (xdata, ydata)
        The list of vertices 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`
    **kwargs
        Keyword arguments are passed to PolygonSelector.
    Nr\   r   r_   )r   rn   r   rD   r  axesro   PolygonSelectorrr   r  rv   )eventsexpectedselections_countrP   r_   r   ry   events           r   check_polygon_selectorr  x  s      yyd6H				 	 	%	%a	(B""2CCFCD  "22228,!3333r   c                     t        j                  d| |      t        j                  d| |d      t        j                  d| |d      gS )Nrc   r`   r   rf   r   rq   r   xys     r   polygon_place_vertexr    I    ""#8"bA""#7RC""#92r1E r   c                     t        j                  d| |      t        j                  d| |d      t        j                  d| |d      gS )Nrc   r`   r   rf   r  r  s     r   polygon_remove_vertexr    r  r   draw_bounding_boxc                 R   t        j                  t        |      }g d}g t        | d      t        | d      t        | d      t        | d      } |||d       g d}g t        | d      t        | d      t	        d| j
                  j                  d	      t        j                  d
| d      t        j                  d| dd      t        j                  d
| d      t        j                  d| dd      t	        d| j
                  j                  d	      t        | d      t        | d      } |||d       g d}g t        | d      t        | d      t	        d| j
                  j                  d      t        j                  d
| d      t        j                  d| dd      t        j                  d
| d      t        j                  d| dd      t	        d| j
                  j                  d      t        | d      t        | d      } |||d       g d}g t        | d      t        | d      t        | d      t        | d      t        j                  d
| d      t        j                  d| dd      t        j                  d
| d      t        j                  d| dd      } |||d       g d}g t        | d      t        | d      t        | d      t        | d      t	        d| j
                  j                  d      t        j                  d
| d      t        j                  d| dd      t        j                  d
| d      t        j                  d| dd      t	        d| j
                  j                  d      } |||d       g d}t	        d| j
                  j                  d	      t        j                  d
| d      t        j                  d| dd      t        j                  d
| d      t        j                  d| dd      t	        d| j
                  j                  d	      t	        d| j
                  j                  d      t        j                  d
| d      t        j                  d| dd      t        j                  d
| d      t        j                  d| dd      t	        d| j
                  j                  d      gt        | d      t        | d      t        | d      t        | d      } |||d       g d}g t        | d      t        | d      t	        d| j
                  j                  d      t	        d| j
                  j                  d      t        | d      t        | d      t        | d      t        | d      } |||d       y )Nr  r   r   r(  r   r   r(  r  r  r  r   )r   r   r  r  r   r   rc   r`   r  rf   key_release_event)r   r   )r(  r   r  r   ra   rf  r  )U   r   r  r  )r   r   r  r   ))r   r   )r   r   )r   r   r)  )rh   r   rx  )		functoolspartialr  r  r   r  rD   r   rq   )r   r  check_selectorexpected_resultevent_sequences        r   test_polygon_selectorr    s_   &&2CEN 7O	b(	+	b)	, 
b)	, 
b(	+	N >?A6 7O	b(	+	b)	, 	"BII$4$4i@ 	""#8"hG	
 	""#7XqI 	""#8"hG 	""#92xK 	$bii&6&6	B 
b)	, 
b(	+N >?A6 7O	b(	+	b)	, 	"BII$4$4g> 	""#8"jI	
 	""#7ZK 	""#8"jI 	""#92z1M 	$bii&6&6@ 
b)	, 
b(	+N >?A6 7O		b(	+		b)	,	 
b)	,	 
b(	+		
 	""#8"hG	 	""#7XqI	 	""#8"hG	 	""#92xK	N >?A6 7O	b(	+	b)	, 
b)	, 
b(	+	
 	"BII$4$4g> 	""#8"jI 	""#7ZK 	""#8"jI 	""#92z1M 	$bii&6&6@N >?A6 7O"BII$4$4i@""#8"jI""#7ZK""#8"jI""#92z1M$bii&6&6	B"BII$4$4g>""#8"jI""#7ZK""#8"jI""#92z1M$bii&6&6@ 
b(	+ 
b)	, 
b)	,  
b(	+!N$ >?A6 7O		b(	+		b)	,	 	"BII$4$4h?	 	$bii&6&6A		
 
b(	+	 
b)	,	 
b)	,	 
b(	+	N >?A6r   c                    t        j                  | t        dd      t        d      |      }g t        | d      t        | d      t        | d	      t        | d      D ]  }|j	                           |j
                  }|j                         dk(  sJ |j                         dk(  sJ |j                  d
d       |j                         d
k(  sJ |j                         dk(  sJ |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  |j                  d
d       |j                  D ],  }|j                         d
k(  sJ |j                         dk(  r,J  y )Nr   r   rq  r   r   )rZ   r   r  r  r  r  r   r   )ro   r  r   r  rr   r   rr  r   r   r   r   )r   r  ry   r  r   s        r   ,test_polygon_selector_set_props_handle_propsr    s   ""2)-Cs)C0435FHD
	b(	+	b)	, 
b)	, 
b(	+	  	 ##F$$$$$$NNCN($$$$$$'' )!S(((!S((() 	3/'' )!S(((!S((()r   c                     | j                         }|j                         }t        j                  |ddi      }d|_        y )NvisibleFrY   )r   r  r   r  )rB   ro   rp   r   )rA  rB  ax_test_ry   s        r   test_rect_visibilityr  5  s>     !GA$$WY4FGD'DLr   r  )r   r   r   c                 V   g d}t        | |d         t        | |d         t        | |d         t        | |d         g}|j                  |t        | d             |j                  t        | d             t	        j
                  t        j                  |g       }t        ||d|       y )Nr  r   r   r   )rO  rO  r  )	r  insertrU  r  r  reduceoperatoriaddr  )r   r  r  vertsr  s        r   test_polygon_selector_remover  @  s     -E*2uQx8*2uQx8*2uQx8*2uQx8	:N #3B
CD/J?@%%hmm^RHN>5!->@r   c                     g d}g t        | |d         t        | |d         t        | |d         t        | |d         t        | |d         }t        ||dd  d|       y Nr  r   r   r   r  )r  r  r  )r   r  r  r  s       r   (test_polygon_selector_remove_first_pointr  S  s    ,E	b%(	+	b%(	+ 
b%(	+ 
b%(	+	
 
r58	,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 ]  }|j	                           |j
                  |dd k(  sJ y r  )r  r  ro   r  rr   r  )r   r  r  r  ry   r  s         r   test_polygon_selector_redrawr  a  s    ,E
	b%(	+
	b%(	+
 
b%(	+
 
b%(	+	
 
r58	,
 
r58	,
 
b%(	+
N ""29JKD  ::q###r   c                 ~   g d}| j                         }t        j                  ||      }||_        |j                  |k(  sJ |j                         }t        j                  ||      }g t	        ||d         t	        ||d         t	        ||d         t	        ||d         D ]  }|j                           y )N))r  r  )r   r  )r   r   r  r   r   r   )r=  ro   r  r  r  rr   )	rA  rB  r  r  r  	tool_testax_reftool_refr  s	            r   "test_polygon_selector_verts_setterr  x  s     1E""$G''CTUIIO??e###  "F&&vARSH	feAh	/	feAh	/ 
feAh	/ 
feAh	/	  	r   c                 \   | j                  dd       g d}g t        | |d         t        | |d         t        | |d         t        | |d         t        | |d         }t        j                  | d	      }|D ]  }|j	                           t        j                  d
| dd      j	                          t        j                  d| d      j	                          t        j                  d| dd      j	                          t        j                  j                  |j                  g d       t        j                  d
| dd      j	                          t        j                  d| d      j	                          t        j                  d| dd      j	                          t        j                  j                  |j                  g d       t        j                  j                  |j                  j                  d       t        j                  d
| dd      j	                          t        j                  d| dd      j	                          t        j                  j                  |j                  g d       t        j                  j                  |j                  j                  d       y )N)ir   rP  ))r'   r   )r   r'   )r'   (   )r  r'   r   r   r   r   Tr  r`   )r  r  rc   r   rf   ))rS   r   r   )rS   r'   )r'   rS   r   r   )r   r'   r   r   r  r  r   )      4@      D@r  r  r   )r  r  r  )r  r  g      >@r  )setr  ro   r  rr   r   rq   r  testingr   r  _boxr   )r   r  r  ry   r  s        r   test_polygon_selector_boxr    s<   FF		F*2E	b%(	+	b%(	+ 
b%(	+ 
b%(	+	
 
b%(	+N ""2>D  3R1ENNP4b(CLLN5r8QGPPRJJ

:< 3R1ENNP4b(CLLN5r8QGPPRJJ

<> JJ		35 3R1ENNP5r8QGPPRJJ

24JJ		35r   c                 ^   t        d      }t        ddd      }t        ddd	      }t        d
      }t        j                  | d||||      }g t        | d      t        | d      t        | d      t        | d      D ]  }|j	                           |j
                  }t        j                  |j                         d      sJ |j                  D ]c  }|j                         dk(  sJ t        j                  |j                         d      sJ t        j                  |j                         d      rcJ  |j                  j
                  }|j                         dk(  sJ t        j                  |j                         d      sJ t        j                  |j!                         d      sJ |j                  j                  D ]c  }|j                         dk(  sJ t        j                  |j                         d      sJ t        j                  |j                         d
      rcJ  y )Nr   r  ow)ri  r2  r   :r  r   )r  r/   r.   y)r   T)r  rZ   r   	box_propsbox_handle_propsr  r  r  )r   ro   r  r  rr   r   r   r7  rr  r   
get_markerr:  r   r  r  r   get_edgecolor)	r   rZ   r   r  r  ry   r  r   
box_artists	            r   ,test_polygon_selector_box_props_handle_propsr    s    sOEsCMLscSAIC0""
d,.>@D
	b(	+	b)	, 
b)	, 
b(	+	  	 ##Ff..0#666'' E  "c)))!!&"<"<">DDD!!&"<"<">DDDE
 ,,J##%,,,j668#>>>j668#>>>)),, E   "c)))!!&"<"<">DDD!!&"<"<">DDDEr   c                 p   t        j                  t        d       }t        j                  | |      }g dg dfD ]  }|D ]#  }t        | |      D ]  }|j                           % |j                  }|j                  sJ |j                         sJ |j                         sJ t        j                  j                  |j                         |       |j                  |d d fi fk(  sJ |j                          |j                  rJ t        j                  j                  |j                         dg        y )Nr\   )r  r  r  r  )r  )rb   r   r  r  r  r    )r   rn   r   ro   r  r  rr   r   r   r|  r  r  assert_equal
get_xydatarv   r   )r   r_   ry   resultr  r  r   s          r   "test_polygon_selector_clear_methodr    s   yyd6H""2x0D==? ? 	!B-b"5 ! !	! ''((((!!!!!###


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

,,,,


 1 1 3fX>!?r   horizOnvertOnwith_deprecated_canvasc                    t        j                         }|j                  dd      \  }}t        j                         j                         }|rKt        j                  t
        j                  d      5  t        j                  d ||fd| |      }d d d        nt        j                  ||fd| |      }t        j                        dk(  sJ t        |j                        dk(  sJ t        j                  d|d	      j                          |j                  j!                          |j                  D ]  }|j#                         d
k(  rJ  |j                  D ]  }|j%                         dk(  rJ  t        |j                  D 	cg c]  }	|	j'                         s|	 c}	      |rdndk(  sJ t        |j                  D 	cg c]  }	|	j'                         s|	 c}	      | rdndk(  sJ |j(                   |_        |j*                   |_        t        j                  d|d	      j                          t        |j                  D 	cg c]  }	|	j'                         s|	 c}	      |rdndk(  sJ t        |j                  D 	cg c]  }	|	j'                         s|	 c}	      | rdndk(  sJ t        j                  d|d      j                          |j                  D ]  }|j#                         d
k(  rJ  |j                  D ]  }|j%                         dk(  rJ  y # 1 sw Y   xxY wc c}	w c c}	w c c}	w c c}	w )Nr   T)sharexzcanvas.*deprecatr  F)rQ   r  r  rc   )r   r:  r  )r:  r:  r   )r  r  )rA   r  rB   r?   ra  mplMatplotlibDeprecationWarningro   MultiCursorr  vlineshlinesr   rq   rr   rD   rE   r  r  r|  r  r  )
r  r  r   rI   ax1ax3ax2multilrj   s
             r   test_MultiCursorr    s    **,Ca-JS#
**,


!C\\#::BUV 	''sCj%E	 	 ###Jwv

 u||!!!u||!!!4c9ENNPJJOO \\ ){{}((()\\ +{{}
***+ D1A1A1CDE  D1A1A1CDE!   %EM||#EL4c9ENNPD1A1A1CDE  D1A1A1CDE!  
 4c:FOOQ\\ ){{}((()\\ +{{}
***+W	 	0 ED EDs<   4L#L0L0L5L5
L: L:L?L?#L-c                     t        j                  dd      \  } \  }}t        j                  |ddgd      }t        j                  |ddgddg      }|j                          |j                          t        j                         5 }| j                  |d	       d d d        | j                         }t        d
| j                  |      }|j                  |       |j                  |       y # 1 sw Y   SxY w)Nr   r   12r   TFrawr;   
draw_event)rA   rB   ro   r   r   removerF   rG   rH   _get_rendererr   rD   _clear)rI   ax_radio	ax_checksr  checksoutrendererevts           r   test_parent_axes_removalr  -  s    !$a!3C	(I  C:q9E!!)c3Z$GFOO	 'C&'   "H
L#**h
7C	LL
MM#' 's   C++C4c                  *   t        j                         } | j                  g d      }| j                  g d      }d}t        j                  t
        |      5  t        j                  |d      }ddd       j                  du sJ y# 1 sw Y   xY w)	zKTest that a warning is raised and useblit is disabled for overlapping axes.)r  r  r  r  )r   r   r  r  z>Cursor blitting is currently not supported on overlapping axesr  Tr  NF)	rA   r  r%  r?   ra  rb  ro   CursorrQ   )rI   r  r
  
match_textcursors        r   -test_cursor_overlapping_axes_blitting_warningr!  D  s~    
**,C
,,+
,C
,,+
,C	  
k	4 3T23 >>U"""3 3s   B		B)qr  rF   r  unittestr   
matplotlibr  matplotlib.backend_basesr   r   r   matplotlib.colorscolorsr   r=   ro   matplotlib.pyplotpyplotrA   matplotlib.testing.decoratorsr   r   matplotlib.testing.widgetsr	   r
   r   numpyr  numpy.testingr   r?   fixturer   rO   markparametrizer   r|   r   r   r   r   r   r   r   r   rp   r,  r  r  r  r$  r0  r;  rC  rI  rb  rd  rg  rj  ro  rs  rz  r}  r  r  r  backendr  r  r  r  r  r  r  r  r  r  r.  rC  rL  r^  re  rg  rk  rp  r   r   rt  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r   r   r   <module>r1     s    	    D D # $  O C C  )   $0N Fa "rh7t	$ 0 '9:1b'At9q"g)FG1b'At9q"g)FG  H H ; F 9* (+-.%.%*)* JF tUm4F; 5F;R tUm4F3 5F3R<C~ )!33W5L5LMODODB
% /%?7 @7B,56D> u6" 7"  /$?< @<, ?5$r489t1~&5$Tt_565$401	B ::B u6" 7" /$?* @*8 -e}=& >&2*$), fk%:;) <): fk%:;( <(23& &@A< B<6 W$7/ 8/d$$"#" Fd/0a $ 
K
K%#*. $GH- I->% ,-W$O9 P9< E E : : 12'tT U,N   E E : :, G$8$8':N:N#OP$ Q$"'%'5( z(BC); D);X z(BCI DI 48 ,udm<n7 =n7b ,udm<) =)< ( ( 	*,udm<@ = +@" ,udm<
@ =
@ ,udm<$ =$, ,udm<  =&(5V#EL?. UDM2E4=11E4=A2+ B 2 32+j.#r   