rL i ddlZddlZddlZddlmZddlmZddlmZ ddl m Z ddl m ZddlmZmZddlmZmZmZmZmZddlZddlmZddlZej:dZdZej@jCd e"e"d d e"d d de"e"d gdZ#ej@jCdddgej@jCddd gd dgd dggej@jCddd gd dgd dggdZ$ej@jCdd dgddggdZ%dZ&d Z'd!Z(ej@jCd"d dgd#Z)ej@jCd"d dgd$Z*d%Z+ej@jCd&e jXe jZgd'Z.d(Z/ej@jCd)dd gd*Z0d+Z1d,Z2ej@jCd-d dgd.Z3ej@jCd/d dgd0Z4ej@jCd1d2de"d d 3fd4d e"d 5fd2de"e"d fd2de"d 6fgd7Z5ej@jCd-d dgd8Z6ej@jCd/d dgd9Z7ej@jCd:d dgd;Z8d<Z9d=Z:ej@jCd>d?d@gdAZ;ej@jCd>d?d@gdBZej@jCdEdFdGZ?ej@jdHd IdJZAdKZBdLZCdMZDej@jCd e"e"de"dNOPe"d d gdQZEdRZFdSZGdTZHej@jCdUgdVdWZIdXZJedYgdZd [d\ZKed]g^d_ZLed]g^d`ZMdaZNed]g^dbZOed]g^dcZPed]g^ddZQdeZRdfZSdgZTdhZUdiZVdjZWej@jCdkd2d4gdlZXej@jCdkd2d4gdmZYdnZZdoZ[dpZ\ej@jCdqdd gdrZ]ej@jCdqdd gdsZ^ed]g^dtZ_ej@jCdugdvej@jCdqdd gdwZ`ej@jCdqdd gdxZaej@jCdqdd gdyZbej@jCdqdd ged]g^dzZcd{Zdd|Zeej@jCd}dd gej@jCd~dd gdZfy)N)mock) MouseEvent)check_figures_equalimage_comparison)click_and_dragdo_eventget_ax mock_eventnoop)assert_allclosectSN)r c/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_widgets.pyaxrs 8Orc `ddlm}m}ddlm}|dvrt j dtjdddddg \}}||d d d g}||d d d gddgddgdddgddgd}||dd d gddg}||dd d gddgddgddgdddgddgddddgi}|d jd|d jd |jjtj5} |j| d!"dddy#1swYyxYw)#Nr) CheckButtons RadioButtons)"_get_running_interactive_framework)headlessNz-Callback exceptions are not raised otherwise.)r)nrowsncolsfigsize width_ratiosrrApplesOrangesrrredorangecolorfontsize mistyrose peachpuff edgecolor facecolor label_props radio_props)rrT)actives)rrr(darkred darkorange)r2r0 frame_props check_propsDefaultStylizedpdf)format)matplotlib.widgetsrrmatplotlib.cbookrpytestxfailpltsubplots set_titlecanvasdrawioBytesIOsavefig) rrrfigr default_rb styled_rb default_cb styled_cb result_afters rtest_save_blitted_widget_as_pdfrMsq=C)+3EE DEllq&1vGCbh9(=>J 48Y'$h/"$b+#(("3#. "<> Ibh9(='+Tl4J 48Y't $h/"$b+#(("3#. "<>y,78ItHy!tHz"JJOO 0 L /000s D$$D-kwargsTr)useblitbutton pixels)minspanxminspany spancoords)fillpropsctjtd}tj|fd|i|}t |ddddt |ddddt |d d d d|j d dd vr(t|jgd gdg|j|j|j\\}}}|jdk(sJ|jdk(sJ|jdk(sJ|jdk(sJ|ik(sJy)Nspec return_valueonselectpressdrxdataydatarPonmovereleasedrawtype)linenone)Y@r_rdrdr_)r_rdrdr_r_)err_msg) rMockr widgetsRectangleSelectorrgetr geometryassert_called_once call_argsrarb)rrNr]toolepressereleases rtest_rectangle_selectorrv@s yyd6H  $ $R E( Ef ED T7#S; T83c!< T9Cs1= zz*d#+;; 324 $  /  !!)!3!3VX <<3   <<3   >>S  >>S  R<|jj ||f|jj ||fz \}}t j ||d|||} t| ||f||f| jrJ|jt| dd| jsJ|j|jt| ||f||f| jrJ|j|j\\} } } | j|k(sJ| j|k(sJ| j|k(sJ| j|k(sJ| ik(sJy) NrZrQrQrRT)r] interactiverUrSrTstartendr&r&r)rrlr transData transformrmrnr_selection_completedassert_not_calledrq reset_mockrrrarb) rrUrSx1rTy1r]x0y0rsrtrurNs rtest_rectangle_minspanr_s| yyd6H FBX ll44b"X> ll44b"X>?(  $ $R(0:.6 KD4Bxb"X6((( (  4xX6  $ $$ $ ! 4Bxb"X6((( ( !!)!3!3VX <<2   <<2   >>R   >>R   R<s+ ;;8* $$ $ t{{ q  4zz: T>s+ t{{ q  <</ // /DMM5t4DM ==B  DLLHH==?@FJL 4zz:DLL"<4H222 ]]: & D4CD " " 1 D D3 D Ds 8FFc^tj|d}t|dd|jdk(sJt |j dk(sJdD]X}|j |t |j d k(sJ|j|t |j dk(rXJy) NTrrrr}rr)rrrr)rmrnrrrrr remove_state)rrsstates rtest_rectangle_add_remove_setr s  $ $RT :D4zz: <</ // / t{{ q  /% u4;;1$$$ % 4;;1$$$ %ruse_data_coordinatesc|jdtj|d|}t|dd|jdk(sJ|j d|j d |r|j}|d |d |d |d z }}}d |d|d |dz dz z}}||z|} } |dz |z} t|||f| | ft |j|d |z | || z || zgy|j}|d |d }}d }||z|} } |d z|jz } t|||f| | ft |j|d |z | ddgy)N皙?T)r|r rrr}rrrrrrrQrg G@g`@) set_aspectrmrnrrrr _aspect_ratio_correction) rr rsrrarbwidthrycenterrrychanges r*test_rectangle_resize_square_center_aspectrsMM#  $ $RT:N PD4xZ8 <<5 55 5NN8NN8,,%aj'!*gaj71:6MeugajGAJ,Cq+HHw$u}e9 !)e#tE5> 97MN wqzE'99'.'8'G:K'M N,,qz71:u$u}e9 !)d;;;tE5> 97MN wqzE'99',f'6 7rc0tj|dd}d|_t|dd|jdk(sJt|d dd |jd k(sJt|d dd |jDcgc] }t |}}|gdk(sJt|d dd |jDcgc] }t |}}|gdk(sJ|j j dk(sJt|j dddfddgycc}wcc}w)z'For ellipse, test out the key modifiersrQT) grab_ranger|r_r_rrr)rrr})rrrrrr)rrrrr{)rrr)rQrrQrrz ctrl+shift)rrrr)rINrrr_)rmEllipseSelectorrrintrpshaper )rrsers r test_ellipser! s  " "2"$ GD'DL4zz: <</ // /4zzyI <<- -- -4xX7C#||,!s1v,G, & && &4zz|L#||,!s1v,G, ( (( ( ==  ' )) )DMM!Q$'#s4- -s <D6Dctj|ddddd}d|_t|jd|jdk(sJt|j d |jdk(sJt |d d |jd k(sJt |dd |jdk(sJt |dd |jdk(sJtj|jjdjdsJtj|jjdjdsJy)NrQTrr)markerfacecolorr)rr|rr))r_rrr_)r_r_rr))r_rrr)rr_rrr)rrr})rrrr)r$)lr%r&r{)rQr_rQr_r) rmrnrr r edge_centersrr same_color_corner_handlesartistsget_markerfacecolorrrs rtest_rectangle_handlesr,$sP  $ $RBDFIFI3K LD(DLDLL"NO <</ // /D%%HJ <</ // /4zz: <</ // /4zz: <</ // /4xZ8 <<- -- -    $$Q';;=s DD D    $$Q';;=s DD Drr|c$tjtd}tj|||}t |dd|j |jdk(sJ|jt |dd|j y)NrZ)r]r|r_rrrr}rjb@g[@rrQr_) rrlr rmrnrrqrrrr|r]rss r test_rectangle_selector_onselectr4Cswyyd6H  $ $R( TD4zz: ! <<7 77 7 4yi8 !rignore_event_outsidectjtd}tj|||}t |dd|j |jdk(sJ|jt |dd|r"|j|jdk(sJy|j |jd k(sJy) NrZ)r]r5r.r/r}r0rrrr)r1d@r1r9) rrlr rmrnrrqrrr)rr5r]rss r&test_rectangle_selector_ignore_outsider:Tsyyd6H  $ $R(:N PD4zz: ! <<7 77 7 4zz:""$||;;;; ##%||;;;;rz$orientation, onmove_callback, kwargs horizontal)minspanrOvertical)rPrctjtd}tjtd}|r||d<|jd|j }t j |||fi|}t|ddddt|dd d dt|d d d d|jdd |r|jdd yy) NrZonmove_callbackautor^r_rr`rcrdrerf) rrlr rtwinxrm SpanSelectorrassert_called_once_with)r orientationr?rNr]rctaxrss rtest_span_selectorrFksyyd6H YYDt 4F$* ! MM& ((*C   Hk DV DD T7#S; T83c!< T9Cs1= $$S#.&&sC0rc&tjtd}tj||d|}t |dd|j |jdk(sJ|jt |dd|j y) NrZr;rr)rr_r})r_rr2) rrlr rmrBrrqrrr3s rtest_span_selector_onselectrHs{yyd6H   Hl,7 9D4zz: ! <<: %% % 4yi8 !rcHtjtd}tjtd}tj||d||}t |dd|j |j |jdk(sJ|j|jt |dd |r2|j|j|jdk(sJy|j |j |jd k(sJy) NrZr;)r?r5rrr})r_rr7r8)rr) rrlr rmrBrrqrrr)rr5r]rcrss r!test_span_selector_ignore_outsiderJsyyd6H YYDt 4F   Hl065I KD4zz: !  <<: %% %  4zz:""$  "||z))) ##%!!#||z)))rrc tj|tdd|}t|dd|jdk(sJt|dd |r|jd k(sJ|jd k(sJt|d d |jd k(sJy)Nr;T)r] directionr|rr{rr}r2rr)r&r)rrrr)rmrBr rr)rrrss rtest_span_selector_dragrMs   T\,03E GD4xZ8 <<9 $$ $4xX6||y(((||x'''4zz: <<: %% %rctj|tdd}|jdk(sJ|jjdk(sJt j t5tj|td}dddd|_|jdk(sJ|jjdk(sJt j t5d|_dddy#1swYfxYw#1swYyxYw)Nr;T)r]rLr|invalid_direction)r]rLr=invalid_string)rmrBr rL _edge_handlesr=rrrs rtest_span_selector_directionrRs   T\,0 2D >>\ )) )    ' '< 77 7 z "C##B.ACC DN >>Z '' '    ' ': 55 5 z "*)**CC**s#C%C1%C.1C:c tj|tddtddtd}t |d d |j }|j tjddk(sJ|jd d |j tjd d k(sJ|jD],}|jdk(sJ|jdk(r,J|jd d |jD],}|jd k(sJ|jd k(r,Jy)Nr;Trrrrr)r]rLr|rXrrrr}rrr(r)rmrBr rrrrrrrr get_colorrrrs r)test_span_selector_set_props_handle_propsrVs4   T\,0&*S&D-1_ >D 4wJ7  # #F    !W__S%D DD DNNSN,    !W__S%D DD D'')!S(((!S((() 3/'')!S(((!S((()rselectorspan rectanglect|d}|dk(rtj}d|d<t|d<ntj}|di|}t |dd t |d d |j rJd|d <|di|}|jsJt |dd t |d d |j sJt|d d |j rJy)NT)rr|rXr;rLr]r{rr})rrr5rescaperr) rrmrBr rnrrr5r)rrWrNSelectorrss rtest_selector_clearr]s RT *F6''*{!z,,  f D4xZ84zz:((( (%)F !"  f D  $ $$ $4xZ84zz:  $ $$ $ T>x0((( ((rc|dk(rtj|tddd}ntj|d}t |dd|j sJ|j sJ|dk(r|jd k(sJ|j|j rJ|j rJt |dd |j sJ|j sJ|dk(r|jd k(sJyy) NrXr;T)r]rLr|r5rr{rr}r2)rr)rQr) rmrBr rnrr get_visiblerr)rrWrss rtest_selector_clear_methodr`s6##B049=?((>4xZ8  $ $$ $     6||y(((JJL((( (!! !4xY7  $ $$ $     6||x'''rctj|tdd}tjt 5|j ddddtjt 5|j ddddtjt 5|j dddd|j dy#1swYxYw#1swYZxYw#1swY3xYw)Nr;Trrrrr)rmrBr r=rrrrs rtest_span_selector_add_staterb0s   D,,0 2D z ", *+, z "! x ! z "! x ! NN6,,!!!!s#C *CC! CC!C*cxgd}tj||dd}|jD]&}|jrJ|j s&J|j d|j d|jD]&}|jsJ|j r&J|j|k(sJy)N)r&rrr;F)rOT)rmToolLineHandlesr* get_animatedr_ set_visible set_animated positions)rrhtool_line_handlers rtest_tool_line_handlerj>sI..r9l7<>#**(&&(((%%'''(  &!!$'"**$""$$$!!###$  % % 22 2rrL)r;r=ctjdd\}}|jddgddg|jj |j }|j }tj|t|d}|j |k(sJ|j |k(sJ|dk(r|n|}|jjt|k(sJd}d }|} t||| |j |k(sJ|j |k(sJ|dk(rd nd} || | | g} |jj| k(sJy) NrrQr&rTrr;)rxg'@)ry r}r)r?r@plotrBrC get_xbound get_yboundrmrBprintrQrhlistr) rLrGrx_boundy_boundrsbound press_data move_data release_dataindexhandle_positionss rtest_span_selector_boundrzQs;ll1a GCGGRHr2hJJOOmmoGmmoG   E9$ GD ==?g %% % ==?g %% % L0GgE    ' '4; 66 6JIL4zy9 ==?g %% % ==?g %% %l*AE"5)<+>?    ' '+; ;; ;rQtAgg)skip_on_importerrorc V tjddtjzd tj  t j \}}|j d\}|j gd\t jd|j||jj|j fd}tj||d|ddd }d dg}ddg}t|d |d|d d t|d |d|d d |j|fk(sJ|j dusJj sJt#j%d|j'j dusJddg}ddg}ddg}t|d |d|d d t|d |d|d d |j dusJj sJt#j%dt|d|d|d d j dusJy)zACheck that the animated artists changed in callbacks are updated.rrr_T)animated皙?ctj||f\}}||j}jtj|yr)r searchsortedmeanset_data full_like)vminvmaxindminindmaxvln2valuesxs rrz:test_span_selector_animated_artists_callback..mean~sIT4L9 6& ! & & ( Q Q*+rr;)rLr?r|rrOrr^r`rcFgSG-?rgȄC(reN)rlinspacepisinr?r@rmpause draw_artistrBblitbboxrmrBr_get_animated_artistsstaler get_ydataupdate) rGrlnrrXrurvrwrrrs @@@r,test_span_selector_animated_artists_callbackrms  Aq255y#&A VVAYFllnGC ''!Vd' +CB 7727 %DC IIcNNN2JJOOCHH,   DL04,037(,  .DQJAI T7*Q-z!}QO T89Q.onselects rr;)rLrrry) grrr333333?ffffff??g ףp= @@@) rrrrrr?rrr)rmrB_snaprrrr )rr]rs snap_function snap_valuesrexpects r"test_snapping_values_span_selectorrsl    H FDJJM++aB'K XXJ KF XXJ KF 6; /FFF#rcfd}tjddz}tj|d|}d|_|jdk(sJd|_|j Jd|_|jdk(sJy)Ncd_y)NT) _got_onselect)rrrs rr]z)test_span_selector_snap..onselects rrrr;)rLr)r)r%$)rarangermrBrr)rr]rrss` rtest_span_selector_snaprs ))B-!#K   H ,7 9DDL <<8 ## #D    ## #DL <<8 ## #rctj|ddd}d|_|jdk(sJ|jsJd}d}t ||||jdk(sJy) Ncyrr)ars rz,test_span_selector_extents..rr;T)r5)rrQ) )r&rr})rmrBrrr)rrsrurws rtest_span_selector_extentsrsp    |$ DDL <<7 "" "  $ $$ $JL4z|< <<7 "" "rr#)r()rOrXctjtd}tj|fd|i|}t |ddddt |ddddt |d d d d|j gd y) NrZr]r^r_rr`rcrrer)rrr7)rrlr rm LassoSelectorrrC)rrNr]rss rtest_lasso_selectorrsm yyd6H   Ah A& AD T7#S; T83c!< T9Cs1= $$%IJrctjtd}tj||t dd}|j }tj|jdsJ|jdk(sJ|jddtj|jdsJ|jdk(sJy)NrZrrrT)r]rXrr) rrlr rmrrrrr(rUrr)rr]rsrs rtest_lasso_selector_set_propsrsyyd6H  h'+#S'A CD # #F   f..0# 66 6     $$ $NNCN(   f..0# 66 6     $$ $rc tjtd}tj|d|}|j }t j|jdsJ|jdk(sJ|jdk(sJtj|d|tdddd  }|j }t j|jdsJ|jdk(sJ|jdk(sJ|jdk(sJ|jd |jd t j|jd sJ|jd k(sJy) NrZrr-rdarkbluerr) linestyler(rlwrWrr)rrlr rmLassorhrr(rU get_linestyleget_lwrr set_color set_alpha)rr]rsrhs rtest_lasso_set_propsrsKyyd6H ==Z 2D 99D   dnn. 88 8    3 && & ;;=A   ==ZZsq:: ;D 99D   dnn. ;; ; >> s "" " ;;=A      3 && &NN3NN3   dnn. 44 4 >> s "" "rcd}tj||d}|jgdk(sJ|jd|jgdk(sJ|j dgk(sJ|j |jgdk(sJ|j gk(sJdt |t |dzfD]6}tjt5|j| ddd8d D]7}tjt5|jd | ddd9|jd }|j|y#1swYxYw#1swYsxYw)N)rrc)TFTr)FFTr)FFFr)rx)invalidrr)r cyrrrrrrz#test_CheckButtons..rr) rmr get_status set_activeget_checked_labelsrrr=rr TypeError on_clicked disconnect)rlabelscheck invalid_index invalid_valuecids rtest_CheckButtonsr sn F  V-@ AE    !4 44 4 Q    !5 55 5  # # %# .. . KKM    !6 66 6  # # % ++ +c&k3v;q=92 ]]: & 2   =  1 2 22)5 ]]9 % 5   Qm  4 5 55   < (C S 2 2 5 5s!EE*E' *E3 toolbar)ritoolbar2 toolmanagerctjjd|tjt d}tjt d}t j|d}|j||j||jdk(sJt|d|jd|jdk(sJ|jdk(sJ|j|j|jdk(sJt|ddd t|d d t|d d |jdk(sJy)NrrZ_clickzx**2rrrrarb _keypress+r5r)r?rcParams_setrrlr rmTextBox on_submiton_text_changetextrset_val call_count begin_typing stop_typing)rr submit_eventtext_change_eventrss r test_TextBoxr sLLi)99$T:L t$? ??2r "DNN< )* 99?? T8LL 99    ' '1 ,, ,  " "a '' ' T82R0 T;C( T;C(  ' '1 ,, ,rctj|d}|jd|jdk(sJ|jdk(sJ|j |jdk(sJ|jdk(sJy)NRadio 1Radio 2zRadio 3rrrr)rmrrvalue_selectedindex_selectedr)rradios rtest_RadioButtonsr@s|  %F GE Q   9 ,, ,   1 $$ $ KKM   9 ,, ,   1 $$ $rzcheck_radio_buttons.pngmpl20)style remove_textc t}|jd}|jd|jd}t j |d}|jd}t j |dd }|jd }t j |dgd gd d gd gdd}|jd}t j |dd gd gd d gd gdddgd i} y)NFrootr)left)皙?rr333333?r)rrrr)zCheck 1zCheck 2zCheck 3)FTT)rrrr)rr%)r#greenblue)r)r()r* palegreen lightbluer,r/)rrrrr(r0r5r6)r get_figuresubplots_adjustadd_axesrmrr) rrGrax1rb1rax2cb1rax3rb3rax4cb4s rtest_check_radio_buttons_imagerJs B --U- #CS! <<. /D   t%F GC <<. /D   t%F2 4C <<. /D    /!,68":"IK  LC <<. /D    /1D!,68":"IK67  9Crpng) extensionscptj|jddg|jgg}|j ddgddg|j t jddz dzd d g |jd dd|j d |jd dd|j d y)NteacoffeexticksyticksrUUUUUU?UUUUUU? font.sizerC0ri)rsr?rrva) rmrr@ add_subplotscatter transAxesr?rrfig_testfig_refrs rtest_radio_buttonsr)is **,uh.?@   Br  2BJJSzC:,,{+a/A5$IGGCer||GAGGCh",,8GDrc dgdgd}dddd}tj|jdd g|| tj|jdd g}|j||j i|d d iy) Nr#r'rrrr.r- linewidthrrr/rb@)rmrr@set_label_propsset_radio_props)r'r(r0r1cbs rtest_radio_buttons_propsr2ss"G"6K 'f1MK ))+eX->%0kK   h//1E83D EB{#8+8sK89rctjtd5tj|ddgdddi}dddt j jjdd gsJy#1swYctj|jddgdtj|jddgd}d|_y)Nrrr)r5r#)rmrr@r5)r'r(r1s r%test_radio_buttons_activecolor_changer<sS ))+eX->%,.   h//1E83D*/ 1BBNrc tj|jddgddg|jgg}|j ddgddgd|j t jd d z d zd d g |j ddgddgd |j t jd d z d zddg |jddd|j d|jddd|j dy)NrrTrrrrrrrri)markerrrrrkr rr!) rmrr@r#r$r%r?rrr&s rtest_check_buttonsr@s **,uh.?$N   Br  2BJJSzC:cR\\,,{+a/A5&&9IKJJSzC:cR\\,,{+a/A5#sEGGCer||GAGGCh",,8GDrczdgdgd}dddd}ddd}tj|jd d gd d g||| tj|jd d gd d g}|j||j i|d di|j d|d<|j i|d diy)Nr#r+r'rrrr,)r.r-rrTrrr.r.r-)rmrr@r/set_frame_propspopset_check_props)r'r(r0r5r6r1s rtest_check_button_propsrEs"G"6K 'f1MK %A6K ))+eX->t %0k%02   h//1E83D#Tl ,B{#8+8sK89 +{;K 8+8sK89rcRtj\}}tjt5t j |dddddddtjt5t j |dddddddy#1swYFxYw#1swYyxYw)Nrr8@r)rlabelvalminvalmax slidermin)rrHrIrJ slidermax)r?r@r=rrrmSlider)rGrs r'test_slider_slidermin_slidermax_invalidrNsllnGC z "'"Bs4!% '' z "'"Bs4!% '''''''sB-BBB&c>tj\}}tj|dddd}tj|dddd|}|j|jk(sJtj|dddd| }|j|jk(sJy) NrrrGrrrHrIrJvalinitr)rrHrIrJrQrKr)rrHrIrJrQrLr?r@rmrMval)rGrslider_sliders rtest_slider_slidermin_slidermaxrVsllnGCnn"S%(*G^^rC$'7dk(rgd}ngd}tj\}}tj|dddddg }|jj j |jj}t|jj|gd t|jd fd }|jd t|jd t||d |jj j |jj}t|jj|gd|jdt|jdt||d|jdt|jdt||d|jt|jd t||d y)Nr=rrrrrrrrrrrr(\?rrHrIrJrDrQ)rr rmrg)rrmcdk(r+|jDcgc]}|jdc}S|jDcgc]}|jdc}Scc}wcc}w)Nr=r)_handlesr get_xdata)rUhrDs rryz+test_range_slider..handle_positionssS * $.4oo>AKKM!$> >.4oo>AKKM!$> >?>s AA")皙?r)rsr rrg)rr)rr)rrQr")r?r@rm RangeSliderr_r`rar%rbr get_pointsflattenrSrrh)rDidxrGrrUrdrys` rtest_range_sliderrxsj llnGC  RC[d F ++ ! ! # / / 0E0E0G HCCNN$,,.s35LMFJJ ,?  NN:FJJ +$V,j9 ++ ! ! # / / 0E0E0G HCCNN$,,.s35IJ NN:FJJ +$V,j9 NN8FJJ'$V,f5 LLNFJJ ,$V,k:rc d|dk(rgd}ngd}tj\}}tj|ddd|ddg}|jj j |jj}t|jj|gd y) Nr=rkrlrrrrrn)rr rrg) r?r@rmrtr_r`rar%rbr rurv)rDrwrGrrUrds r"test_range_slider_same_init_valuesrz1sj llnGC  bSkQF ++ ! ! # / / 0E0E0G HCCNN$,,.s35GHrc t}tjtd}t j |fd|i|}|D]\}}t ||fi||j|k(sJ|j|fifk(sJy)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. NrZr]) r rrlr rmPolygonSelectorrrrr) event_sequenceexpected_resultselections_countrNrr]rsetype event_argss rcheck_polygon_selectorrBs* Byyd6H  " "2 C CF CD-, u+ +,   "2 22 2   ?"5r!: :: :rcZdt||fdt||fdt||fgS)Nrcrr^rerrs rpolygon_place_vertexrds9 t%u5 6 de4 5 56 7 99rc^dt||fdt||dfdt||dfgS)Nrcrr^rr`rerrs rpolygon_remove_vertexrjs? t%u5 6 deA> ? 5a@ A CCrdraw_bounding_boxctjt|}gd}gtddtddtddtdd}|||dgd}gtddtdddt d fd t dd fd t dd fd t d d fdt d d fdt d ftddtd d}|||dgd}gtddtdddt d fd t dd fd t dd fd t dd fdt dd fdt d ftddtdd }|||dgd}gtddtddtddtddd t dd fd t dd fd t d d fdt d d f}|||dgd}gtddtddtddtdddt d fd t dd fd t dd fd t dd fdt dd fdt d f}|||dgd}dt d fd t dd fd t dd fd t dd fdt dd fdt d fdt d fd t dd fd t dd fd t dd fdt dd fdt d fg tddtddtddtdd}|||dgd}gtddtdddt d fdt d ftddtddtddtdd}|||dy)Nrrrrrrrrrr))rrrrrrrrcrr^rreon_key_release))rr)rrrrr_rr))rr)rr)rrrfr[) functoolspartialrrr)rcheck_selectorr~r}s rtest_polygon_selectorrpso&&2CEN7O b" % c2 & b# & b" % N >?A67O  b" %  c2 &  ),-  4b+,  $Rr*+  4b+,  Dr,-  4I./  b# &  b" % N>?A67O  b" %  c2 &  '*+  4c-.  $S,-  4c-.  Ds#./  4G,-  b# &  b" % N>?A67O  b" %  c2 &  b# &  b" %  4b+,  $Rr*+  4b+,  Dr,- N>?A67O  b" %  c2 &  b# &  b" %  '*+  4c-.  $S,-  4c-.  Ds#./  4G,- N>?A67O ),- 4c-. $S,- 4c-. Ds#./ 4I./ '*+ 4c-. $S,- 4c-. Ds#./ 4G,- b" % c2 & b# & b" %!N$>?A67O  b" %  c2 &  (+,  4H-.  b" %  c2 &  b# &  b" % N>?A6rctj|tddtd|}gtddtddtddtdd}|D]\}}t ||fi||j }|j dk(sJ|jdk(sJ|jd d |j d k(sJ|jd k(sJ|jD],}|j dk(sJ|jdk(r,J|jd d |jD],}|j d k(sJ|jd k(r,Jy) NrrrTrr)rXrrrrrr) rmr|rrrrrUrrrr)rrrsr}rrrs r,test_polygon_selector_set_props_handle_propsrs  " "2)-Cs)C0435F HD  b" % c2 & b# & b" % N ., u+ +, # #F     $$ $     $$ $NNCN(     $$ $     $$ $'')!S(((!S((() 3/'')!S(((!S((()rc|j}|j}tj|ddi}d|_y)NvisibleFrW)rrrr)r@rmrnr)r'r(ax_test_rss rtest_rect_visibilityrs>!GA  $ $WY4F GD'DLrrw)rrrc6gd}t|dt|dt|dt|dg}|j|tdd|jtddt j t j|g}t||d|y)Nrrrrr) rinsertappendrrreduceoperatoriaddr)rwrvertsr}s rtest_polygon_selector_removers -E*E!H5*E!H5*E!H5*E!H5 7N #3C=>/S9:%%hmm^RHN>5!->@rcgd}gt|dt|dt|dt|dt|d}t||ddd|yNrrrrr)rrr)rrr}s r(test_polygon_selector_remove_first_pointr!s ,E uQx ( uQx ( uQx ( uQx (  a ) N>59a->@rc.gd}gt|dt|dt|dt|dt|dt|dt|d}tj||}|D]\}}t ||fi||j |ddk(sJyr)rrrmr|rr)rrrr}rsrrs rtest_polygon_selector_redrawr/s ,E  uQx (  uQx (  uQx (  uQx (  a )  a )  uQx ( N  " "29J KD-, u+ +, ::q ## #rcbgd}|j}tj||}||_|j|k(sJ|j}tj||}gt |dt |dt |dt |d}|D]\} } t || fi| y)N))rrs)rr)rrrrrr)r#rmr|rrr) r'r(rrr tool_testax_reftool_refr}rrs r"test_polygon_selector_verts_setterrFs 1E""$G''CTUIIO ??e ## #  "F&&vARSH uQx ( uQx ( uQx ( uQx ( N .0 5/J/0rc|jddgd}gt|dt|dt|dt|dt|d}tj|d }|D]\}}t ||fi||j }|j d j}td |g|jd djtd |g|jdjtd|g|jddjtjj|jgdtd |g|jddjtd |g|jdjtd|g|jddjtjj|jgdtjj|jj dtd |g|jddjtd|g|jddjtjj|jgdtjj|jj dy)N)ir)xlimylim))r&r)rr&)r&()rr&rrrrTrrbutton_press_event)rrmotion_notify_eventrbutton_release_event))rQrr)rQr&)r&rQr{r)rr&rrrrr)4@D@rrr)rrr)rrg>@r)setrrmr|rrrrBrr_processrtestingr r_boxr)rrr}rsrrtrBs rtest_polygon_selector_boxr\sFF F* 2E uQx ( uQx ( uQx ( uQx (  uQx ( N  " "2 >D-, u+ +, A ]]] % , ,FfA'({{8'<A>?AAIv?() H(=??GxzC)*X)>C@ACCK8:JJ :<fA'({{8'<A>?AAIv?() H(=??GxzC)*X)>C@ACCK8:JJ <>JJ 35fA'({{8'<A>?AAIC)*X)>C@ACCK8:JJ 24JJ 35rcvtjtd}tj||}gdgdfD]}|D]&\}}t ||D]\}}t ||fi|(|j}|jsJ|jsJ|jsJtjj|j||j|ddfifk(sJ|j|jrJtjj|jdgy)NrZ)rrrr)r)r_rrrrr)rrlr rmr|rrrrr_rr assert_equal get_xydatarrr) rr]rsresultryrrrs r"test_polygon_selector_clear_methodrs-yyd6H  " "2x 0D==?? 4DAq%9!Q%? 4!zu3 3 4 4''((((!!!!!###  1 1 3V<!!vcr{nb%9999 ,,,,  1 1 3fX>!?rhorizOnvertOnctj}|jdd\}}tjj}tjd||fd||}t |j dk(sJt |jdk(sJt|dd}|j||jj|j D]}|jd k(rJ|jD]}|jd k(rJt |j D cgc]} | js| c} |rdnd k(sJt |jD cgc]} | js| c} |rdnd k(sJ|j |_|j |_t|dd}|j|t |j D cgc]} | js| c} |rd ndk(sJt |jD cgc]} | js| c} |rd ndk(sJt|d d }|j||j D]}|jd k(rJ|jD]}|jd k(rJycc} wcc} wcc} wcc} w) NrT)sharexF)rOrrrr r)rr)r r rrg)r?figurer@rm MultiCursorrvlineshlinesr rcrBrCrqrr_rr) rrrGax1ax3ax2multieventlrhs rtest_MultiCursorrs **,Ca-JS# **,   !C    sCj% E u||  !! ! u||  !! ! s"C 0E LLJJOO\\){{}((() \\+{{} ***+ D1A1A1CD E    D1A1A1CD E !   %EM||#EL s"C 0E LL D1A1A1CD E    D1A1A1CD E !   s#S 1E LL \\){{}((() \\+{{} ***++EDEDs05K K2K K 2KK/KK)grrDrunittestrmatplotlib.backend_basesrmatplotlib.colorscolorsrr;rmmatplotlib.pyplotpyplotr?matplotlib.testing.decoratorsrrmatplotlib.testing.widgetsrrr r r numpyr numpy.testingr r=fixturerrMmark parametrizerrvrrrrrrrrrnrrr rr!r,r4r:rFrHrJrMrRrVr]r`rbrjrzbackendrrrrrrrrrrrr)r2r:r<r@rErNrVrYr\rerirxrzrrrrrrrrrrrrrrrrrs /#$O::) $0NFa "rh7t $   2'9:1b'At9q"g)FG1b'At9q"g)FG HH; F9* (+-.%.%*)* JF tUm4F;5F;RtUm4F35F3R<C~)!33W5L5LMODODB %/%?7@7B56D>u 6 "7 " /$?<@<,?5$r489t1~&5$Tt_565$401 B 1  10u 6 "7 "/$?*@*8-e}=&>&2*$),fk%:;)<):fk%:;(<(2 3&&@A<B<6W$7585p $$"#"Fd/0a $ K  K %#*.$GH-I->%,-W$O9P9<(E)E( :) :N()(E)E(:):,' %'5(z(BC);D);Xz(BC ID I ;D9 C ,udm<n7=n7b,udm<)=)@(()( *,udm<@=+@",udm< @= @,udm<$=$,,udm<(0)=0(55p?.UDM2E4=12+232+r