rL i>ddlZddlZddlmZddlmZddlmZ dZ edgejdk(rdnddZ ed gd Z d Zed gd ejdk(rdndeddZedgd ejdk(rdndeddZedgd ddZedgdd ejdk(rdnddZedgdd ejdk(rdndd Zd!Zy)"N)image_comparisonc R|jddd|zfddt|ddy) N?rrbk) arrowstylefcec)xyxytextsize arrowprops)annotatedict)axtrs i/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_arrow_patches.py draw_arrowrs2KKS1W~jr1#&301zfancyarrow_test_image.pngx86_64g~jt?)tolc Zgd}ddtjjg}tjt |t |ddt d\}}t|D]?\}}t|D],\}}|||f}t||||jdd .Ay) N)皙?333333?皙?皙?rfancysimpleF)g@)aspect)squeezefigsize subplot_kw) labelleft labelbottom) mpatches ArrowStyleFancypltsubplotslenr enumerater tick_params) rrfigaxsi_rr1i_tt1rs rtest_fancyarrowr9s A (H//5578A||CFCFE$,QIHCQ<?R | ?GCS#XB r2r " NNUN > ??rzboxarrow_test_image.pngcPtjj}t|}d}||zdz}t j d|dz f}d}t t|D]?\}}|jd||z |zdz |z |d||jt|dd  Ay) Ng333333?rgUUUUUU@g?r'g5@centerwr )boxstyler r )har transformbbox) r+BoxStyle get_stylesr0r.figurer1sortedtext transFigurer)stylesnspacing figheightr3fontsizei stylenames r test_boxarrowrOs   ) ) +F F AGWr!I **gy37 8CH!&.1@ 9 A(3. 99??I##>  @@rc tjddd}|j}|jddg|j ddg|j t jddd d d |S) z Convenience function that prepares and returns a FancyArrowPatch. It aims at being used to test that the size of the arrow head does not depend on the DPI value of the exported picture. NB: this function *is not* a test in itself! fancyarrow_dpi_cor_test)2)r'dpirr$)rr)皙?g333333?rS->d)posAposBlwr mutation_scale)r.rD add_subplotset_xlimset_ylim add_patchr+FancyArrowPatch)fig2rs r!__prepare_fancyarrow_dpi_cor_testrc4sq ::/R HD   BKKAKKALL))z -.49<>? Krzfancyarrow_dpi_cor_100dpi.pngTg{Gz?rX)rU) remove_textr savefig_kwargcty)a Check the export of a FancyArrowPatch @ 100 DPI. FancyArrowPatch is instantiated through a dedicated function because another similar test checks a similar export but with a different DPI value. Remark: test only a rasterized format. Nrcrrtest_fancyarrow_dpi_cor_100dpiriFs &'rzfancyarrow_dpi_cor_200dpi.pngcty)z As test_fancyarrow_dpi_cor_100dpi, but exports @ 200 DPI. The relative size of the arrow head should be the same. Nrgrhrrtest_fancyarrow_dpi_cor_200dpirlUs &'rzfancyarrow_dash.pngdefault)rdstylec tj\}}tjdddddddd }tjdddd ddd d }|j ||j |y) N)rrrz-|>zangle3,angleA=0,angleB=90g$@dashedr )r connectionstyler\ linewidth linestylecolorangle3dotted)r.r/r+rar`)r3ree2s rtest_fancyarrow_dashrzasxllnGC  ,11L04+,+3'*  ,A  ! !&*-22:15,-,4(+  -BLLOLLrzarrow_styles.pngmpl20)rnrdrctjj}t|}t j d\}}|j dd|jd||jddddtt|D]E\}}tjd|dzd zz|fd |dzd zz|f|d }|j|Gtgd D]\}}|}|ddk7r|dz }|ddk7r|dz }tddgD]Z\}} |jdt| } tjdd|z|zfdd|z|zf| d }|j|\y)N)r#r#r;rr$)leftrightbottomtopr rpg?g?)r r\)z]-[z]-z-[z|-|-z ,angleA=ANGLEz ,angleB=ANGLEi<ANGLEg?g?)r+r,rCr0r.r/r^r_subplots_adjustr1rErar`replacestr) rHrIr3rrMrNpatchrnjangler s rtest_arrow_stylesrvs + + -F F All6*GCKK1KKAQaq9!&.1 9((#Q *@E LL     rzconnection_styles.pngg9v?cltjj}t|}t j d\}}|j dd|jd|tt|D]7\}}tjd|fd|dzfd |d }|j|9y) N) r;rr$r}r rVrrWr)r rrr\) r+ConnectionStylerCr0r.r/r^r_r1rErar`)rHrIr3rrMrNrs rtest_connection_stylesrs % % 0 0 2F F All7+GCKK1KKA!&.1 9((#qCS>489B8:< U rctjjdd}tjdd|}t j t 5tjj|dddtjjdd}tjdd|}tjj|y#1swYfxYw)Nrj)angleAangleB)rrr)rrgh@) r+rAngle3rapytestraises ValueErrorr.gcar`) conn_style_1p1 conn_style_2p2s rtest_invalid_intersectionrs++22"S2IL  ! !(H2> @B z "   B ++22"U2KL  ! !(H2> @BGGI   s $CC%)rplatformmatplotlib.pyplotpyplotr.matplotlib.testing.decoratorsrmatplotlib.patchespatchesr+rmachiner9rOrcrrirlrzrrrrhrrrs :%1 ./+8++-9auF ?F ?,-.@/@($23+8++-9at $ / (/ (23+8++-9at $ /(/(()t9MN(%&g4+8++-9atE E >*+7+8++-9auF F  r