rL i 9@ddlZddlZddlZddlZddlmZddlZddlZddl Z ddl m Z m Z mZddlmZddlmZddlmZmZddlmZmZddlmZdd lmZdd lmZm Z dd l!m"Z"e d gd Z#ejHjKdddgejHjKdddgdZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0e"dZ1d Z2e d!gd"Z3e d#gd$Z4e jjjmd%ed&d'g(d)Z7e"d*Z8d+Z9e d,gd-Z:d.Z;e d/gd01d2Z<e d3gd41d5Z=ejHjKd6d7d8gd9Z>e d:gd;Z?y)<N)Path)pyplotrcParams font_manager)_get_data_path)FT2Font)findfontFontProperties)get_glyphs_subset font_as_file)PdfPages) Rectangle)check_figures_equalimage_comparison) needs_usetexzpdf_use14corefonts.pdfcdtd<dtd<dtd<dgtd<d td <d }tj\}}|jd |j d d |ddd|j d d y)NTzpdf.use14corefontsz sans-serifz font.familyz font.size Helveticazfont.sans-serifrpdf.compressionuA three-line text positioned just above a blue line and containing some French characters and the euro symbol: "Merci pépé pour les 10 €"z0Test PDF backend with option use14corefonts=Trueg?centerbottom)horizontalalignmentverticalalignmentfontsize) linewidth)rpltsubplots set_titletextaxhline)r figaxs g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_backend_pdf.pytest_use14corefontsr%s%)H !"*H]H[#.-H "#H  "DllnGCLLCDGGCd& JJscJ"zfontname, fontfile) DejaVu SanszDejaVuSans.ttf)WenQuanYi Zen Heiwqy-zenhei.ttcfonttype*cdttt|gj|k7rt j d|d|t d<tj\}}|jgd|jd||jtjd y) NfamilyFont  may be missing pdf.fonttyper+z Axes Title)fontpdfformat)rr r namepytestskiprrrplotrsavefigioBytesIO)fontnamefontfiler*r"r#s r$test_embed_fontsrC,s  H^H:6 78==I eH<78'H^llnGCGGILLHL-KK UK+r&cttj5}|jdk(sJt j \}}|j gd|j|d|jdk(sJ|j|jdk(sJ dddy#1swYyxYw)Nrr3r7r8r4r5)r r?r@ get_pagecountrrr=r>)r7r"r#s r$test_multipage_pagecountrF<s "**, (3  "a''',,.R   C &  "a'''   "a'''(((s B B55B>cptj}t|5}tdD]=}t j \}}|j d|j|d? ddd|j}|jddk(sJt|dksJy#1swY@xYw)N zThis is a long titler7r8s startxrefr4i@) r?r@r rangerrrr>getvaluecountlen)pdfior7ir"r#ss r$test_multipage_properfinalizerPGs JJLE %+Cr +AllnGC LL/ 0 KKEK * ++ A 77< A %% % q6E>>++s A B,,B5c(|dz }t|5} ddd|jrJ|dz }t|5}|jtjddd|jsJy#1swYjxYw#1swY(xYw)Nza.pdfzb.pdf)r existsr>rfigure)tmp_pathfnr7s r$test_multipage_keep_emptyrVSs G B "   yy{? G B "" CJJL!" 99;;  ""sA<$B<BBc`tjtjdddtjddd\}}tj|dz}t j \}}|j dd|j|gd|j|ddd gd d tjd <ttj5}|j|d t|jjdk(sJ ddddtjd <ttj5}|j|d t|jjdk(sJ dddy#1swY{xYw#1swYyxYw)Nr4r5rr+)rr4rr4)extent)r5r+rr4Tzimage.composite_imager7r8F)npmeshgridarangesinrrset_xlimimshowrr r?r@r>rL_file_images)XYZr"r#r7s r$test_composite_imagergasQ ;;ryyQ*BIIb!Q,? @DAq qAvAllnGCKK1IIa I%IIa"glI+,0CLL() "**, +3 C &399$$%***+-2CLL() "**, +3 C &399$$%***++ ++++s%8F8F$F!$F-ctjd}tjdtj}tj d|ddddf<dt d<tj}|j|dtj}|j|d d |jj|5}|j\}|j j#\}|j%|}|j&sJ|j)}tj*|j-d } dddtj.j1| y#1swY*xYw) Npikepdf)r4r+)dtyperjrTr)resizer7rS)r9dpiRGB)r; importorskipr\zerosuint8r^rrrSfigimager?r@r>PdfopenpagesimagesvaluesPdfImageindexed as_pil_imageasarrayconverttestingassert_array_equal) ridatar"bufr7pageimage pdf_image pil_imagergbs r$test_indexed_imagerts$!!),G 88Krxx 0DIIcNDAqM"&H  **,CLLdL# **,CKKExK0   # 3# ##%$$U+     **, jj**512 3JJ!!$,33s A>E22E;ctjd}|jddtj\}}|j t dddddtjd d d tjtjd  dd}tj}|j||d|jj|5}|jj!Dcic]\}}|t#|} }}ddd dddt$j&ddddt$j&dddd k(sJycc}}w#1swYDxYw)NriSOURCE_DATE_EPOCH0rYme Multipage PDF Test pagetest,pdf,multipagerr4rtzinfoTrueAuthorTitleSubjectKeywordsModDateTrappedr7)metadatar9D:19700101000000Z Matplotlib v, https://matplotlib.orgD:19680801000000ZMatplotlib pdf backend v/True z/Authorz /CreationDatez/Creatorz /Keywordsz/ModDatez /Producerz/Subjectz/Titlez/Trapped)r;rosetenvrrr=rIdatetimetimezone timedeltar?r@r>rsrtdocinfoitemsstrmpl __version__ monkeypatchrir"r#mdrr7kvinfos r$test_savefig_metadatarsP!!),G*C0llnGCGGE!H ($$ !Qx001C1CA1FGI B **,CKKbK/   # ;#&)kk&7&7&9:da3q6 ::; ,"3??"33KL)'//@A!    ;;;s"EEEEE%ctj\}}tjtd5|j t jdddidddtjtd5|j t jddd idddtjtd 5|j t jdd d idddtjtd 5|j t jdddidddy#1swYxYw#1swYxYw#1swYnxYw#1swYyxYw)Nz#Unknown infodict keyword: 'foobar'.)matchr7foobarinvalid)r9rz%not an instance of datetime.datetime.rz 1968-08-01z'not one of {"True", "False", "Unknown"}rfooznot an instance of str.ri)rrr;warns UserWarningr>r?r@r"r#s r$test_invalid_metadatars;llnGC kA CP BJJL(I9N OP kC E8 BJJL'6  88 kE GM BJJL)U9K LM k)B CJ BJJL'4 IJJPP88 MMJJs/)E ?)E )E!)E- EE!E*-E6c0tjd}|jddtj\}}|j t dddddtjd d d tjtjd  dd}tj}t||5}|j||j|ddd|jj|5}|j j#Dcic]\}}|t%|} }}ddd dddt&j(ddddt&j(dddd k(sJy#1swYxYwcc}}w#1swYPxYw)NrirrrYrrrrrrr4rrrr)rrrrrrrr)r;rorrrr=rIrrrr?r@r r>rsrtrrrrrrs r$test_multipage_metadatarsx!!),G*C0llnGCGGE!H ($$ !Qx001C1CA1FGI B **,C # #s C C   # ;#&)kk&7&7&9:da3q6 ::; ,"3??"33KL)'//@A!     ;;;s*#E:F $F:F :FF  Fctjd}dtjd}|j dddd|j dd d d t j 5}|j|d |jj|5}|jdj}dD]X\}tfd|Dd}|Jt|ddJ|jdtj |dzk(rXJ ddddddy#1swYxYw#1swYyxYw)Nri&https://test_text_urls.matplotlib.org/r5r4figsize皙?ztest plain 123plain)urlg?ztest mathtext $123$mathtextr7r8r))z0.1r)z0.4rc3^K|]$}|jjk(s!|&ywNAURI).0afragmenttest_urls r$ z!test_text_urls..s)M1!##''z(5L*LQMs"-- QuadPointsr4H)r;rorrSr r?r@r>rsrtruAnnotsnextgetattrRectdecimalDecimal) rir"fdr7annotsyannotrrs @@r$test_text_urlsrsL!!),G7H **V $CHHS#'z-?H@HHS#,XJh2GHH @ Bu % [[  b ! @SYYq\((F G @ 8MM(((ulD9AAAzz!}(:R(???? @ @@@ @ @@@s+4/D8#A3D,D,D8,D5 1D88EcXtjd}dtjd}|j ddddt j 5}|j|d |jj|5}|jd j}tfd |Dd}|Jt|d dJ|jd |jdt!j"dz k(sJ ddddddy#1swYxYw#1swYyxYw)Nrir)r4r4rrN-)rotationrr7r8rc3XK|]!}|jjk(s|#ywrrrrrs r$rz)test_text_rotated_urls..s"?qaccggH:&>?s**rz0.00001)r;rorrSr r?r@r>rsrtrurrrrrrrrir"rr7rrrs @r$test_text_rotated_urlsrs+!!),G7H **V $CHHS#sRzH; @ Bu % [[  b ! @SYYq\((F?F?E$ $$5,5A AA::a="W__Y%??@ @@ @@@ @ @@@s%/D  A9DD D D  D)c$tjd}dtjd}|j ddddd  t j 5}|j|d |jj|5}|jd j}tfd|Dd}|J|jdtjddzk(sJ ddddddy#1swYxYw#1swYyxYw)Nrirrrrgffffff?ztest tex $123$Ttex)usetexrr7r8rc3\K|]#}|jjdk(s |%yw)rNrrs r$rz%test_text_urls_tex../s'BqaccggH:S1A&ABs!,,r4z0.7r)r;rorrSr r?r@r>rsrtrurrrrrrs @r$test_text_urls_texrs!!),G7H **V $CHHS#'XJc:JHK  @ Bu % [[  b ! @SYYq\((FBFBE$ $$::a=GOOE$:R$?? ?? @ @ @ @ @ @ @s%/D AC:)D:D ?DDctttj5}|j t j dddy#1swYyxYwr)r rosdevnullr>rrS)r7s r$test_pdfpages_fspathr6s< $rzz" #"s CJJL!"""s $AAzhatching_legend.pdfctjd}tddgdddd}tddgdddd}|j||||ggdy ) z.Test for correct hatching on patches in legend)r4r5rrgreenXXXX) facecolorhatchblue)rrrN)rrSrlegend)r"rbs r$test_hatching_legendr;sU **V $C1a&!Q'@A1a&!Q&?AJJ1a|-.r&zgrayscale_alpha.pdfcDtjddddddf\}}tj|dz|dzz }tj||dk<t j \}}|j |dd|jg|jgy)z9Masking images with NaN did not work for grayscale imagesr5rnonegray_r) interpolationcmapN) r\ogridexpnanrrra set_xticks set_yticks)xrddr"r#s r$test_grayscale_alpharFs 88BqGR"W$ %DAq !Q$A+ B&&BrBwKllnGCIIbXI6MM"MM"r&defaultr7eps) extensionsc |j}|j|jtjtj ddddd|j}|jy)NrXrYdrr)c) add_subplot set_axis_offr=r\r_linspace)fig_testfig_refax_testax_refs r$'test_pdf_eps_savefig_when_color_is_nonerRs`""$G  LL B3/0#L@  "F r&ctjddtjt5tj t jddddy#1swYyxYw)z"Test failing latex subprocess callz$22_2_2$T)rr7r8N)rxlabelr;raises RuntimeErrorr>r?r@r&r$test_failing_latexr\sGJJz$' | $0 BJJL/000s *A$$A-ctj\}}|jggd|jt j dy)NT) rasterizedr7r8)rrr=r>r?r@rs r$test_empty_rasterizedrds9llnGCGGBtG$KK UK+r&z kerning.pdfctj}d}|jdd|d|jdd|dy)NuAVAVAVAVAVAVAVAV€AAVVrg?rY)sizeg?)rrSr )r"rOs r$ test_kerningr ks: **,C!AHHQQQHHHQQRH r&cttd}d}t|}|j|t ||5}tt |}dddj||j }|j }h||Dchc] }t|c}k(sJt|t|ksJ|j|jk(sJy#1swYxYwcc}w)Nzfonts/ttf/DejaVuSerif.ttfz%these should be subsetted! 1234567890) rrrset_textr r get_charmapchrrLget_num_glyphs)fpathchars nosubfontsubsetsubfont nosubcmapsubcmapkeys r$test_glyphs_subsetr.ss :; RHFF51 **,CHHT5>?r&zmulti_font_type42.pdfg@cbtjdg}ttj|jdk7rt j dtjdddgdtjd d tj}|jd d dy)Nr(r.r)r1r6r'r2r3r7r,r4r5r6r7r8r;s r$test_multi_font_type42r?s  #6"7 8B BKKO!!%55 )*FF6=*=>RHFF52 **,CHHT5>?r&zfamily_name, file_name)z Noto SanszNotoSans-Regular.otf)FreeMonoz FreeMono.otfctj|g}ttj|j|k7rt j d|dtjd|gdtj}|jddd |jtjd y) Nr.r0r1r6r2r3r5r6uПривет мир!r7r8)r9r rr r:r;r<rr:rSr r>r?r@) family_name file_namer<r"s r$test_otf_font_smokerDs  ;- 0B BKKO!!Y. eK=89FF6;-b1 **,CHHT501KK UK+r&ztruetype-conversion.pdfcdtjd<tj\}}|j dddt t jdd|jg|jgy)Nr+r2rABCDEz mpltest.ttfP)r6r) rrrrr r__file__ with_namerr)recwarnr"r#s r$test_truetype_conversionrKse$%CLL llnGCGGAq'h))-82 GMM"MM"r&)@rrr?rpathlibrnumpyr\r; matplotlibrrrrrr9matplotlib.cbookrmatplotlib.ft2fontrmatplotlib.font_managerr r #matplotlib.backends._backend_pdf_psr r matplotlib.backends.backend_pdfr matplotlib.patchesrmatplotlib.testing.decoratorsrrmatplotlib.testing._markersrr%mark parametrizerCrFrPrVrgrrrrrrrrrrstylecontextrrrr r.r=r?rDrKrr&r$r[s8  ,&<O4(O4+,-#.#&-%+0aW-,.  ,(  +&-0 FJ("J@6@4@@0" ()*/+/()*+9/000,=/"!#!B4)*4 @5 @*+5 @6 @1?689 ,9 ,,-./r&