rL iBTddlZddlZddlZddlZddlmZmZddlZddl m Z m Z m Z ddl mZddlmZmZddlmZe dgdd Ze d gdej,d k(rdnd dZe dgddZdZdZdZej8j;ddej<dz ej<dz ej<dz gej8j;dddgdZdZ e dgdd dZ!e dZ"e d Z#e d!gdd"Z$e d#gdd$Z%d%Z&d&Z'e d'gdd(Z(e d)gdd*Z)e d+gd,Z*d-Z+d.Z,y)/N)assert_array_almost_equalassert_array_equal)check_figures_equalimage_comparisonremove_ticks_and_titles)patches transforms)PathclippingT) remove_textctjddd}tjdtjz|z}t j \}}|j ||d|jdy)N@{Gz??) linewidth)gɿgQѿ)nparangesinpipltsubplotsplotset_ylim)tsfigaxs j/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_simplification.py test_clippingr!s[ #sD!A qwqyAllnGCGGAqCG KKoverflowx86_64gy&1|?)r tolctjgd}tjt|}t j \}}|j |||jddy)N)rr@gjAr)rarrayrlenrrrset_xlimxyrrs r test_overflowr/sO '(A #a&AllnGCGGAqMKK1r"clipping_diamondctjgd}tjgd}tj\}}|j |||j dd|j ddy)N)rrrr)rrr2rrg333333g333333?)rr)rrrr+rr,s r test_diamondr3*sX +,A +,AllnGCGGAqMKKcKKcr"ctgd}|jd}t|jdg|jtj gk(sJtgdtj tjtjg}|jd}t|jdg|jtj gk(sJtgdtj tjtjg}|j}|jd}t|j|jt|j|jy)N)rrrrr7) r9r:clipr5)r5r6)r) r cleanedrverticescodesSTOPMOVETOLINETOCURVE3)path simplifiedsimplified_clippeds r test_clipping_out_of_boundsrH5s ( )D#34Jz**VH5    { ** * (dkk4;;7 9D#34Jz**VH5    { ** * (dkk4;;7 9DJ+;<z**,>,G,GHz'');)A)ABr"ctjjdtjjddz}t j \}}|j |dd}|jj|dj}|dj}|j|}|jd }|jjd k(sJy) NrPsize2roundrsolid_joinstylerTsimplifyic)rrandomseeduniformrrrcanvasdrawget_path get_transformtransform_pathr>r?rLr-rrp1rE transformrFs r test_noiser^LsIINN1 u%*AllnGC Gs ;BJJOO a5>> D1##%I  # #D )Dt,J    # #u ,, ,r"cbd}gd}gd}|||}tddgddgddgddgg|jdd ddfgd}gd }|||}tddgddgdd gddgg|jdd ddfgd}gd }|||}tddgddgddgddgddgg|jdd ddfgd}gd }|||}tddgddgddgg|jdd ddfgd}gd}|||}tddgddgddgddgg|jdd ddfy)Nc(tj\}}|j||}|dj}|dj }|j |}|j d}|jj |}|S)NrTrQ)rrrrXrYrZr>inverted)r-r.rrr\rEr]rFs r _get_simplifiedz9test_antiparallel_simplification.._get_simplified^s,,.R WWQ]!u~~qE'') ''-\\4\0 '')88D r")rrrrrr7)?r7r7rrcrrcr2rr)rcr7rdr7rercg)rcr7rdr7rrc)rcr7rr7r=rcr')rcr7rr7r7rc)rr?)rbr-r.rFs r test_antiparallel_simplificationrf]s  AA A&JCy "Cy "Bx "Cy*)11#2#q&9 ; AA A&JCy "Bx "Cy "Cy*)11#2#q&9 ; AA A&JCy "Bx "Cy "Bx "Cy * )11#2#q&9 ; AA A&JCy "Bx "Cy*)11#2#q&9; AA A&JCy "Bx "Bx "Cy*)11#2#q&9 ;r"angler=roffsetrcc*d}tjjdtjjd|z |z}d|d<d|d<tj||z}tj ||z}|ddj }|ddj}|ddj }|ddj} |dkDr%tddg||g|| g|d|dgddgggd} n!tddg||g|d|dgddgggd } ttj||gj} | jd } t| j| jt| j| jy) Ni!N,rr7rd)r7rrrr)r@)r7rrrTrQ)rrSrTrandrcosmaxminr vstackTr>rr?rr@) rgriscale vert_offsetsr-r.x_maxx_miny_maxy_min p_expectedpp2s r test_angled_antiparallelr|s EIINN8IINN2&/58LLOLO u $A u $A abEIIKE abEIIKE abEIIKE abEIIKE zAq6!5>!5>bE1R5>q6 # !0 1 Aq6!5>bE1R5>q6#!- . RYY1v  !A D !Bj11 kk+z''2r"cRtjjdtjtjdtj dzdtjj ddzz}tj\}}|j|dd}|jj|dj}|dj}|j|}|jd }|j j"d k(sJy) NrrrJrKrrNrOTrQib)rrSrTrlinspacerrUrrrrVrWrXrYrZr>r?rLr[s r test_sine_plus_noisersIINN1  Aruus{E2 3     & - .AllnGC Gs ;BJJOO a5>> D1##%I  # #D )Dt,J    # #u ,, ,r"simplify_curveg rh?c tjtdddtjdfddddgtj tj tj tj tj tj tj tjgd}tj\}}|j||jd |jd y) Nr5r7rr7r7r7)rrrrnone)fc)rr) r PathPatchr rnanrBrD CLOSEPOLYrr add_patchr+r)pp1rrs r test_simplify_curvers    fffrvvqk666kk4;; T[[$++kk4;;8 9   CllnGCLLKKKKr"c |jddj}|jddj}tdtjgddgddgddgddggtj tj tj tj tjg}|djtj|dtdtjgddgddgddgdtjggtj tj tj tj tj g}|djtj|dtddgddgddgdtjgddggtj tj tj tj tjg}|djtj|dtddgddgddgdtjgddggtj tj tj tj tj g}|djtj|dtdtjgddgddgddgddgddgddgddgdtjgddgg tj tj tj tj tjtj tj tj tj tjg }|djtj|dtdtjgddgddgddgdtjgddgddgddgdtjgddgg tj tj tj tj tj tj tj tj tj tj g }|djtj|dtd d gdd gdtjgddgd dgd d ggtj tj tjtjtj tjg}|djtj|dtd d gdd gdtjgddgd dgd d ggtj tj tjtjtj tjg}|djtj|dtddgddgddgdtjgddgddggtj tj tjtjtj tj g}|djtj|dtddgddgddgdtjgddgddggtj tj tjtjtj tj g}|djtj|dtd d gdd gdtjgddgddgd dgd d ggtj tj tjtjtjtj tjg}|djtj|dtd d gdd gdtjgddgddgd dgd d ggtj tj tjtjtjtj tjg}|djtj|dtddgddgddgdtjgddgddgddggtj tj tjtjtjtj tj g}|djtj|dtddgddgddgdtjgddgddgddggtj tj tjtjtjtj tj g}|djtj|dtddgddgddgddgdtjgddgddggtj tj tjtjtjtj tj g}|djtj|dtddgddgddgddgdtjgddgddggtj tj tjtjtjtj tj g}|djtj|dg|j|jD]}|jd d t|t|y) Nrr=rr facecolorrer7rd)g g @)xlimylim)rflattenr rrrBrCrrrrrDCURVE4flatsetr)fig_testfig_refax_testax_refrErs r test_closed_path_nan_removalrs5 1%--/G   a # + + -F  bff2wAQ"b: dkk4;; T^^L ND AJ**46BC  bff2wAQ"bff> dkk4;; T[[I KD 1I))$&AB  bAr7QFRL2r(; dkk4;; T^^L ND AJ**46BC  bAr7QFRL2r(; dkk4;; T[[I KD 1I))$&AB  bff2wAQ"b bAr7QFRL2r( < dkk4;; T^^ dkk4;; T^^ M ND  AJ**46BC  bff2wAQ"bff bAr7QFRL2r( < dkk4;; T[[ dkk4;; T[[ J KD  1I))$&AB  bAr7QK!Q"a2r(C dkk4;; T[[   D AJ**46BC  bAr7QK!Q"a2r(C dkk4;; T[[   D 1I))$&AB  bAr7QFQK"a2r(C dkk4;; T[[   D AJ**46BC  bAr7QFQK"a2r(C dkk4;; T[[   D 1I))$&AB  bAr7QK!Q!Q"a2r(K dkk4;; T[[ dnn & 'D AJ**46BC  bAr7QK!Q!Q"a2r(K dkk4;; T[[ dnn & 'D 1I))$&AB  bAr7QFQK!Q"a2r(K dkk4;; T[[ dkk # $D AJ**46BC  bAr7QFQK!Q"a2r(K dkk4;; T[[ dkk # $D 1I))$&AB  bAr7QFQFQK"a2r(K dkk4;; T[[ dkk # $D AJ**46BC  bAr7QFQFQK"a2r(K dkk4;; T[[ dkk # $D 1I))$&AB, +v{{+3 Kk23H%G$r"c g}tdD]}d|zdz}ddgddgddgddgd|dz z dgd|dz z |g|dz |g|dz dgg}tj||d}tj||ddddff}|j |tj t |dtj}tj|d<tj|d <tj|t |}tj|}|jd t||}|jtj|d |jd |j!}tj||tjk(<t||}|jtj|d y) Ng?gg?r7rr)axisrd)rkrkrr)rangerroll concatenateappendfullr*r rCrBrtileset_size_inches add_artistrrcopy)rrr?rripatternr@rEs r test_closed_path_clippingrgsHa!tc!3K$T{S#J !^S !A NF#; aZ 6A:s"3  '''4a0..'72A2q5>!:; !& GGC $dkk 2E{{E!HE"I GGE3x= )E~~h'H V$ % D ))$&AB F# JJLE%)[[E%4>> !" % D w((@Ar"hatch_simplifyc tj\}}|jtjddddd|j d|j dy)Nr5r7F/)fillhatch)g?g?)rrr Rectangler+r)rrs r test_hatchrsFllnGCLLvq!%sCDKK KK r" fft_peaksc Xtj\}}tjd}|j t tj j tjdtjzdz|ztjt|z}|jj|dj}|dj}|j|}|j!d}|j"j$dk(sJy)NirrrTrQ$)rrrrrabsfftrrblackmanr*rVrWrXrYrZr>r?rL)rrrr\rEr]rFs r test_fft_peaksrsllnGC %A RVVZZqws{1} 5bkk#a&6I IJK LBJJOO a5>> D1##%I  # #D )Dt,J    # #r )) )r"cfd}tjtj|d}|j t |dzdf}t |}|jtjd}t|}t |dk(sJ|ddt jk(sJy) Ns ZwAAAAku+v9UAQAA+Tj6/z8CAADpQ/r/KAMAANlO+v8QBAAAyVn6//UEAAC6ZPr/2gUAAKpv+v+8 BgAAm3r6/50HAACLhfr/ewgAAHyQ+v9ZCQAAbZv6/zQKAABepvr/DgsAAE+x+v/lCwAAQLz6/7wM AAAxx/r/kA0AACPS+v9jDgAAFN36/zQPAAAF6Pr/AxAAAPfy+v/QEAAA6f36/5wRAADbCPv/ZhIA AMwT+/8uEwAAvh77//UTAACwKfv/uRQAAKM0+/98FQAAlT/7/z0WAACHSvv//RYAAHlV+/+7FwAA bGD7/3cYAABea/v/MRkAAFF2+//pGQAARIH7/6AaAAA3jPv/VRsAACmX+/8JHAAAHKL7/7ocAAAP rfv/ah0AAAO4+/8YHgAA9sL7/8QeAADpzfv/bx8AANzY+/8YIAAA0OP7/78gAADD7vv/ZCEAALf5 +/8IIgAAqwT8/6kiAACeD/z/SiMAAJIa/P/oIwAAhiX8/4QkAAB6MPz/HyUAAG47/P+4JQAAYkb8 /1AmAABWUfz/5SYAAEpc/P95JwAAPmf8/wsoAAAzcvz/nCgAACd9/P8qKQAAHIj8/7cpAAAQk/z/ QyoAAAWe/P/MKgAA+aj8/1QrAADus/z/2isAAOO+/P9eLAAA2Mn8/+AsAADM1Pz/YS0AAMHf/P/g LQAAtur8/10uAACr9fz/2C4AAKEA/f9SLwAAlgv9/8ovAACLFv3/QDAAAIAh/f+1MAAAdSz9/ycx AABrN/3/mDEAAGBC/f8IMgAAVk39/3UyAABLWP3/4TIAAEFj/f9LMwAANm79/7MzAAAsef3/GjQA ACKE/f9+NAAAF4/9/+E0AAANmv3/QzUAAAOl/f+iNQAA+a/9/wA2AADvuv3/XDYAAOXF/f+2NgAA 29D9/w83AADR2/3/ZjcAAMfm/f+7NwAAvfH9/w44AACz/P3/XzgAAKkH/v+vOAAAnxL+//04AACW Hf7/SjkAAIwo/v+UOQAAgjP+/905AAB5Pv7/JDoAAG9J/v9pOgAAZVT+/606AABcX/7/7zoAAFJq /v8vOwAASXX+/207AAA/gP7/qjsAADaL/v/lOwAALZb+/x48AAAjof7/VTwAABqs/v+LPAAAELf+ /788AAAHwv7/8TwAAP7M/v8hPQAA9df+/1A9AADr4v7/fT0AAOLt/v+oPQAA2fj+/9E9AADQA/// +T0AAMYO//8fPgAAvRn//0M+AAC0JP//ZT4AAKsv//+GPgAAojr//6U+AACZRf//wj4AAJBQ///d PgAAh1v///c+AAB+Zv//Dz8AAHRx//8lPwAAa3z//zk/AABih///TD8AAFmS//9dPwAAUJ3//2w/ AABHqP//ej8AAD6z//+FPwAANb7//48/AAAsyf//lz8AACPU//+ePwAAGt///6M/AAAR6v//pj8A AAj1//+nPwAA/////w==z> 71: $$ $r"cdtjd<tjd}tjj d}tj |d<tj\}}|j||tjt5|jtjdddy#1swYyxYw)NFz path.simplifyii)rrcParamsrrrSrmrrrpytestraises OverflowErrorsavefigioBytesIO)xxyyrrs r (test_throw_rendering_complexity_exceededrs$)CLL! 9 B  "BvvBtHllnGCGGBO } %" BJJL!"""s $C  C clipper_edgecd}tjd}|jdddd|jddd }|j ||j j tjd |jj tjd |j jd |jjd |jd dy)N) rr7rrrr=rrhrrkr8)figsizer)leftbottomwspacehspace)rrrr)rrkF)r autoscale_onr7rrrk ) rfiguresubplots_adjustadd_axesrxaxisset_major_locatorMultipleLocatoryaxisset_ticks_positionr+)datrrs r test_clipperrs (C **V $CQq1= &V% HBGGCLHHs22156HHs22156HH)HH'KK1r"para_equal_perpc tjgddgdzz}tjgddgdzz}tj\}}|j |dz|dz|j |dz|dzdy)N)rr7rr7rrdrr7r7)r7r7rr7rrdrrrro)rr)rrrr,s r test_para_equal_perprss *aS3Y67A *aS3Y67AllnGCGGAE1q5GGAE1q5$r"clipping_with_nansctjddd}tj|}tj|ddd<t j \}}|j |||jddy)NrgQ@i dgпg?)rr~rrrrrrr,s r test_clipping_with_nansrs\ Ax&A q AvvAeeHllnGCGGAqMKKtr"ctddggdz}t|jgd}|gk(sJtddgddggd d g}t|jgd}|Dcgc]\}}t||fc}}ddgd fddgd fgk(sJtddggd g}t|jgd}|Dcgc]\}}t||fc}}ddgd fgk(sJycc}}wcc}}w) Ngꌠ9Y>)Frk)rrrrr;rM(KAr7r)r rr)rzrFr-r.s r test_clipping_fullrs tTl^a  Aaoo+;o<=J    r2hR !Aq6*Aaoo+;o<=J&0 1dad1gq\ 12h]b"XqM * +, + r2hZ!Aaoo+;o<=J&0 1dad1gq\ 12h]O   2 2s ,C.C4c  tdddtjtjfgtjtjtjtj gtgdtjtjtjtj gg}tgdtjtjtjtjtjtj g}|D]T}|jd}t|j|jt|j|jVtdddtjtjfdd d tjtjfgtjtjtjtj tjtjtjtj g}tgd tjtjtjtjtjtjtjtjtjtj g }|jd}t|j|jt|j|jtd d dtjtjfdd dddg tjtjtjtjtjtjtjtj tjg }td d dtjtjfdd ddddg tjtjtjtjtjtjtjtjtjtj g }|jd}t|j|jt|j|jy)Nrr8r)rr8r)rrM)rr8rrrr5TrQrdrrerrer7) rr8rrrrrrrr5r)r7rd)rrd)rdrd)rdr7)rrdr5) r rrrBrCrrAr>rr?r@)paths expected_pathrEsimplified_paths r test_simplify_closepolyr s.666BFFBFF+;<;; T[[$..IK 4;; T[[$..IK LEI++t{{DKK++tyy23MG,,,5=11?3K3KL=..0E0EFG "&&"&&)9'7RVVRVV,<>dkk4;;dkk4;;H IDO++t{{DKK++t{{DKK++tyy23M llDl1O}--/G/GH}**O,A,AB '&&"&&!8Wg"dkk4;;dkk4;; . /D &'766266*Hgw!7F4++t{{DKK++t{{DKK++t{{DII?@MllDl1O}--/G/GH}**O,A,ABr")-rrplatformnumpyr numpy.testingrrrmatplotlib.testing.decoratorsrrrmatplotlib.pyplotpyplotr matplotlibrr matplotlib.pathr r!machiner/r3rHr^rfmark parametrizerr|rrrrrrrrrrrrrr"r rs G DD* :,D1 2 :,D+8++-9auFF%&D9:C.-"G;^1beeAgruuQwa"@AAr7+)3,B)3X-$#$$EB C h%h%V%B%BP#$$78;-T2 *3 *%D ">"5 6 $%48 9 '()*  0Cr"