
    G8cC                     4   d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z d dlmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZ d dlZd dlmZ d dlZej>                  d	        Z ejB                  jE                  d
 e#       df e#dd      df e#dd      df e#ddd      df e#ddd      df e# e#d            dfg      d        Z$ejB                  jE                  dddg      ejB                  jE                  dd dgddgddgg      ejB                  jE                  d d dgddgddgg      d!                      Z%d" Z&ejB                  jE                  d#dd$gdd%gg      d&        Z'd' Z(d( Z)d) Z*ejB                  jE                  d*ddg      d+        Z+ejB                  jE                  d*ddg      d,        Z,d- Z-ejB                  jE                  d.ej\                  ej^                  g      d/        Z0d0 Z1ejB                  jE                  d1ddg      d2        Z2d3 Z3d4 Z4ejB                  jE                  d5ddg      d6        Z5ejB                  jE                  d7ddg      d8        Z6ejB                  jE                  d9d:d e#dd;      fd<d e#d=      fd:d e# e#d            fd:d e#d>      fg      d?        Z7ejB                  jE                  d5ddg      d@        Z8ejB                  jE                  d7ddg      dA        Z9ejB                  jE                  dBddg      dC        Z:dD Z;dE Z<ejB                  jE                  dFdGdHg      dI        Z=ejB                  jE                  dFdGdHg      dJ        Z>dK Z?dL Z@ejB                  jE                  dMdN      dO        ZAejB                  j                  dPdQ      dR        ZCdS ZDdT ZEejB                  jE                  dU e#        e#d e#dVW      X       e#dd      g      dY        ZFdZ ZGejB                  jE                  d[g d\      d]        ZH ed^gd_d`      da        ZI edbgd_d`      dc        ZJdd ZKde ZLdf ZMdg ZNdh ZOdi ZPejB                  jE                  djd:d<g      dk        ZQejB                  jE                  djd:d<g      dl        ZRdm ZSdn ZTdo ZUejB                  jE                  dpddg      dq        ZVejB                  jE                  dpddg      dr        ZW e       ds        ZXejB                  jE                  dtg du      ejB                  jE                  dpddg      dv               ZYejB                  jE                  dpddg      dw        ZZejB                  jE                  dpddg      dx        Z[ejB                  jE                  dpddg       edygz      d{               Z\d| Z]ejB                  jE                  d}ddg      ejB                  jE                  d~ddg      d               Z^y)    )nullcontextN)mock)MatplotlibDeprecationWarning)
MouseEvent)check_figures_equalimage_comparison)click_and_dragdo_eventget_ax
mock_eventnoop)assert_allclosec                      t               S N)r        ?/usr/lib/python3/dist-packages/matplotlib/tests/test_widgets.pyaxr      s	    8Or   zkwargs, warning_msglineF)drawtypeuseblitz)Support for drawtype='line' is deprecatedT   )r   buttonnone
   )r   minspanxminspanyz)Support for drawtype='none' is deprecatedpixels)r   r   
spancoords)fill)propsc                    t        j                  t        d       }|rt        j                  t
        |      n	t               5  t        j                  | |fi |}d d d        t        dddd       t        |dddd       t        |d	d
