rL i8hdZddlZddlZddlmZmZddlZddlZ ddl m Z m Z m Z mZmZmZmZmZmZddlmZmZddlmZddlmZddlmZmZm Z!m"Z#m$Z%m&Z&dZ'd Z(d Z)d Z*ed g dZ+ed g dZ,dZ-edgdZ.edgddZ/edgddZ0e jbjeddZ3edgddZ4dZ5ed g dZ6dZ7ed gdejpd!k(rdnd"#d$Z9d%Z:ed&gdd'd(Z;ed)gd*Z<ed+gd,dejpd!k(rdnd-.d/Z=ed g d0Z>ed g d1Z?d2Z@d3ZAd4ZBd5ZCed g d6ZDd7ZEd8ZFed9gd,:d;ZGedZIejjd?d@dAZLedBgd gCdDZMedBgd gCdEZNedBgd gCdFZOdGZPejjdHdIdJZQdKZRdLZSdMZTdNZUdOZVedPgd dQgd,dRdSZWegdT dUZXegdT dVZYdWZZegdX dYZ[dZZ\y)[z' Tests specific to the patches module. N)assert_almost_equalassert_array_equal) AnnulusEllipsePatchPolygon RectangleFancyArrowPatch FancyArrowBoxStyleArc)image_comparisoncheck_figures_equal)Bbox) collectionscolorspatchespath transformsrcParamscddgddgddgg}|ddggz}t|d}|jsJt|j||j |t|j|t|d}t|j||j |t|j|t|d}|jrJt|j||j |t|j|t|d}t|j||j |t|j|y)NrTclosedF)r get_closedrget_xyset_xy)xyxyclosedps c/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_patches.pytest_Polygon_closer"s. a&1a&1a& !BaVH}H 4 A <<>>qxxz8,HHRLqxxz8, 'Aqxxz2&HHXqxxz2& 5!A||~ qxxz2&HHRLqxxz2& &Aqxxz8,HHXqxxz8,c ddg}d}d}d}t|||}t|j|t|jdd}|j dt|j|t|jd d }t j jg|tj|}|j|}|j |t|j||d |dz z|d|dz zg}t|||}t|j|d }|j dt|j|t|j|d }t j jg|tj|}|j|}|j |t|j|y) N r)r%r&) r&)r))r%r*)g%@)r()r%r+)r+)r,r&Z) 4@!r))'@r/)r15@)#@r2)r3r/) r r get_corners get_center set_angle mtransformsAffine2D rotate_aroundnpdeg2rad transformrr) locwidthheightcornersrect corners_rotthetatellipses r!test_corner_centerrF:s r(C E F7G S% (Dt'')73t(*59KNN2t'');7t()4 E, ,,EcE2::e3DEA++g&KNN5((*K8 q6EAI  q6FQJ  Cc5&)Gw**,g6IK bw**,k:w))+S1 E, ,,EcE2::e3DEA++g&K e++-{;r#c ~tdddd}t|jddgt|jddgtdddd}t|j|jd|j dz t jd zz|jd|j dz zf|jd|j dz t jd zz |jd|j dz z fgt|j|jd|jdz z |jd|jdz t jd zzf|jd|jdz z|jd|jdz t jd zz fgt j|j\}}t jj||zdz |jt j|j\}}t jj||zdz |jtd d d d }t j|j\}}t jj||zdz |jt j|j\}}t jj||zdz |jy)Nrrrrr>r?anglerLr'r)gjt@g+η%gQ@gGz?gR1Q@) rr get_verticesget_co_verticescenterr>r:sqrtr?arraytesting)rEv1v2s r!test_ellipse_verticesrXjsq!@rJf@) r:asarrayr pirTcossininner get_vertsTr) r=r>r?rJrect1rect2 angle_radrotation_matrix new_vertss r!test_rotate_rectrjs **c3Z C E F E c5& 6E c5& )E %Ihh !2RVVI5F4F G!# !2RVVI5F G IJO%//*;c*ABDDsJI)95r#png) extensionscr|j}|j}d}d\}}d}t||||}|j||j|k(sJt|||} | jdk(sJ|j| | j || j|k(sJy)NrHrrrMr\r) add_subplotr add_patch get_angler6) fig_testfig_refax_testax_refr=r>r?rJrect_ref rect_tests r!test_rotate_rect_drawrxs""$G  "F CME6 EeV59H X    5 (( (#uf-I    A %% % i      E )) )r#c J|j}|j}d}d\}}t|||dddddgf}t|||dddgd f}|jdddgfk(sJ|jdgd fk(sJ|j||j|t|||dddddgf} t|||dddddgf} | jdddgfk(sJ| jdddgfk(sJ|j| |j| y) N皙?r{)皙?r|rObr) linewidth edgecolor linestyler)rr~r~r)ror get_linestylerp) rrrsrtrur=r>r?rv rect_ref2rw rect_test2s r!test_dash_offset_patch_drawrs^""$G  "F CME6eVqC;0? ACc   y)*i)7)8 :ELLKKAKKAr#patch_alpha_overridectjjd}tjj}t j |j |j dddg}t j |j|jg}tj||}tj|dz|}tj}tj|gddddd }|j|tj|ddddd }|j||j!dd |j#dd y) Nr~rrrr?rr)rrrrr)rrrrrr'rrs r!test_patch_alpha_overrider/s :: ' ' *D ZZ # # %F NNFOOT]]4R4-@A BE NNFLL$**5 6E 5%(I 519e,I B  % %yk01i,00>0?  AC c   y)*i%))7)8  :E LLKKAKKAr#defaultcftjdddd}|jddk(sJy)NrHrr)rrr)rCircle get_facecolor)cs r!test_patch_color_nonerOs2 61a8A ?? Q 1 $$ $r#patch_custom_linestylectjjd}tjj}t j |j |j dddg}t j |j|jg}tj||}tj|dz|}tj}tj|gddgdd}|j|tj|dddd }|j||j!dd |j#dd y) Nr~rrr)r)rr%rrrrrrrrrr'rrs r!test_patch_custom_linestylerWs :: ' ' *D ZZ # # %F NNFOOT]]4R4-@A BE NNFLL$**5 6E 5%(I 519e,I B  % %  !3 4y 2Cc   1y 2ELLKKAKKAr#ctjjd}tjj}t j |j |j dddg}t j |j|jg}gd}tj\}}t|D]I\}}tj||z|}tj|d|dd} |j| K|jddzg|jd|dzg|j j#y) Nr~r)---z-.:soliddashedrdottedrOrrrr)rrrrr:rrrrr enumeraterrrprrcanvasdraw) rrrrrrrilsrs r!test_patch_linestyle_accentsrts :: ' ' *D ZZ # # %F NNFOOT]]4R4-@A BE NNFLL$**5 6E:JllnGC:&2zz%!)U+""4-."-6-68 U KKQU KKQU JJOOr#c`tjj}|j}|j}t gdD]\}}tj|j |z|j }tj|d|dd}|j|tj|dddd}|j||jdd zg|jd|d zg|jd|d zg|jd|d zgy) N)rNone rOrrrrrrr) rrrrorrrrrrprr) rrrsrrtrurrrrs r!test_patch_linestyle_noners ZZ # # %F""$G  "F45  2zz&//A-v||<""4-."-6-68 % ""4-.#-6-35    b!a%[! b!a%[! OORQK  OORQK r#c6dddddd}|jDcic] \}}||d }}}tjdi|}|jD]=\}\}}}t|||k(sJt|||t|||k(r=Jycc}}w) N)rHrn set_center)rr, set_radius)r'rO set_width)rrM set_theta1)-r set_theta2)rRrr>theta1theta2r)itemsrWedgegetattr) param_dictkv init_argswattrold_vnew_vfuncs r!test_wedge_movementrs:+.12 4J &0%5%5%78TQAaD8I8##A&0&6&6&8)""ueTq$5(((4q$5((()9sB wedge_rangex86_64g;On?)rtolc btj}d}ddgddg||dzgddgd d gd d gdd gddgddgg }t|D]G\}\}}|dz}|dz}tj|dz|dzfd||ddd}|j |I|j dd|jddy)Ngo͂@g,(J@g 7 m@g ,(J@gm7 m@r]rhr-iiLi|r.rOrrr)rrrrr,r.)rrrrr add_artistrr) rt1argsrrrxywedges r!test_wedge_rangers B B , ' !3 4 e  H N 3K H H H D ) FF E FAq1u~q&&)/31F eKKAKKAr#cptjdd}t|dk(sJtjdddd}t|dk(sJtjdddd}t|d k(sJtj ddddd }t|d k(sJtj ddddd d }d}t||k(sJtjdddd}d}t||k(sJtjddd}t|dk(sJtjddd}t|dk(sJtjddd}t|dk(sJtjgdd}tj|}t|dk(sJtjtj d }t|d!k(sJddgddgddgg}tj|}t|d"k(sJtj"|#}t|d$d%d&k(sJtj"dd}t|d'k(sJtj$ddd(}t|d)k(sJtj&|dd}t|d*k(sJy$)+z Check that patches have nice and working `str` representation. Note that the logic is that `__str__` is defined such that: str(eval(str(p))) == str(p) rr'rO)rradiuszCircle(xy=(1, 2), radius=3)rNrrIz.Ellipse(xy=(1, 2), width=3, height=4, angle=5)z0Rectangle(xy=(1, 2), width=3, height=4, angle=5)r~)rRrrrr>z6Wedge(center=(1, 2), r=3, theta1=4, theta2=5, width=6)r)rr>r?rJrrz>Arc(xy=(1, 2), width=3, height=4, angle=5, theta1=6, theta2=7))rOrNrr')rrr>rJz.Annulus(xy=(1, 2), r=(3, 4), width=1, angle=2)r&)rz3RegularPolygon((1, 2), 20, radius=5, orientation=0))rr resolutionz.CirclePolygon((1, 2), radius=5, resolution=20))r>r?z)FancyBboxPatch((1, 2), width=3, height=4))rr'r'rTrzPathPatch3((1, 2) ...)rr'z Polygon0()zPolygon3((1, 2) ...))rNzFancyArrowPatch(Path(array(zFancyArrowPatch((1, 2)->(3, 4))datazConnectionPatch((1, 2), (3, 4))z'Shadow(ConnectionPatch((1, 2), (3, 4))))rrstrrr rr rRegularPolygon CirclePolygonFancyBboxPatchrrrrr:emptyr ConnectionPatchShadow)r expectedrrss r!test_patch_strr#s 6!,A q62 22 2F!AQ?A q6E EE EfAaqAA q6G GG Gf!AQGA q6M MM M a1QOAOH q6X  FfAQ?A?H q6X  15A q6J JJ J&rBA q6E EE Ea:A q6@ @@ @ ::.t >> >r#multi_color_hatch)rstylec .tj\}}|jtdtdd}t |D];\}}|j d|j d||jd=|j|jdtdD]U}tjjdd|i5t|d z dfd dd d }ddd|jWy#1swYxYw) Nrrr~rC/Fz hatch.colorg?r|z//)hatchfc)rrbarranger set_facecolor set_edgecolor set_hatchautoscale_view autoscalemplr%contextr rp)rrrectsrrArs r!test_multi_color_hatchr5sllnGC FF58U1a[ )EU#4 6" Qqc7# s LL 1X YY   1#w7 8 I1v:q/2qHA I Q I Is D  D zunits_rectangle.pngcddlmcm}|jt j d|j zd|j zfd|j zd|j z}tj\}}|j||jd|j zd|j zg|jd|j zd|j zgy) Nrrr~rr'rNrr.) matplotlib.testing.jpl_unitsrU jpl_unitsregisterrr kmrrrprr)Ur rrs r!test_units_rectangler<)s,,JJLAaddFAaddF+QqttVQqttV)xyAxyBcoordsAcoordsBaxesAaxesB arrowstyle)g333333?rZ)rL皙?z axes fractionr)rArBrCrDrG)rrrrr get_yaxis_transform)rax1ax2conrArBrCrDs r!test_connection_patchrM6sll1a(OC#s  " "zz+16),C.2 4CNN3 C CG%%'G  " "sW+2s DCNN3r#c |jdd\}}tjdd|dddd }|j||jdd\}}|j}t j d t j d <tjdd||jd z |jd z fddd }|j|y)Nrr'333333?rHrii figure pixelsr@rrArCrErBrDrGshrinkB figure.dpi savefig.dpirMr&) rrrr rrrr>r?)rrrsrJrKrLbbs r!test_connection_patch_figrXJs   A&HC  " " fC  $C 1%HC B"%,,|"*GAJ B,GHGqz7;;r>*GAJ B,GHG  " "w S'..2A ?C sr#cddlm}m}|dddddd}|d}tj|df|d}t j \}}|j |y)Nr)datetime timedeltar)seconds)rbrcrr rrrp)rbrcstartdeltarrrs r!test_datetime_rectangleriwsV, T1aAq )E b !E   qz5! 4EllnGCLLr#cZddlm}|dddddd}|ddd}tjt5t j |df|ddddtjt5t j d|fd|dddy#1swYExYw#1swYyxYw)Nrrbrdrir)rbpytestraises TypeErrorrr )rbrgdt_deltas r!test_datetime_datetime_failsrps! T1aAq )Ea#H y !4E1:x34 y !4Au:q(3444444sB2B!B!B*c tjddd}gd}|j}|j}|j d}t j |Dcgc]}|j|||c}}t j |Dcgc]}|j|c}}t j||k(sJycc}wcc}wNrrrrZ))rLr)rHr)rrrs) rrget_path get_transform_process_radiusr:rTcontains_pointall)ellpointsrr<rpointr!results r!test_contains_pointr}s   :sC 0C >F <<>D!!#I   &FxxBHJ9>,,U-6-35JKHXXfEUs))%0E FF 66&H$ %% % JFs CCctjddd}gd}|j}|j}|j d}|j |||}|j |}t j||k(sJyrr)rrrtrurvcontains_pointsr:rx)ryrzrr<rr!r|s r!test_contains_pointsrs   :sC 0C >F <<>D!!#I   &F##FIv>H   (F 66&H$ %% %r#c "tjddg}tjddg}dtjd<|j }t j |dd}t j||d|d  }|j||j||j }t j |dd}t j ||jd z |zzddtjtj|jdztjtj|jdzd }|j||j|y) NrHrPr{figurerVr)rr>r?rr)oxoyrZ)rr>r?r*ecr)r:rTrrrrr r rpr[r^mcolorsto_rgbr)rrrsrdxya1rAshadowa2s r! test_shadowrs9 2r( B ((B8 C#+CLL    B   2b 9D __Tc!fQ 8FLLLL    B   2b 9D     b 3& &b ::gnnT%7%7%9: ;b @ ::gnnT%7%7%9: ;b @ F LLLLr#crddlm}|ddd}tj\}}td|fd|f}y)Nrrkir{Gz?)rbrrr )rbdtimerrarrows r!test_fancyarrow_unitsrs6! T1a EllnGC QJu 6Er#c tj\}}|jddddddd}tjddgdd gd d gd d gd d gd d gd dgddgg}tj |tj |jdsJtjddgddgddgddgddgddgddgddgg}|jdddddddtj |tj |jdsJy)Nrr%rrr) head_length head_widthr>gGz+@g33333$@gL#@g\(\$@gp= ף#@g ףp= ?g ףp= ǿr'g(\µ0@gGz.@g\(\?g(\?)rrdxdyr>rr) rrrr:rTallcloseroundrset_datarrr expected1 expected2s r!test_fancyarrow_setdatars/llnGC HHQ2rqQbH IE u~ ~ ~ e} ~ e} e} u~ I ;;y"((5;;": ;; ; u~ u~ u~ t} t} u~ u~ u~ I NN qRBaA1 ;;y"((5;;": ;; ;r#z large_arc.svg)r%crtjdd\}\}}d}d}d}||fD]F}t||f||dd}|j||j |j dH|j d d |jd d |j d d|jddy)Nrr'iir)rcolorequalrr,rr~iXiPFii)rrr rp set_axis_off set_aspectrr)rrJrKrrdiameterras r!test_large_arcrsll1a(OC#s A AHCj A(q < Q  g  LLALLALLLLr#zall_quadrants_arcs.svgctjdddd\}}d}d}d}d}t|j|D]>\}\}}d } td d t j dz f||fD]\} } t | | D]w\} \} }t| |z| z||z| zf||z||zd d | d| zt jt j|| dzd| d|  }|j|y dz} |j| dz |dz |j| dz |dz |jd d|jd d|j|j!dAy)Nr'F)r%r%)squeezefigsizei))rr)rrrn)rr))rr)rr)rr)rr)r)r'r{)r'r)r'gMbP?rgH.?)rgrNr'rrzbig )rrzorderrJlabelgidir)rr)rrzipravelr:rSrr rad2degarctan2rprraxhlineaxvlinerr)rax_arrscale diag_centerson_axis_centersskewsrsxsyrprescalecentersjx_signy_signrs r!test_rotated_arcsrs,,q!UHEKC E7L8O 9EFLLNE2 HR !$i)rwwqz1I%J'6 &E"G  Hg'0'B ##FFe^h.e^h.0BJBJaS'q5**RZZ%?@3F *qc   Q !A# $ UFTM54<0 UFTM54<0 1C   1C    g3r#ctjtd5tddddddddy#1swYyxYw)NzGot unknown shape: 'foo'matchrrHfoo)shape)rlrm ValueErrorr rr#r!test_fancyarrow_shape_errorr"s6 z)C D01ac/000s6?z fmt, match))rzUnknown style: 'foo')z Round,fooz%Incorrect style argument: 'Round,foo'cztjt|5t|dddy#1swYyxYw)Nr)rlrmrr )fmtrs r!test_boxstyle_errorsr's. z / s 1:annulus)baseline_imagesrlc tj\}}tdddd}tddddd d d d }|j||j||j dy)NrsrH皙?gr*rrPr{rmr}rxxxr*rrr)r)rrrrprrrcirrys r! test_annulusr0sbllnGC *c4C 0C *j#rS5 :CLLLLMM'r#c >tj\}}tdddd}tddddd d d d }|j||j||j dd|_d|_d|_d|_d|_d|_d|_y)NrKrHrrrrr{rrr}rrrrrsrrr) rrrrprrRradiir>rJrs r!test_annulus_settersr<sllnGC (C# .C (FCS5 :CLLLLMM'CJCICICJCICICIr#c tj\}}tdddd}tddddd d d d }|j||j||j dd|_|j d|jd|jdk(sJd|_ d|_|j d |jd|jdk(sJd|_ d|_ y)NrKrHrrrrr{rrr}rrrrrs)rHrHrrPrr) rrrrprrR set_semimajor set_semiminorrr>rJrs r!test_annulus_setters2rQsllnGC (C# .C (FCS5 :CLLLLMM'CJcc 99 "" "CICJcc 99 "" "CICIr#cddg}t||gj}tjt |gj j|k(sJy)Nr)rextentsr:rxr get_extents)r{correct_extentss r!test_degenerate_polygonrjsL FEE5>*22O 66'5'"..088OK LL Lr#kwarg)rrctjtd5tdddi|didddy#1swYyxYw)NzQSetting the 'color' property will override the edgecolor or facecolor properties.rrrr)rlwarns UserWarningr)rs r!test_color_override_warningrpsC kE F1 0G0w/0111s5>cjttjd}|jgk(sJy)Nr)rr:zerosrc)polys r!test_empty_vertsrxs* 288F# $D >> r !! !r#ct}|jtd |jtd k(sJ|jd|jtdk(sJy)Nzpatch.antialiased)rset_antialiasedrget_antialiasedrs r!test_default_antialiasedr}sk GE h':;;<  "84G+H'H II I $  "h/B&C CC Cr#ct}|jd|jd|jdk(sJy)Nrr)r set_linestylerrs r!test_default_linestylers< GE      G ++ +r#cBt}|jdk(sJy)Nbutt)r get_capstylers r!test_default_capstylers GE    6 )) )r#cBt}|jdk(sJy)Nmiter)r get_joinstylers r!test_default_joinstylers GE    G ++ +r# autoscale_arcsvg)rlr%rc ptjddd\}}tdddddgtd d d d d gtd d d d d td dd ddtd dd ddtd dd ddgf}t||D]-\}}|D]}|j ||j /y)NrrO)rNr)rrHrr-)rrrs?rr%r&g@nx @rg@i6i@)rrr rrpr1)raxs arc_listsrarcsarcs r!test_autoscale_arcr s||Aq&1HC VQ!B /0 Zc"R 89 Zc"R 8 Zc#c : Zc#c : Zc#c : <=IY'D C LL   r#)rkrpdfepsctddgddddd}tddgddddd}tj|gdd }|jj ||jj |y) Nrrr<r&rrrJrr)r facecolors edgecolors)r rPatchCollectionrrpr)rrrsarc1arc2rs r!test_arc_in_collectionrsy BxQq2 >D BxQq2 >D  & &v&25 7C   & &&s+r#ctddgddddd}tddgddddd}|jj||jj||jd|j dy) Nrrrr r&rrr%)r rrprr6)rrrsrrs r!test_modifying_arcrsx BxQq2 >D Bxa"B ?D   & !!$'NN2NN2r#c <tj\}}tjj dddd}t j ddgddgddgd dgd d gd dgddgddgg}t j|t j|jdsJt j d dgddgddgddgddgddgddgd dgg}|jddddt j|t j|jdsJy)Nr'rr%gffffff?rLg@gg @gffffff@r[g$@g333333?g(\?g{Gz?gQ?g{GzgGz@gq= ףp@gQ @gGz@rg{Gz@gQ@gRQ@g(\@rrOr,g333333?)rrrr>) rrr2rArrowr:rTrrrcrrs r!test_arrow_set_datars%llnGC KK  aAr *E r c b b S b b b  I ;;y"((5??+>!  0 0 2b 88 8 ??1  1 1 3r 99 9FFs )C66C?cbtj\}}|jgggg}|Jy)N)rrr)rrrs r!test_empty_fancyarrowr s1llnGC HHRR $E   r#)]__doc__platformnumpyr: numpy.testingrrrl matplotlibr2matplotlib.patchesrrrrr r r r r matplotlib.testing.decoratorsrrmatplotlib.transformsrmatplotlib.pyplotpyplotrrrrrrrrrrr7rr"rFrXrjrxrrrrrr%r3rrrrrmachinerr#r5r<rMrXr`rirpr}rrrrrrrmark parametrizerrrrrrrrrrrr rrrrr rr#r!r.sA LLLO&88 "-J-<`0Bf60(*)*((")"BB%&'(6)*=><)*=>>9%%+,$?@84(!)!2 ) =/t+8++-9auFF8:?@&'TKL$()* "+ ")*'t+8++-9auFF$(),()*  4 &&()07<>?#734&+,G<!=!H0 (  9+5'BC9+5'BC(9+5'BC0M "<=1>1" D,* , ?#T3 3   <=,>, <=>B: <= :> : r#