rL i:dZddlZddlZddlZddlmZddlmZddlZddl m Z ddl Z ddl Z ddl Z ddl mZddlmZddlmZddlmZddlmZddlmZdd lmZmZd Ze j@jCd d Z"dZ#dZ$edgdddZ%dZ&dZ'dZ(dZ)edgdejTdk(rdnddZ+eddZ,d Z-d!Z.ed"gdd#ejTdk(rdnd$%d&Z/ed'gd(d)Z0d*Z1ed+gd,-d.Z2d/Z3ed0gd1Z4e j@jkd2d3d4gedd5Z6d6Z7d7Z8ed8gdd#9d:Z9ed0gd;Z:d<Z;ed0gd=Z<ed0gd>Z=d?Z>d@Z?y)Az% Tests specific to the lines module. N)SimpleNamespace)cycler)assert_array_equal)_path) MarkerStyle)Path)image_comparisoncheck_figures_equalc d\}}tjddgtjddg}}d}ttj|||||dgy)zTest a problematic case.)i)igH@gW@g@g(\@rN)nparrayrmlines segment_hits)cxcyxyradiuss a/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_lines.pytest_segment_hitsrsR FB 88T4L !288S$K#8qA Fv**2r1a@1#F)rerunsc&d}tjdd|}tjj|}t j }t j }tj||}|jdttj|jjdd}|j|ttj|jjdd}||z }d} || ksJy ) ac GitHub issue #1256 identified a bug in Line.draw method Despite visibility attribute set to False, the draw method was not returning early enough and some pre-rendering code was executed though not necessary. Consequence was an excessive draw time for invisible Line instances holding a large number of points (Npts> 10**6) irsizeFr)numberrepeatN)r linspacerandomnormalpltfiguresubplotrLine2D set_visiblemintimeitrcanvasdrawadd_line) Nrrfigaxl t_no_linet_invisible_lineslowdown_factorslowdown_thresholds rtest_invisible_Line_renderingr6$s A Aq!A a A **,C B  aAMM% FMM#**//!AFGIKKN6==1MN'2O / // /rctj\}}tjj d|j tjj dddgyNrr)rr) linestylesr$subplotsr r"seedcontourrandnr/r0s rtest_set_line_coll_dashrCPsDllnGCIINN1JJryyr2&K=JArcLtjtd5tjdgdddtjtd5tjgddddtjgg}tjtd5|j ddddtjtd5|j ddddy#1swYxYw#1swYxYw#1swYWxYw#1swYyxYw)Nz xdata must bematchrz ydata must berz x must bez y must be)pytestraises RuntimeErrorrr' set_xdata set_ydatalines rtest_invalid_line_datarNXs |? ; a |? ; b! ==R D |; 7 q |; 7 qs/C6D&DD6C?D DD# line_dashesTg~jth?) remove_texttolcltj\}}|jtdddy)N r; linestylelw)r$r>plotrangerBs rtest_line_dashesrZes)llnGCGGE"IG3rc~tj\}}|jtdd|jtdd|jtdd|jtdd|jtdd|jj y)NrSnone)colorrz.3)rrrr)rrrr$r>rXrYr+r,rBs rtest_line_colorsr`nsllnGCGGE"IVG$GGE"ISG!GGE"ITG"GGE"I\G*GGE"IYG'JJOOrctjgg}tjt5|j ddddy#1swYyxYwNfoobar)rr'rGrH ValueError set_colorrLs rtest_valid_colorsrfxs? ==R D z "! x !!! A  Ac tj\}}ddddddddd d d gff D]}|jtd |  |jj y)N-solid--dashedz-.dashdot:dotted)rN)rrrS)rVr_)r/r0lss rtest_linestyle_variantsrr~sellnGCGT8YX'Ar7) b R( ) JJOOrctjgg}tjt5|j ddddy#1swYyxYw)Naardvark)rr'rGrHrd set_linestylerLs rtest_valid_linestylesrvsA ==R D z "' :&'''rgzdrawstyle_variants.pngx86_64gQ?ctjd\}}gd}t|j|D]4\}}|j t d||j dd6y)N)defaultz steps-mid steps-prez steps-poststepsN drawstyle)rr )xlimylim)r$r>zipflatrXrYset)r/axsdssr0dss rtest_drawstyle_variantsrs^||AHC LC chh$)B d r* F()r)png) extensionsc"|j}tjd}|j|dz||j}t j j dd}|j||||jzy)Nr}g@@) transform) add_subplotr arangerX mtransformsAffine2D translate transData)fig_reffig_testr0rts rtest_no_subslice_with_transformrsr    B $AGGAHa    B((5AGGAqAbllNG+rctjgg}tjt5|j ddddy#1swYyxYwrb)rr'rGrHrd set_drawstylerLs rtest_valid_drawstylesrsA ==R D z "% 8$%%%rgctjddtjzd}tj|}t j \}}|j ||\}|jdt|jjdt|zdz k(sJ|jdt|jjt|k(sJy)Nrr rSr{rrz) r r!pisinr$r>rXrlenget_pathvertices)rrr/r0rMs rtest_set_drawstylers Aqw#A q AllnGC GGAqMED{# t}}'' (Ac!fHQJ 66 6y! t}}'' (CF 22 2rline_collection_dashesmpl20g?)rPstylerQctj\}}tjj d|j tjj dddgyr8r=rBs rtest_set_line_coll_dash_imagersDllnGCIINN1JJryyr2&K=JArzmarker_fill_styles.png)rPc2tjgddddddtjgdg}d}tjd d g}tjd d g}t j \}}t d D]i\}}t tjjD]>\}} t|} |j|d z|z||zd|dzzz|d|| | d| | d @k|jd dg|jddgy)Nrrrgz#ff0000cmr)rrr lightgreenrr zov^<>8sp*hHDdPXrS?r r9rT) marker markersizemarkerfacecoloralt fillstylelabel linewidthr]markeredgecolormarkeredgewidthg@) itertoolscycler r r$r> enumeraterr' fillStylesnextrXset_ylimset_xlim) colorsaltcolorrrr/r0jrifsr]s rtest_marker_fill_stylesrs __iic3 hhy134FH !QA !QAllnGC 01 ' 6v}}778 'EArLE GGAFQJAa!e 4!!'/ $)$%  ' ' 'KKCKKS rctjgdtddd\}|jdk(sJ|j dk(sJy)z=Test that markerfacecolor does not override fillstyle='none'.rrr or\)rred)rmarkerfacecolorN)r$rXr get_fillstyleget_markerfacecolor)r1s rtest_markerfacecolor_fillstylersL )Kv$F"' )BA ??  && & "f ,, ,r scaled_linesrz)rc |tjdd}tj\}}gd}t t j d}tt||D]W\}\}}tjdddD]5}|j||tjdzd|zzf||d |7Yy) Nr )rlrormaxes.prop_cyclerrS2皙?rU) r r!r$r>r matplotlibrcParamsrrrXones) thr/r0 lins_stylesrrrqstyrWs rtest_lw_scalingrs Q BllnGC1K  ##$56 7B!#k2"67M 9B++b"b) MB BGGB"''"+ R/ L2" L L MMrc.tjtjgdsJtjtjdtjdgsJtjddgtjgdzzddgzrJtjtjdd gd rJdt j jz}tjtjg|zt|y) Nrr rrrrTdrr iiz>i4) ris_sorted_and_has_non_nanr r nanrr'_subslice_optim_min_sizer$rXrY)ns rtest_is_sorted_and_has_non_nanrs  * *288I+> ?? ?  * *288QN+C DD D..1v3/F!Q/OPP P..rxx58I5/QRR R FMM 2 22AHHbffX\58$rrc|jjddgd|jjgdgddddgy)Nrrz-or)rrrr  markevery)r>steprXrrs rtest_step_markersrsC aVT* Iy$1a&Irparentr%axesc  tjjdtjddd}tjj t |}dddgdddgt d d d tjt ||d kDd dg }gd}|dk(r|dd}|dd}fd}fd}nY|dk(rTtjddj tjddj fd} fd}|D] } ||| |D]Q} tjt| jtjt} ||| Sy)N*rr)r rT)rrT rTrSr r333333?)r皙?) 111111111111111000100010001000100001000010010001000001001000000000000100000101010000011100011101101101101101111001010011011101r%cVjtj||d|yNrrr add_artistrr')rrrrs radd_testz test_markevery..add_tests$    a3)D FrcVjtj||d|yrr)rrrrs radd_refztest_markevery..add_refs$    a3)D FrrrcBtj||d|yNz-gDrrrX)rrraxs_tests rrz test_markevery..add_test%s N  1ey  ArcBtj||d|yrr)rrraxs_refs rrztest_markevery..add_ref(s M  q!Ui  @rr)r r"r?r!randrsliceriterr>rr listastypeintbool) rrrrr cases_test cases_refrrcasemer rs `` @@rtest_markeveryrsbIINN2 Aq"A s1vA6:b'5B?))CF#AG,z#JGI_ crN  F F 6 ))!Q/445w''1-223 B A'A&'$ XXd4j ! ( ( - 4 4T :1#$rctj}|jtjddgddgddt j t5|jjdddy#1swYyxYw)Nrrrrr) r$r%rrr'rGrHrdr+r,)r/s r.test_markevery_figure_line_unsupported_relsizer3s_ **,CNN6==!Q!QrJK z " s A>>Bctj\}}|jgdtd\}|jj |j dk(sJ|jd|jj |jtd|jj tjddgddgdd gg}|jgd t|d \}|jgd |d \}t|j j|jt|j j|jy)N)r rrD)rsrrrrr r)rms)rr r) r$r>rXrr+r, get_marker set_markerr_create_closedrr)r/r0rM triangle1line2line3s rtest_marker_as_markerstyler$:sllnGC GGIk#&6G 7EDJJOO ??  ## # OOCJJOOOOK$%JJOO##b"X2wA$?@I WWY{9'="W EFE WWYyRW 8FEu'')22I4F4FGu'')22I4F4FGrzstriped_line.png)rPrc 2tjjd}tj\}}|j |j dddddd |j |j dd d d ddd |jdy)Ni!N, rorangebluerkrT )r]gapcolorrVrWrrblack)r)r rTrr r)r]r*rVrWralpha) handlelength)r r" default_rngr$r>rXuniformlegend)rng_r0s rtest_striped_linesr3Ns ))   )C LLNEArGGCKKRK 6q -GGCKKRK 'AS EII1Irc|jjddggd|jjddggdy)Nrr r)dashes)rr rrr r)rrXrs rtest_odd_dashesr6YsC Ay9 1v.@Arcntj\}}t|jjdz|jj dzdz}|j ddgddgd\}|j|\}}|rJ|j ddgddgdd \}|j|\}}|sJt|d dg|j ddgddgd\}|j|\}}|rJ|jd|j|\}}|sJt|d dgy) Nr )rrrrT)pickerr9)r9 pickradiusind) r$r>rbboxwidthheightrXcontainsrset_pickradius)r/r0 mouse_eventl0foundindicesl1l2s r test_pickingrG_s5llnGC!CHHNNa$7$'HHOOq$82$=?K ''1a&1a&' .CB[[-NE79 ''1a&1a&"' =CB[[-NE7 L5wu~s+ ''1a&1a&' .CB[[-NE79b[[-NE7 L5wu~s+rctjddd}|jj||d\}t d|dd|j d|jjgdgdddy) Nrryr z.-rr|)rr rr~)r rrrXrYr)rrrr1s rtest_input_copyrIysn !QA     $ $Q4 0BA 8AaDOOG y)TWMrc dddgdddgtddd d d d d dg }tjd}|tjddt |}tjdd}d|dzz}|j }t|D] \}} |j||z d| ||"t||tjd<|j } t|D]\}} | j||z dy)z*Test that we can set markevery prop_cycle.N)r:rK)r:rrrrrrg?)rr)g?rjet皙?皙?rrTr zo-)rr]r) r mpl colormapsr r!rrrrXrrr) rrcasescmaprrrrrrr0r2s rtest_markevery_prop_cyclerVs1g|aW 3Q c3  &E == D "++c3E 3 4F BA AqDA    C!%(D 9 Q CD.4e:@.BJ)*    B% 1 Atrctj\}}|jdd}|jdd}|jd|j d|jd|j d|j dk(sJ|jdk(sJ|j dk(sJ|jdk(sJtjtj5|jd d dddtjtj5|j dd dddtjtd 5|j d d dddtjtd 5|j ddddy#1swYxYw#1swYxYw#1swYWxYw#1swYyxYw)N)rr333333?slope)rQr)rPrg333333@)rrP)rXrQrPrrQz.Cannot set an 'xy2' value while 'slope' is setrEz-Cannot set a 'slope' value while 'xy2' is setr)r$r>axlineset_xy1 set_slopeset_xy2get_xy1 get_slopeget_xy2rGwarnsrRMatplotlibDeprecationWarningrHrd)r/r0line1r"s rtest_axline_settersresllnGC IIhcI *E IIh )E MM( OOC MM( MM( ==?h && & ??  ## # ==?h && & ==?h && & c66 7 b" c66 7 b" zM O b" zL N s08F=6G ,G"G!=G GG!G*ctjdd}|jjd}|jjd}|d|dz }|dkDsJ|dksJy) z@Test that small slopes are not coerced to zero in the transform.)rrg+=rY)rrrrg-=N)r$r[ get_transformtransform_point)rMp1p2dys rtest_axline_small_sloperlsl ::fE *D    - -f 5B    - -f 5B AAB 6M6 ::r)@__doc__rplatformr*typesrrnumpyr numpy.testingrrGrrRrmatplotlib.lineslinesrmatplotlib.markersrmatplotlib.pathrmatplotlib.pyplotpyplotr$matplotlib.transforms transformsrmatplotlib.testing.decoratorsr r rmarkflakyr6rCrNrZr`rfrrrvmachinerrrrrrrrrr parametrizerrr$r3r6rGrIrVrerlrprrrsv !, !* +OG!(0(0VB =/t?4@4! ' +,$+8++-9atE )E )),*,% 3+,$g+8++-9atEBEB +,$?@>->")4M5M%(J)J Hf#56))$*7)$XH(%&DHI(B)B ,4(N)N()0>r