d
d       |j                  dd       dvr(t        |j                  g dg dg|j                         |j                          |j                  \  \  }}}|j                  dk(  sJ |j                   dk(  sJ |j                  dk(  sJ |j                   dk(  sJ |i k(  sJ y # 1 sw Y   xY w)Nspecreturn_valuematchpressd   r   xdataydatar   onmove   release   r   )r   r   )      Y@r)   r.   r.   r)   )r)   r.   r.   r)   r)   )err_msg)r   Mockr   pytestwarnsr   r   widgetsRectangleSelectorr
   getr   geometryassert_called_once	call_argsr+   r,   )r   kwargswarning_msgonselecttoolepressereleases          r   test_rectangle_selectorrB      s>    yyd6H  ,,3;
G +A((X@@A T7#S;T83c!< T9Cs1=zz*d#+;;324 $	/
 !!)!3!3VX<<3<<3>>S   >>S   R<<+A As   D==Er   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#   r   r   r   T)interactiver   r   r   startend   rM      rO   )r   r3   r   	transData	transformr6   r7   r	   _selection_completedassert_not_calledr:   
reset_mockr;   r+   r,   )r   r   r   x1r   y1r>   x0y0r?   r@   rA   r<   s                r   test_rectangle_minspanrY   >   s|   
 yyd6HFBX ll44b"X> ll44b"X>?( $$Rt0:.6KD 4Bxb"X6(((( 4xX6$$$$! 4Bxb"X6((((!!)!3!3VX<<2<<2>>R>>RR<<r   c                     t        j                  | d       }|j                         sJ t        j                  t
        d      5  d|_        d d d        |j                         rJ y # 1 sw Y   xY w)Nc                       y r   r   argss    r   <lambda>z=test_deprecation_selector_visible_attribute.<locals>.<lambda>e       r   z was deprecated in Matplotlib 3.6r&   F)r6   r7   get_visibler4   r5   r   visibler   r?   s     r   +test_deprecation_selector_visible_attributerc   d   sn    $$R);<D	$4
6   !!!!	 s   A((A1zdrag_from_anywhere, new_center)<   K   rO   rM   c                     t        j                  | t        d|      }t        |dd       |j                  dk(  sJ t        |dd       |j                  |k(  sJ t        |d	d
       |j                  dk(  sJ y )NT)r>   rH   drag_from_anywherer   r   r)   x   rI   )2   A         #   ro         ru      )      )r6   r7   r   r	   center)r   rh   
new_centerr?   s       r   test_rectangle_dragr|   p   s~     $$R$D8JLD 4wJ7;;(""" 4xX6;;*$$$ 4zz:;;*$$$r   c           	      ~   t        j                  | t        dt        dd      t        d            }t	        |dd	
       |j
                  }|j                         t        j                  dd      k(  sJ |j                  dd       |j                         t        j                  dd      k(  sJ |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  |j                  dd       |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  y )NTb皙?	facecoloralpha      ?r   )r>   rH   r!   handle_propsri   rj   rI   r333333?black)markeredgecolorr   )r6   r7   r   dictr	   _selection_artistget_facecolormcolorsto_rgba	set_props_handles_artistsget_markeredgecolor	get_alphaset_handle_propsr   r?   artists      r   .test_rectangle_selector_set_props_handle_propsr      s2   $$R$D+/#S+I26S/CD 4wJ7##F!W__S%DDDDNNSN,!W__S%DDDD'' )))+w666!S((() 	#S9'' )))+s222!S((()r   c                    t        j                  | t        d      }t        |dd       |j                  dk(  sJ |j                  }|d   |d   }}|d	z   |d
z   }}t        |||f||f       |j                  |d   ||d   |fk(  sJ |j                  }|d   |d   |d   |d   z
  dz  z   }}|d	z   |}}t        |||f||f       |j                  |d   ||d   |d   fk(  sJ |j                  }|d   |d   |d   |d   z
  dz  z   }}|dz   |}}t        |||f||f       |j                  ||d   |d   |d   fk(  sJ |j                  }|d   |d   }}|dz   |dz   }}t        |||f||f       |j                  ||d   ||d   fk(  sJ y )NTr>   rH   ri   rj   rI   )        r1         $@      ^@r      r      r      rp   rM   ro   )r6   r7   r   r	   extents)r   r?   r   r+   r,   	xdata_new	ydata_news          r   test_rectangle_resizer      s   $$R$DID4wJ7<<4444 llG1:wqz5E 2:uqyyI4u~Iy3IJ<<GAJ	71:yIIII llG1:wqzWQZ'!*-D,II5E 2:uyI4u~Iy3IJ<<GAJ	71:wqzJJJJ llG1:wqzWQZ'!*-D,II5E 2:uyI4u~Iy3IJ<<Iwqz71:wqzJJJJ llG1:wqz5E 2:urzyI4u~Iy3IJ<<Iwqz9gajIIIIr   c                    t        j                  | t        d      }t        |dd       t	        j
                  t              5  |j                  d       d d d        t	        j
                  t              5  |j                  d       d d d        |j                  d       |j                  d	       |j                  d
       y # 1 sw Y   pxY w# 1 sw Y   IxY w)NTr   F   rm   }      rI   unsupported_stateclearmovesquarerz   )r6   r7   r   r	   r4   raises
ValueError	add_staterb   s     r   test_rectangle_add_stater      s    $$R$DID4xZ8	z	" ,*+, 
z	"  w NN6NN8NN8, ,   s   C7CCCr   c                    t        j                  | t        d      }t        |dd       |j                  dk(  sJ |r|j                  d       d }nd}|j                  }|d	   |d
   }}d\  }}||z   ||z   }
}	t        |||f|	|
f|       |j                  |d   |z
  |	|d   |z
  |
fk(  sJ |j                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |d   |z
  |	|d   |d
   fk(  sJ |j                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |d   |z
  |	|d   |d
   fk(  sJ |j                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |	|d	   |z
  |d   |d
   fk(  sJ |j                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |	|d	   |z
  |d   |d
   fk(  sJ |j                  }|d   |d   }}d\  }}||z   ||z   }
}	t        |||f|	|
f|       |j                  |	|d	   |z
  |
|d
   |z
  fk(  sJ y )NTr   r   r   rI   )     Q@     @_@     @P@g     @`@rz   controlr   r   r   r   rJ   rK   keyr   r   r   rp   rM   ro   r6   r7   r   r	   r   r   r   r   r?   use_keyr   r+   r,   xdiffydiffr   r   s              r   test_rectangle_resize_centerr      s   $$R$DID4xZ8<<5555x  llG1:wqz5ELE5 5=%%-yI4u~Iy3I <<GAJ.	#AJ.	; ; ; ; llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<GAJ.	#AJ
4 4 4 4 llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<GAJ.	#AJ
4 4 4 4 llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<IwqzE'9#AJ
4 4 4 4 llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<IwqzE'9#AJ
4 4 4 4 llG1:wqz5ELE5 5=%%-yI4u~Iy3I <<IwqzE'9%wqzE'9; ; ; ;r   c                    t        j                  | t        d      }t        |dd       |j                  dk(  sJ |r|j                  d       d }nd}|j                  }|d	   |d
   }}d\  }}||z   ||z   }
}	t        |||f|	|
f|       |j                  |d   |	|d   |d
   |z   fk(  sJ |j                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |d   |	|d   |d
   |z   fk(  sJ |j                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |d   |	|d   |d
   |z   fk(  sJ |j                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |	|d	   |d   |d
   |z
  fk(  sJ |j                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}
}	t        |||f|	|
f|       |j                  |	|d	   |d   |d
   |z
  fk(  sJ |j                  }|d   |d   }}d\  }}||z   ||z   }
}	t        |||f|	|
f|       |j                  |d   |z   |d	   |
|d
   fk(  sJ y )NTr   r   rk   s   rI   r   r   r   g     \@r   shiftr   r   r   r   r   r   r   r   rp   r   r   r   r   s              r   test_rectangle_resize_squarer     s   $$R$DID4xZ8<<5555x  llG1:wqz5ELE5 5=%%-yI4u~Iy3I <<GAJ	#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<GAJ	#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<GAJ	#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<Iwqz#AJ
U(:< < < < llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3I <<Iwqz#AJ
U(:< < < < llG1:wqz5ELE5 5=%%-yI4u~Iy3I <<GAJ.
%wqz3 3 3 3r   c                    t        j                  | t        d      }t        |dd       |j	                  d       |j	                  d       t        |j                  d       |j                  }|d	   |d
   }}d\  }}||z   ||z   }}t        |||f||f       t        |j                  |d   |z
  ||d   |z
  |d
   |z   f       |j                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}}t        |||f||f       t        |j                  |d   |z
  ||d   |z
  |d
   |z   f       |j                  }|d	   |d   |d
   |d   z
  dz  z   }}d}||z   |}}t        |||f||f       t        |j                  |d   |z
  ||d   |z
  |d
   |z   f       |j                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}}t        |||f||f       t        |j                  ||d	   |z
  |d   |z   |d
   |z
  f       |j                  }|d   |d   |d
   |d   z
  dz  z   }}d}||z   |}}t        |||f||f       t        |j                  ||d	   |z
  |d   |z   |d
   |z
  f       |j                  }|d   |d   }}d\  }}||z   ||z   }}t        |||f||f       t        |j                  |d   |z   |d	   |z
  ||d
   |z
  f       y )NTr   r   r   rI   r   rz   r   r   r   r   r   r   r   r   r   r   r   )r6   r7   r   r	   r   r   r   )	r   r?   r   r+   r,   r   r   r   r   s	            r   #test_rectangle_resize_square_centerr   c  s   $$R$DID4xZ8NN8NN8DLL"<= llG1:wqz5ELE5 5=%%-yI4u~Iy3IJDLL71:#5y#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJDLL71:#5y#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJDLL71:#5y#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJDLL9gaj5.@#*1:#5wqzE7I#K L llG1:wqzWQZ'!*-D,II5EE 5=%yI4u~Iy3IJDLL9gaj5.@#*1:#5wqzE7I#K L llG1:wqz5ELE5 5=%%-yI4u~Iy3IJDLL71:#5wqzE7I#,gaj5.@#B Cr   selector_classc                 \    || t         d      }t        |dd       |j                  dk(  sJ t        |j                        dk(  sJ t        |dd	
       |j                  t        dg      k(  sJ t        |j                        dk(  sJ t        |dd       t        |dd	
       t        |j                        dk(  sJ |j                  dk(  sJ t        |j                  dd       d|_        |j                  dk(  sJ t        |j                  t        j                  g dg dg      d       t        |dd       t        |j                  dd       |t        j                  k(  r4t        j                  t               5  d|j"                  _        d d d        y y # 1 sw Y   y xY w)NTr   r)   r)   r      rI   r)   r   r)   r   r   on_key_pressr   r   rotater   )rk      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
   setr   rotationcornersnparrayr6   r7   r4   r   r   r   rotation_point)r   r   r?   s      r   test_rectangle_rotater     s    "t>D4zz:<<////t{{q    T>s+;;#xj/)))t{{q   4zz:T>s+t{{q   <<////DMM5t4DM==BDLLHH==? @FJL
 4zz:DLL"<4H222]]:& 	D4CD""1	D 	D 3	D 	Ds   F""F+c                 h   t        j                  | t        d      }t        |dd       |j                  dk(  sJ t        |j                        dk(  sJ dD ]X  }|j                  |       t        |j                        d	k(  sJ |j                  |       t        |j                        dk(  rXJ  y )
NTr   r   r   rI   r   r   )r   r   rz   r   )	r6   r7   r   r	   r   r   r   r   remove_state)r   r?   states      r   test_rectangle_add_remove_setr     s    $$R$DID4zz:<<////t{{q   / %u4;;1$$$% 4;;1$$$	%r   use_data_coordinatesc                    | j                  d       t        j                  | t        d|      }t	        |dd       |j
                  dk(  sJ |j                  d       |j                  d	       |r|j
                  }|d
   |d   |d
   |d   z
  }}}d|d   |d   |d   z
  dz  z   }}||z   |}
}	|dz  |z   }t	        |||f|	|
f       t        |j
                  |d   |z
  |	||z
  ||z   g       y |j
                  }|d
   |d   }}d}||z   |}
}	|d
z  |j                  z  }t	        |||f|	|
f       t        |j
                  |d   |z
  |	ddg       y )N皙?T)r>   rH   r   r   r   rI   r   r   rz   r   r   r   r   r   g      G@g     `@)	
set_aspectr6   r7   r   r	   r   r   r   _aspect_ratio_correction)r   r   r?   r   r+   r,   widthr   ycenterr   r   ychanges               r   *test_rectangle_resize_square_center_aspectr     s   MM#$$R$D:NPD 4xZ8<<5555NN8NN8,,%aj'!*gaj71:6MeugajGAJ,Cq+HHw$u}e9	!)e#tE5>	97MNwqzE'99'.'8'G:K'M 	N ,,qz71:u$u}e9	!)d;;;tE5>	97MNwqzE'99',f'6 	7r   c                 :   t        j                  | t        dd      }d|_        t	        |dd       |j                  dk(  sJ t	        |d	dd
       |j                  dk(  sJ t	        |ddd       |j                  D cg c]  }t        |       }}|g dk(  sJ t	        |d	dd       |j                  D cg c]  }t        |       }}|g dk(  sJ |j                  j                  dk(  sJ t        |j                  dddf   ddg       yc c}w c c}w )z'For ellipse, test out the key modifiersr   T)r>   
grab_rangerH   r)      r)   r   r   r   )r   r   rI   )rk      rk   r   r   r   r   )re   r   re   r   rG   )rr   rO   r   )r   rr   r   rr   r   z
ctrl+shift)r   r   r   r   )r   I   Nr   r   r)   )	r6   EllipseSelectorr   r   r	   intr9   shaper   )r   r?   er   s       r   test_ellipser     s   ""2.0dDD'DL 4zz:<<//// 4zzyI<<---- 4xX7C#||,!s1v,G,&&&& 4zz|L#||,!s1v,G,((((==')))DMM!Q$'#s4 -
 -s   D;Dc           	         t        j                  | t        ddddd      }d|_        t	        |j
                  d       |j                  dk(  sJ t	        |j                  d	       |j                  dk(  sJ t        |d
d       |j                  dk(  sJ t        |dd       |j                  dk(  sJ t        |dd
       |j                  dk(  sJ t        j                  |j                  j                  d   j                         d      sJ t        j                  |j                  j                  d   j                         d      sJ y )Nr   Tr   r~   )markerfacecolorr   )r>   r   rH   r   r   ))r)   r   r   r)   )r)   r)   r   r   ))r)   r   r   r   )r   r)   r   r   r   )rk   rk   rI   )rk   r   rk   r   )   r   )l      r   r   rG   )r   r)   r   r)   r   )r6   r7   r   r   r   r   edge_centersr	   r   
same_color_corner_handlesartistsget_markerfacecolorr   rb   s     r   test_rectangle_handlesr    sT   $$R$0215FIFI3KLD
 (DLDLL"NO<<////D%%HJ<<//// 4zz:<<//// 4zz:<<//// 4xZ8<<---- $$Q';;=sD D D$$Q';;=sD D Dr   rH   c                 $   t        j                  t        d       }t        j                  | ||      }t        |dd       |j                          |j                  dk(  sJ |j                          t        |dd       |j                          y )Nr#   rH   r)   r   r   rk   rI   r1        b@g     [@r   r   r)   )	r   r3   r   r6   r7   r	   r:   r   rT   r   rH   r>   r?   s       r    test_rectangle_selector_onselectr  1  sw     yyd6H$$R{KD4zz:!<<77774yi8!r   ignore_event_outsidec                    t        j                  t        d       }t        j                  | ||      }t        |dd       |j                          |j                  dk(  sJ |j                          t        |dd       |r"|j                          |j                  dk(  sJ y |j                          |j                  d	k(  sJ y )
Nr#   )r  r	  r
  rI   r  r   r   r   r   )r        d@r  r  )
r   r3   r   r6   r7   r	   r:   r   rT   rS   )r   r  r>   r?   s       r   &test_rectangle_selector_ignore_outsider  B  s    yyd6H$$R:NPD4zz:!<<77774zz:""$||;;;; 	##%||;;;;r   z$orientation, onmove_callback, kwargs
horizontal)minspanr   vertical)r   r  c                 \   t        j                  t        d       }t        j                  t        d       }|r||d<   t        j                  | ||fi |}t        |dddd       t        |dddd       t        |d	d
d
d       |j                  dd       |r|j                  dd       y y )Nr#   onmove_callbackr(   r)   r   r*   r-   r.   r/   r0   )r   r3   r   r6   SpanSelectorr
   assert_called_once_with)r   orientationr  r<   r>   r-   r?   s          r   test_span_selectorr  Y  s     yyd6HYYDt4F$* !HkDVDDT7#S;T83c!<T9Cs1=$$S#.&&sC0 r   c                 &   t        j                  t        d       }t        j                  | |d|      }t        |dd       |j                          |j                  dk(  sJ |j                          t        |dd       |j                          y )	Nr#   r  r  r   )r   r)   rI   )r)   r   r  )	r   r3   r   r6   r  r	   r:   r   rT   r  s       r   test_span_selector_onselectr   p  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#   r  )r  r  r   r   rI   )r)   r   r  r  )r   r   )
r   r3   r   r6   r  r	   r:   r   rT   rS   )r   r  r>   r-   r?   s        r   !test_span_selector_ignore_outsider"    s    yyd6HYYDt4FHl065IKD 4zz:!
<<:%%%
4zz:""$  "||z))) 	##%!!#||z)))r   rh   c                     t        j                  | t        dd|      }t        |dd       |j                  dk(  sJ t        |dd	       |r|j                  d
k(  sJ |j                  dk(  sJ t        |dd       |j                  dk(  sJ y )Nr  T)r>   	directionrH   rh   rG   rj   rI   r  rn   rq   )rM   r   )ro   rr   rs   rv   )r6   r  r   r	   r   )r   rh   r?   s      r   test_span_selector_dragr%    s     T\,03EGD 4xZ8<<9$$$ 4xX6||y(((||x''' 4zz:<<:%%%r   c                    t        j                  | t        dd      }|j                  dk(  sJ |j                  j                  dk(  sJ t        j                  t              5  t        j                  | t        d      }d d d        d|_        |j                  dk(  sJ |j                  j                  dk(  sJ t        j                  t              5  d|_        d d d        y # 1 sw Y   fxY w# 1 sw Y   y xY w)Nr  T)r>   r$  rH   invalid_direction)r>   r$  r  invalid_string)r6   r  r   r$  _edge_handlesr4   r   r   rb   s     r   test_span_selector_directionr*    s    T\,02D>>\)))''<777	z	" C##B.ACC  DN>>Z''''':555	z	" *)* *C C* *s   #C%C1%C.1C:c           
         t        j                  | t        ddt        dd      t        d            }t	        |d	d
       |j
                  }|j                         t        j                  dd      k(  sJ |j                  dd       |j                         t        j                  dd      k(  sJ |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  |j                  dd       |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  y )Nr  Tr~   r   r   r   r   )r>   r$  rH   r!   r   ri   rj   rI   r   r   colorr   )r6   r  r   r   r	   r   r   r   r   r   r   	get_colorr   r   r   s      r   )test_span_selector_set_props_handle_propsr/    s4   T\,0&*S&D-1_>D
 4wJ7##F!W__S%DDDDNNSN,!W__S%DDDD'' )!S(((!S((() 	3/'' )!S(((!S((()r   selectorspan	rectanglec                    t        | t        d      }|dk(  rt        j                  }d|d<   nt        j                  } |di |}t        |dd       t        |d	d	       |j                  rJ d|d
<    |di |}|j                  sJ t        |dd       t        |d	d	       |j                  sJ t        |dd       |j                  rJ y )NT)r   r>   rH   r1  r  r$  rG   rj   rI   )r   r   r  r   escaper   r   )	r   r   r6   r  r7   r	   rR   r  r
   )r   r0  r<   Selectorr?   s        r   test_selector_clearr6    s    R$D9F6''*{,,fD4xZ8 4zz:((((%)F!"fD$$$$4xZ8 4zz:$$$$T>x0(((((r   c                    |dk(  rt        j                  | t        ddd      }nt        j                  | t        d      }t	        |dd       |j
                  sJ |j                         sJ |dk(  r|j                  d	k(  sJ |j                          |j
                  rJ |j                         rJ t	        |dd
       |j
                  sJ |j                         sJ |dk(  r|j                  dk(  sJ y y )Nr1  r  T)r>   r$  rH   r  r   rG   rj   rI   r  )rl   rk   )r   rl   )	r6   r  r   r7   r	   rR   r`   r   r   )r   r0  r?   s      r   test_selector_clear_methodr8    s    6##B049=? ((dM4xZ8$$$$6||y(((JJL((((!!! 4xY7$$$$6||x''' r   c                    t        j                  | t        dd      }t        j                  t
              5  |j                  d       d d d        t        j                  t
              5  |j                  d       d d d        t        j                  t
              5  |j                  d       d d d        |j                  d       y # 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   3xY w)Nr  Tr  r   rz   r   r   )r6   r  r   r4   r   r   r   rb   s     r   test_span_selector_add_stater:    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)rM   rO   rl   r  F)r   T)r6   ToolLineHandlesr  get_animatedr`   set_visibleset_animated	positions)r   r@  tool_line_handler   s       r   test_tool_line_handlerB  $  s    I..r9l7<> #** (&&(((%%'''(   &!!$'"** $""$$$!!###$ %%222r   r$  )r  r  c                    t        j                  dd      \  }}|j                  ddgddg       |j                  j                  j                          |j                         }|j                         }t        j                  |t        | d      }|j                         |k(  sJ |j                         |k(  sJ | dk(  r|n|}|j                  j                  t        |      k(  sJ dd	g}d
dg}|}	t        |||       |j                         |k(  sJ |j                         |k(  sJ | dk(  rdnd}
||
   |	|
   g}|j                  j                  |k(  sJ y )Nr   r   rM   rO   Tr  r  rD   g      '@rE      rI   r   )pltsubplotsplotfigurecanvasdraw
get_xbound
get_yboundr6   r  printr)  r@  listr	   )r$  figr   x_boundy_boundr?   bound
press_data	move_datarelease_dataindexhandle_positionss               r   test_span_selector_boundrX  7  sK   ll1a GCGGRHr2hIImmoGmmoGE9$GD==?g%%%==?g%%% L0GgE''4;666JRIL4zy9==?g%%%==?g%%%l*AE"5)<+>?''+;;;;r   QtAgg)skip_on_importerrorc            	      B  	
 t        j                  ddt         j                  z  d      
t        j                  
      	t	        j
                         \  } }|j                  
	d      \  }|j                  g d      \  t	        j                  d       |j                  |       | j                  j                  | j                         	
fd}t        j                  ||d|ddd	      }d
dg}ddg}t        |d|d   |d
   d
       t        |d|d   |d
   d
       |j                         |fk(  sJ |j                   du sJ j                   sJ j#                         dk(  sJ |j%                          j                   du sJ ddg}ddg}ddg}t        |d|d   |d
   d
       t        |d|d   |d
   d
       |j                   du sJ j                   sJ j#                         dk(  sJ t        |d|d   |d
   d
       j                   du sJ y)zACheck that the animated artists changed in callbacks are updated.r   r   r)   T)animated皙?c                     t        j                  | |f      \  }}|| j                         }j                  |       y r   )r   searchsortedmeanset_data)vminvmaxindminindmaxvln2valuesxs        r   r`  z:test_span_selector_animated_artists_callback.<locals>.meand  s>    T4L96&!&&(Qr   r  )r$  r  rH   rh   r   r   r(   r*   r-   FgSG-?   r   gȄC(r/   N)r   linspacepisinrE  rF  rG  pausedraw_artistrI  blitbboxr6   r  r
   _get_animated_artistsstale	get_ydataupdate)rO  r   lnr`  r1  rS  rT  rU  rg  rh  ri  s           @@@r   ,test_span_selector_animated_artists_callbackrw  S  s    	Aq255y#&AVVAYFllnGC
''!Vd'
+CB7727%DC
 IIcNNN2JJOOCHH DL04,037(,	.D QJAIT7*Q-z!}QOT89Q<y|AN%%'B944488u999==?0000KKM99 QJAIq6LT7*Q-z!}QOT89Q<y|AN88u999==?1111T9LO?1.99r   c                    d }t        j                  | |d      }|j                  }t        j                  ddd      }t        j
                  g d      }t        j
                  g d      } |||      }t        ||       y )	Nc                       y r   r   r\   s    r   r>   z4test_snapping_values_span_selector.<locals>.onselect  s    r   r  )r$  r   r   rE   )
gr]  r   r   333333?ffffff??g
ףp=
@      @      @)
r   r   r   r   r   r         ?r}  r}  r}  )r6   r  _snapr   rk  r   r   )r   r>   r?   snap_functionsnap_valuesrh  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)rb  rc  r   s     r   r>   z)test_span_selector_snap.<locals>.onselect  s    r   rl   rj  r  )r$  r  )   rr   )   $   )r   aranger6   r  r   r  )r   r>   r  r?   s   `   r   test_span_selector_snapr    s      ))B-!#KH,79DDL<<8###D###DL<<8###r   r<   red)r-  )r   r!   c                     t        j                  t        d       }t        j                  | |fi |}t        |dddd       t        |dddd       t        |dd	d	d       |j                  g d
       y )Nr#   r(   r)   r   r*   r-   r   r/   r   )r   r   r  )r   r3   r   r6   LassoSelectorr
   r  )r   r<   r>   r?   s       r   test_lasso_selectorr    sj     yyd6H  X88DT7#S;T83c!<T9Cs1=$$%IJr   c                     t        j                  | dd      }|j                         g dk(  sJ |j                  d       |j                         g dk(  sJ |j	                  d       }|j                  |       y )N)ar~   c)TFTr   )FFTc                       y r   r   r   r   r   r^   z#test_CheckButtons.<locals>.<lambda>  r_   r   )r6   CheckButtons
get_status
set_active
on_clicked
disconnect)r   checkcids      r   test_CheckButtonsr    ss      _6IJE!4444	Q!5555


<
(C	Sr   toolbar)r   toolbar2toolmanagerc                    t         j                  t        j                  d|       t	        j
                  t        d       }t	        j
                  t        d       }t        j                  | d      }|j                  |       |j                  |       |j                  dk(  sJ t        |d       |j                  d       |j                  dk(  sJ |j                  dk(  sJ |j                  |j                         |j!                          |j                  dk(  sJ t        |d       t        |dd	
       t        |dd
       |j                  dk(  sJ y )Nr  r#    _clickzx**2r   r   	_keypress+r   5r   )r   __setitem__rE  rcParamsr   r3   r   r6   TextBox	on_submiton_text_changetextr
   set_val
call_countbegin_typingstop_typing)r   r  submit_eventtext_change_eventr?   s        r   test_TextBoxr    s    	S\\9g699$T:L		t$???2r"DNN< )*99??T8LL99''1,,,dii ""a'''T8T;C(T;C(''1,,,r   zcheck_radio_buttons.pngmpl20)styleremove_textc                      t               } dt        j                  d<   t        j                  d       t        j                  g d      }t        j                  g d      }t        j                  |d       t        j                  |dd	       y )
N   ztext.kerning_factorr   )left)皙?r{  333333?r  )r  r   r  r  )zRadio 1zRadio 2zRadio 3)zCheck 1zCheck 2zCheck 3)FTT)r   rE  r  subplots_adjustaxesr6   RadioButtonsr  )r   rax1rax2s      r   test_check_radio_buttons_imager    sk    	B*+CLL&'S!88+,D88+,D@A@,.r   z check_bunch_of_radio_buttons.pngc                  ^    t        j                  g d      } t        j                  | d       y )N)r  r]  r  r{  )B1B2B3B4B5B6B7B8B9B10B11B12B13B14B15)rE  r  r6   r  )raxs    r   !test_check_bunch_of_radio_buttonsr    s(     (()
*C 4 5r   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   r  r  r  	slidermax)rE  rF  r4   r   r   r6   Slider)rO  r   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   r  r}  r   r  r  r  valinitr  )r   r  r  r  r  r  r   )r   r  r  r  r  r  rE  rF  r6   r  val)rO  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   r  g      $r  g      9@)rE  rF  r6   r  r  r  r  rO  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   r  g&@r   )r   r  r  r  r  valsteprE   )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         r  )r   r  r  r  r  r  r   )r         ?竪?r   r  )r  r   r   r  )rE  rF  r6   r  r  r  polyget_extentstransformed	transAxesinvertedr   bounds)rO  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        ?)rE  rF  r6   r  r  resetr  r  s      r   test_slider_resetr  ?  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 )Nr  r   r   r   r   r   r   r   r   r  r   r  r]  (\?r   r  r  r  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 )Nr  r   )_handlesrt  	get_xdata)r  hr  s     r   rW  z+test_range_slider.<locals>.handle_positionsZ  sS    *$.4oo>AKKM!$>>.4oo>AKKM!$>> ?>s   A A")r   rz  )r   r  rz  r  )r   r]  )r]  r   )r   )r   r   )rE  rF  r6   RangeSliderr  r  r  r  r  r   
get_pointsflattenr  r  r  )r  idxrO  r   r  r  rW  s   `      r   test_range_sliderr	  G  s   j llnGC  RC[dF ++
!
!
#
/
/0E0E0G
HCCNN$,,.s35LM FJJ,? NN:FJJ
+$V,j9
++
!
!
#
/
/0E0E0G
HCCNN$,,.s35IJ
NN:FJJ
+$V,j9
NN8FJJ'$V,f5
LLNFJJ,$V,k:r   c           	      d   | dk(  rg d}ng d}t        j                         \  }}t        j                  |ddd| ddg      }|j                  j                         j                  |j                  j                               }t        |j                         j                         |   g d	       y )
Nr  r  r  r  r   r  r   r  )r   r  r   r  )rE  rF  r6   r  r  r  r  r  r  r   r  r  )r  r  rO  r   r  r  s         r   "test_range_slider_same_init_valuesr  t  s    j llnGC  bSkQF ++
!
!
#
/
/0E0E0G
HCCNN$,,.s35GHr   c                     t               }t        j                  t        d      }t	        j
                  ||fi |}| D ]  \  }}t        ||fi |  |j                  |k(  sJ |j                  |fi fk(  sJ y)a4  
    Helper function to test Polygon Selector.

    Parameters
    ----------
    event_sequence : list of tuples (etype, dict())
        A sequence of events to perform. The sequence is a list of tuples
        where the first element of the tuple is an etype (e.g., 'onmove',
        'press', etc.), and the second element of the tuple is a dictionary of
         the arguments for the event (e.g., xdata=5, key='shift', etc.).
    expected_result : list of vertices (xdata, ydata)
        The list of vertices that are expected to result from the event
        sequence.
    selections_count : int
        Wait for the tool to call its `onselect` function `selections_count`
        times, before comparing the result to the `expected_result`
    **kwargs
        Keyword arguments are passed to PolygonSelector.
    Nr#   )	r   r   r3   r   r6   PolygonSelectorr
   r  r;   )	event_sequenceexpected_resultselections_countr<   r   r>   r?   etype
event_argss	            r   check_polygon_selectorr    s    * 
Byyd6H""2x:6:D- ,
u+
+, "2222?"5r!::::r   c                 Z    dt        | |      fdt        | |      fdt        | |      fgS )Nr-   r+   r,   r(   r/   r   r  s     r   polygon_place_vertexr    s9    t%u56de455679 9r   c                 ^    dt        | |      fdt        | |d      fdt        | |d      fgS )Nr-   r  r(   r   r*   r/   r  r  s     r   polygon_remove_vertexr    s?    t%u56deA>?5a@AC Cr   draw_bounding_boxc                    t        j                  t        |       }g d}g t        dd      t        dd      t        dd      t        dd      } |||d       g d}g t        dd      t        dd      dt	        d	      fd
t	        dd      fdt	        dd      fd
t	        dd      fdt	        dd      fdt	        d	      ft        dd      t        dd      } |||d       g d}g t        dd      t        dd      dt	        d	      fd
t	        dd      fdt	        dd      fd
t	        dd      fdt	        dd      fdt	        d	      ft        dd      t        dd      } |||d       g d}g t        dd      t        dd      t        dd      t        dd      d
t	        dd      fdt	        dd      fd
t	        dd      fdt	        dd      f} |||d       g d}g t        dd      t        dd      t        dd      t        dd      dt	        d	      fd
t	        dd      fdt	        dd      fd
t	        dd      fdt	        dd      fdt	        d	      f} |||d       g d}dt	        d	      fd
t	        dd      fdt	        dd      fd
t	        dd      fdt	        dd      fdt	        d	      fdt	        d	      fd
t	        dd      fdt	        dd      fd
t	        dd      fdt	        dd      fdt	        d	      fgt        dd      t        dd      t        dd      t        dd      } |||d       g d}g t        dd      t        dd      dt	        d	      fdt	        d	      ft        dd      t        dd      t        dd      t        dd      } |||d       y )Nr  )rl   rl   r   rl   rl   r   rl   r   r   ))re   rl   r  r  r   r   r   r-   r  r(   re   r/   on_key_release))rl   re   )r   re   r  r   r)   r   r   ))re   re   )rt   re   )re   rt   r0   r4  )	functoolspartialr  r  r   )r  check_selectorr  r  s       r   test_polygon_selectorr$    so   &&2CEN 7O	b"	%	c2	& 
b#	& 
b"	%	N >?A6 7O	b"	%	c2	& 
),- 
4b+,	
 
$Rr*+ 
4b+, 
Dr,- 
4I./ 
b#	& 
b"	%N >?A6 7O	b"	%	c2	& 
'*+ 
4c-.	
 
$S,- 
4c-. 
Ds#./ 
4G,- 
b#	& 
b"	%N >?A6 7O		b"	%		c2	&	 
b#	&	 
b"	%		
 
4b+,	 
$Rr*+	 
4b+,	 
Dr,-	N >?A6 7O	b"	%	c2	& 
b#	& 
b"	%	
 
'*+ 
4c-. 
$S,- 
4c-. 
Ds#./ 
4G,-N >?A6 7O	),-	4c-.	$S,-	4c-.	Ds#./	4I./	'*+	4c-.	$S,-	4c-.	Ds#./	4G,- 
b"	% 
c2	& 
b#	&  
b"	%!N$ >?A6 7O		b"	%		c2	&	 
(+,	 
4H-.		
 
b"	%	 
c2	&	 
b#	&	 
b"	%	N >?A6r   c                    t        j                  | t        t        dd      t        d      |      }g t	        dd      t	        dd      t	        dd      t	        dd      }|D ]  \  }}t        ||fi |  |j                  }|j                         dk(  sJ |j                         dk(  sJ |j                  d	d
       |j                         d	k(  sJ |j                         d
k(  sJ |j                  D ],  }|j                         dk(  sJ |j                         dk(  r,J  |j                  d	d
       |j                  D ],  }|j                         d	k(  sJ |j                         d
k(  r,J  y )Nr~   r   r,  r   r   )r>   r!   r   r  rl   r   r   r   )r6   r  r   r   r  r
   r   r.  r   r   r   r   )r   r  r?   r  r  r  r   s          r   ,test_polygon_selector_set_props_handle_propsr&  %  s   ""2)-Cs)C0435FHD
	b"	%	c2	& 
b#	& 
b"	%	N  . ,
u+
+, ##F$$$$$$NNCN($$$$$$'' )!S(((!S((() 	3/'' )!S(((!S((()r   c                     | j                         }|j                         }t        j                  |t        ddi      }d|_        y )Nra   F)r>   r!   )r   r   r   r{  )rF  r6   r7   r   r   )fig_testfig_refax_test_r?   s        r   test_rect_visibilityr,  F  sC     !GA$$Wt,5u+=?D'DLr   r  )r   r   r   c                    g d}t        |d    t        |d    t        |d    t        |d    g}|j                  | t        dd             |j                  t        dd             t	        |g       }t        ||d|       y )Nr  r   r   r      r  )r  insertappendr  sumr  )r  r  vertsr  s       r   test_polygon_selector_remover3  R  s     -E*E!H5*E!H5*E!H5*E!H5	7N #3C=>/S9:,N>5!->@r   c                     g d}g t        |d    t        |d    t        |d    t        |d    t        |d    }t        ||dd  d|        y )Nr  r   r   r   r  )r  r  r  )r  r2  r  s      r   (test_polygon_selector_remove_first_pointr5  e  s    ,E	uQx	(	uQx	( 
uQx	( 
uQx	(	
 
a	)N >59a->@r   c                 8   g d}g t        |d    t        |d    t        |d    t        |d    t        |d    t        |d    t        |d    }t        j                  | t        |      }|D ]  \  }}t        ||fi |  |j                  |dd k(  sJ y )Nr  r   r   r   r>   r  )r  r  r6   r  r   r
   r2  )r   r  r2  r  r?   r  r  s          r   test_polygon_selector_redrawr8  s  s    ,E
	uQx	(
	uQx	(
 
uQx	(
 
uQx	(	
 
a	)
 
a	)
 
uQx	(
N ""25FHD- ,
u+
+, ::q###r   png)
extensionsc                 v   g d}| j                         }t        j                  |t        |      }||_        |j                  |k(  sJ |j                         }t        j                  |t        |      }g t        |d    t        |d    t        |d    t        |d    }|D ]  \  }	}
t        ||	fi |
  y )N))r]  g?)r   r|  )r   r   r7  r   r   r   )add_subplotr6   r  r   r2  r  r
   )r(  r)  r  r2  r*  	tool_testax_reftool_refr  r  r  s              r   "test_polygon_selector_verts_setterr@    s     1E""$G''$2CEIIO??e###  "F&&1BDH	uQx	(	uQx	( 
uQx	( 
uQx	(	N  . 0
5/J/0r   c                    g d}g t        |d    t        |d    t        |d    t        |d    t        |d    }t        j                  | t        d      }|D ]  \  }}t	        ||fi |  | j
                  }| j                  j                  }t        d|g|j                  d	      d j                          t        d
|g|j                  d       j                          t        d|g|j                  d      d j                          t        j                  j                  |j                  g d       t        d|g|j                  d      d j                          t        d
|g|j                  d       j                          t        d|g|j                  d      d j                          t        j                  j                  |j                  g d       t        j                  j                  |j                  j                   d       t        d|g|j                  d      d j                          t        d|g|j                  d      d j                          t        j                  j                  |j                  g d       t        j                  j                  |j                  j                   d       y )N))rM   r   )r   rM   )rM   (   )rB  rM   r   r   r   r   Tr7  button_press_event)rB  rB  motion_notify_eventrL   button_release_event))r   r   ri   )r   rM   )rM   r   rG   rN   )rf   rM   rO   rO   rB  rB  rO   )      4@      D@rI  rJ  rf   )rF  rG  rH  )rI  rJ  g      >@rJ  )r  r6   r  r   r
   rP   rH  rI  r   rQ   _processr   testingr   r2  _boxr   )r   r2  r  r?   r  r  trI  s           r   test_polygon_selector_boxrO    s   2E	uQx	(	uQx	( 
uQx	( 
uQx	(	
 
uQx	(N ""2MD- ,
u+
+,
 	AYYF fA'({{8'<A>?AAIv?()H(=??GxzC)*X)>C@ACCK8:JJ

:< fA'({{8'<A>?AAIv?()H(=??GxzC)*X)>C@ACCK8:JJ

<> JJ		35 fA'({{8'<A>?AAIC)*X)>C@ACCK8:JJ

24JJ		35r   horizOnvertOnc                    t        j                         j                  dd      \  }}t        j                         j                         }t        j                  d ||fd| |      }t        |j                        |rdndk(  sJ t        |j                        | rdndk(  sJ t        |dd	      }|j                  |       |j                  D ]  }|j                         d
k(  rJ  |j                  D ]  }|j                         dk(  rJ  t        |dd	      }|j                  |       |j                  D ]  }|j                         d
k(  rJ  |j                  D ]  }|j                         dk(  rJ  y )Nr   T)sharexF)r   rP  rQ  r   r   r  r  )r   r   )r  r  r  )rE  rH  rF  r6   MultiCursorr   vlineshlinesr   r-   r  rt  )rP  rQ  ax1ax3ax2multieventls           r   test_MultiCursorr]    sf    &&q&6JS#
**,


!C sCj%E
 u||f!444u||g1555
 s"C0E	LL \\ ){{}((()\\ +{{}
***+
 s#S1E	LL\\ ){{}((()\\ +{{}
***+r   )_
contextlibr   r!  unittestr   matplotlib._api.deprecationr   matplotlib.backend_basesr   matplotlib.colorscolorsr   matplotlib.widgetsr6   matplotlib.pyplotpyplotrE  matplotlib.testing.decoratorsr   r   matplotlib.testing.widgetsr	   r
   r   r   r   numpyr   numpy.testingr   r4   fixturer   markparametrizer   rB   rY   rc   r|   r   r   r   r   r   r   r7   r   r   r   r   r   r  r  r  r  r   r"  r%  r*  r/  r6  r8  r:  rB  rX  backendrw  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r$  r&  r,  r3  r5  r8  r@  rO  r]  r   r   r   <module>ro     s]   "   D / # $  O: :  )    .	VTN	65)02	$q!4(	6B402	2x8$?	$ $'	1 		6 '9:1b'At9q"g)FG1b'At9q"g)FG  H H ; F	" 9* (+-.%.%*)* JF tUm4F; 5F;R tUm4F3 5F3R<C~ )!33W5L5LMODODB
% /%?7 @7B58DB u6" 7"  /$?< @<, ?5$r489t1~&5$Tt_565$401	B 11" u6" 7" /$?* @*8 -e}=& >&2*$), fk%:;) <)8 fk%:;( <(23& &@A< B<6 W$75 85p$$" Fd/0a $ 
K
K $GH- I-> ,-W$O
. P
. 56T3535'%'5( z(BC); D);X z(BCI DI ;D9C ,udm<n7 =n7b ,udm<) =)@ ( ( 	*,udm<@ = +@" ,udm<
@ =
@ ,udm<$ =$. ,udm<(0 ) =0,45n UDM2E4=1 + 2 3 +r   