rL i ddlmZddlmZddlZddlZddlZddlmZddlZddl Z ddl Z ddl Z ddlmZddlmZddlZddlmZmZmZmZmZmZddlmZmZmZm Z m!Z!dd l"m#Z#m$Z$dd l%m&Z&m'Z'm(Z(ddl)m*Z+ddl,Z,e$d gd dZ-e$dgddgd dZ.e,j^jaddd ge$dgddgdZ1dZ2e,j^jadgde#dgdZ3e#dgdZ4e#dgdZ5d Z6d!Z7e,j^jad"gd#d$Z8d%Z9e,j^jad&d'd(gd)Z:e,j^jad"gd*d+Z;d,Ze$d/gd d0Z?ej4jd1e#dgd2ZAd3ZBe,j^jad4d5d5gdgd5d6gd7gd8d5gd9gd:d5gd9gd;dd5gdgd5d>gdggd?ZCe,j^jad@dAdBggdCfdDdEggdFfe jd7dGggdHfd7dIggdJfd>d>ggdKfddggdLfgdMZEe$dNgd1OdPZFe$dQgd1OdRZGe#dgdSZHdTZIdUZJe$dVgd dWZKe$dXgd ddgYdZZLd[ZMe$d\gd d1]d^ZNe$d_gd d`ZOe#dgdaZPe$dbgddgd d1cddZQe$degd d1]dfZRdgZSe$dhgd d1]diZTdjZUdkZVdlZWdmZXdnZYdoZZe,j^jadpe e jdqe jdre jdsjdtfe!e jdqe jdre jdujdvfgdwZ]dxZ^dyZ_e$dzgd d{Z`e$d|gd d}Zad~ZbdZce$dgd ddZde$dgd dZedZfe$dgd dZge$dgejdk(rdndd d1dZidZje,j^jaddjDcgc]}e j|c}dZme$dgd d1]dZne$dgd d1]dZoe$dgd d1]dZpe,j^jadejejddgdZsdZtdZudZvdZwe,j^jadddge,j^jadddgdZxdZydZzdZ{dZ|e#dZ}dZ~ej4jd1dZe$dgddgd d1cdZGdde jZdZdZe#dgdZe,j^jadd>d7ge#dgdZe#dgdZe$dgd1OdZe$dgd1OdZe$dgd1d ddZe#ddZe#dd„ZdÄZe,j^jdīe,j^jad&d'd(ge,j^jadgdƢgdǢge#ddȄZe#dgdɄZdʄZd˄Zd̄Ze$dgd1d dάdτZe$dgd1d dάdфZe$dgd1d ӫdԄZe,j^jaddիe,j^jadd׫d؄Ze,j^jaddګe#dۄZycc}w)) ExitStackcopyN)Path)assert_array_equal)Image)colorsimagepatchespyplotstylercParams) AxesImage BboxImage FigureImageNonUniformImage PcolorImage)check_figures_equalimage_comparison)BboxAffine2DTransformedBboxzinterp_alpha.pngT) remove_textcXtjdd\}\}}tjd}tjd|d<tj tjdtj |d<|j|d |j|d y ) z:Test the interpolation of the alpha channel on RGBA images)rrr).rdtype.none interpolationbilinearN)pltsubplotsnpzerosonestriluint8imshow)figaxlaxrimgs a/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_image.pytest_alpha_interpr5s|ll1a(OC#s ((9 C''&/CK''"''&9:CKJJs&J)JJs*J-interp_nearest_vs_nonepdfsvg) extensionsrcDdtd<tjgdgdggdgdggtj}t j dd \}\}}|j |d |jd |j |d |jdy)z5Test the effect of "nearest" and "none" interpolationr# savefig.dpi) )zg)r)rDcGr rrr$r%zinterpolation nonenearestzinterpolation nearestN)rr*arrayr.r(r)r/ set_title)Xr0ax1ax2s r4test_interp_nearest_vs_nonerM(s H] >?3 -029; CAll1a(OC#sJJqJ'MM&'JJq J*MM)*r6suppressCompositeFfigimagepng)r:cPtjdd}||_tjtj ddz tj ddz \}}tj |dz|dzz||zz }tj d|dzzd|dzzz}||dz z}|j|d d d |j|ddd ddfd dd |j|ddddd fdd d |j|ddd ddd fddd y) NrrdfigsizedpigY@r2rrlower)xoyoorigin)r(figurerNr*ix_arangesinrO)rNr0xyzcr3s r4 test_figimagerf:s **V -C-C 66"))C.5("))C.3*> ?DAq q!tad{QqS !A r!Q$wAqD !A ac'CLLqL1LLTrT1W!GL<LLQ"W#!GL<LLTrT4R4ZSSLAr6ctj\}}|jgdtj}|j ||j dtj|y)N)rrr#r)r(r)plotioBytesIOsavefigseekimread)r0axbuffers r4test_image_python_iorpJsKllnGCGGI ZZ\FKK KKNJJvr6z!img_size, fig_size, interpolation))rrhanning)rrrG)r rG)r#333333@rq)r#g333333"@rGctjjdtjd}tjj t ||zt ||z}||fD]}|j|||j}|jgd|j|d|j}|jgd|j||y)N!N,r<rrrrautor%) r*randomseedr(rrandintset_size_inchesr) set_positionr/) fig_testfig_refimg_sizefig_sizer&rVAr0rns r4test_imshow_antialiasedrSsIINN8 ,,} %C s3>*Ch,?@A'"0 Hh/0    BOOL!IIavI&    BOOL!IIa}I-r6c2tjjdtjd}tjj t |dzt |dz}||fD]}|jdd|j}|j|d|jddg|jddg|j}|j|d |jddg|jddgy) Nrur<r#rsrwr%rrrWrG) r*rxryr(rrzr{r|r)r/set_xlimset_ylim)r~rrVrr0rns r4test_imshow_zoomrksIINN8 ,,} %C s37|Sq\2A'"& C%&    BIIavI&KKRKKR    BIIayI)KKRKKRr6ctjdttjdz }ttjdz }|j d}|dj tj||dj tj||j d}|dj tj||dj tj|y)Ndefault%baseline_images/pngsuite/basn3p04.png%baseline_images/test_image/uint16.tifrrr) r user__file__parentr)r/ropenr(rm)r~rpng_path tiff_pathaxss r4test_imshow_pilr}s IIiH~$$'NNHX%%(OOI   A CFMM%**X&'FMM%**Y'(   1 CFMM#**X&'FMM#**Y'(r6c"tjtjj tjj t ddd}|jtjk(sJtj|dk(sJy)Nbaseline_images test_imagez uint16.tif) r(rmospathjoindirnamerr!r*uint16sumr3s r4test_imread_pil_uint16rsc **RWW\\"''//(";& lD EC 99 !! ! 66#;) ## #r6ctjttjdz }|j t jk(sJt j|dk(sJy)Nrr) r(rmrrrr!r*rrrs r4test_imread_fspathrsP ** X GG IC 99 !! ! 66#;) ## #r6fmt)rPjpgjpegtiffcR|dv}tjjdtjjdd}t j }t j|||dt j }t j|||d|jdt j||}|jdt j||}|jddd |zfk(sJ|jddd |zfk(sJt||y) N)rrri@r)formatrVrSrrr#) r*rxryrzrirjr(imsaverlrmshaper)r has_alphadata buff_dpi1 buff_dpi100arr_dpi1 arr_dpi100s r4 test_imsavers?*IIINN1 99>>$ "D IJJy$s2**,KJJ{D#6 NN1zz)C0HQK4J >>dAq9}5 55 5   aY7 77 7x,r6cddgddgddgg}tj}tj||d|j d tj |}t tj||dddddd fy) N)?r)rrr)rrr)rrr)rrr)rrrrPrrr#) rirjr(rrlrmrr*rH)img_databuffread_imgs r4test_imsave_python_sequencesrs /* /* /*H :: CB 77: & (( (r6c\ddlm}tj}ddi}t j |ddgddggd| t |dk(sJtj|}|jjDcic]\}}||j|}}}|d dk(sJycc}}w) Nr)TAGS_V2 descriptionz test imagerrr#rrImageDescription) PIL.TiffTagsrrirjr(rlenrrtag_v2itemsname)TAGSrrrkvtagss r4test_imsave_pil_kwargs_tiffrs, **,C.JJJsaVaV$V K z?a   CB(* (9 :1DGLL!O :D : " #| 33 3 ;sB( image_alphac4tjjdtjjdd}t j dd\}\}}}|j |dd|j |dd|j |dd y) Nrrr#rr$)alphar&?rG)r*rxryrzr(r)r/)Zr0rKrLax3s r4test_image_alphar swIINN1 q!A<<1-C#sCJJq6J2JJq6J2JJq9J5r6mpl20cptjjdtjjddd}tj|dz}|j dd\\}}\}}|j |d|j |d|j |d|j |dtj|tjd fd }tj|tjd dtjfd } |j dd\\}}\}}d|dddddf<|j |d|dddddf<|j |d | dddddf<|j | d | dddddf<|j | y) Nrurr#rDrrr?)rrraxisrC) r*rxryrzr.r)r/ concatenater,full) r~rrgbfrgbuax0rKrLrrgbafrgbaus r4test_imshow_alpharsjIINN8 99>>!Q "D 88D3J D'00A6Zc3#sJJt3JJJt4J JJt3JJJt4J NND"'')"45A >E NND"'')S"(("CD1 ME&//15Zc3#sE!Q'NJJuE!Q'NJJuE!Q'NJJuE!Q'NJJur6cddlm}tj\}}|j t j djddd}d\}}|jj||g\}}|d|j||}|j|d k(sJd \}}|jj||g\}}|d|j||}|j|J|j|j t j djddd }d\}}|jj||g\}}|d|j||}|j|d k(sJtj\}}|j t j djddgd  }d\}}|jj||g\}}|d|j||}|j|dk(sJd\}}|jj||g\}}|d|j||}|j|Jd\}}|jj||g\}}|d|j||}|j|Jtjdjd} |j t j djdd| |jz}d\}}|jj||g\}}|d|j||}|j|d k(sJy)Nr MouseEventrSrrr)r\rrmotion_notify_event,)g333333$@rrY)rrrrextent)?r7)rr){Gz?g{Gzrr transform)r#rr)matplotlib.backend_basesrr(r)r/r*r`reshape transDatarcanvasget_cursor_dataclearrscalerotate) rr0rnrrbrcxdispydispeventtranss r4test_cursor_datar2s<3llnGC 299S>))"b1' BB DAq<<))1a&1LE5 ,cjj% GE  e $ ** * DAq<<))1a&1LE5 ,cjj% GE  e $ ,, ,HHJ 299S>))"b1' BB DAq<<))1a&1LE5 ,cjj% GE  e $ ** *llnGC 299S>))"b1:J KB DAq<<))1a&1LE5 ,cjj% GE  e $ ** * DAq<<))1a&1LE5 ,cjj% GE  e $ ,, , DAq<<))1a&1LE5 ,cjj% GE  e $ ,, , J  Q  & &s +E 299S>))"b1"R\\1  3B DAq<<))1a&1LE5 ,cjj% GE  e $ ** *r6zxy, datar?rg@rg!@g#@g@Ur]c`ddlm}tjgd}tjgd}|tjddfdz|ddtjfdzz}t j \}}t||j|j|j|jf}|j||||j||j|jdz |j|j|jdz |j|jj|\} } |d|j | | } |j#| |k(sJ|j#| |fy)Nrr)rrr r)rrrr#rrrr)rrr*rHnewaxisr(r)rminmaxset_data add_imagerrr rr r ) xyrrrbrcrdr0rnrrrrs r4test_cursor_data_nonuniformrysC4 !"A !A "**a-!a2:: .11AllnGC QUUWaeegquuw$H IBKK1aLLKK! QUUW%KK! QUUW%<<))"-LE5 ,cjj% GE  e $ ,Or/A/A%/H$.OO ,r6z data, texti'i'z [10001.000]grh|?g/$?z[0.123]r[]g?z[1.0000000000000000]z[-1.0]z[0.00]cddlm}tj\}}|j |}|j j ddg\}}|d|j||}|j|j||k(sJy)Nrrr) rrr(r)r/r rr format_cursor_datar ) rtextrr0rnrrrrs r4test_format_cursor_datar$sx4llnGC 4B<<))1a&1LE5 ,cjj% GE !3!3E!: ;t CC Cr6 image_clip)r cddgddgg}tj\}}|j|}tjdd|j }|j |y)Nrrr#rrr)radiusr)r(r)r/r Circler  set_clip_path)dr0rnrpatchs r4test_image_clipr-sT Q!QAllnGC 1B NN6!r|| DEUr6image_cliprectctj\}}ddgddgg}|j|d}tjddd|j j }|j|y) Nrrr#rrrrrrrr)rwidthheightr)r(r)r/r Rectangleaxesr r*)r0rnr+rrects r4test_image_cliprectr7sgllnGC Q!QA 1\ *B    10A0A CDTr6ctjdjd}|j}|j |dddddfdd|j dd|j dd|j}|j |dd|j dd|j ddy)NrS)rrrrrrr')rrrr)r&rr#)r*r`r r)r/rr)r~rrrns r4test_imshow_10_10_1r9s ))C.  -C    BIIc!Q'l*\IJKK1KK1    BIIcLIAKK1KK1r6ctj\}}tjdj d}t j t5|j|dddy#1swYyxYw)N)rrrrr r(r)r*r`r pytestraises TypeErrorr/r0rnrs r4test_imshow_10_10_2rAUllnGC ))C.  -C y ! # A00A9ctj\}}tjdj d}t j t5|j|dddy#1swYyxYw)Ni)rrrrrr<r@s r4test_imshow_10_10_5rErBrCno_interpolation_originctjd\}}|djtjdj ddd|djtjdj dd y) NrrrS)rrXrYr$)r\r&rr%)r(r)r/r*r`r )r0rs r4test_no_interpolation_originrHsi||AHCFMM"))C.((1' &(FMM"))C.((1MHr6 image_shift)rr:c @tddDcgc]%}tddDcgc] }d|z d|z zc}'}}}d}d}tj\}}|j|t j d||ddf|j dycc}wcc}}w)NrrSgMk&Agk&Ar$)normr&rrw)ranger(r)r/r LogNorm set_aspect)rcrbimgDatatMintMaxr0rns r4test_image_shiftrRs?DQ}M!uQ}5!AA 5MGM D DllnGCIIgFNN,FD!S)+MM&6MsBB BBctjddg}|jgdd}tjtj ddj dd }|j|d gd d d }dx}}|j| |g|j| |g|jg|jgtj}|j|d|jdtj |}t#|dddf\}}} } t#|dddf\}}} } |dk7sJdy)NrrUrvF)frameon rWrrrrrYrrr$gray)r\rr&cmapr)rrr) facecolorrr]rSz.Expected a non-green edge - but sadly, it was.)r(r^add_axesr*tiler`r r/rr set_xticks set_yticksrirjrkrlrmr) r0rnrrrbrcrrgbas r4test_image_edgesres( **aV $C lE 2B 77299R=" % - -b! 4D 40B!'f  6B IAKK!QKK!QMM"MM" **,CKKyK)HHQK CBR1XJAq!QR2YJAq!Q 8EEE8r6image_composite_background)rr ctj\}}tjdj dd}|j |gd|j |gd|j d|jddgy) NrVrr#)rrrWrr)rrrWr)rrrrr)r(r)r*r`r r/ set_facecolorrr@s r4test_image_composite_backgroundriskllnGC ))B-  1 %CIIc-I(IIc-I(^$KKBr6image_composite_alphactj\}}tjd}d|dddddf<tjtj dddtj ddddddf|dddddf<tjd }d|dddddf<d|dddddf<tjtj dddtj ddddddfddtj f|dddddf<|j|gd d |j|gd d |j|gd|j|gd|j|gdd |j|gdd |jd|jddg|jddgy)z{ Tests that the alpha value is recognized and correctly applied in the process of compositing images together. ) rrNr皙?皙?r]r#)rmrlr)rrrr333333?)rr)rr#rr333333?)r#rrrr)rrrr)rrrr#)rrr#r)rrrrr) r(r)r*r+rr`rr/rhrr)r0rnrarr2s r4test_image_composite_alpharss llnGC ((; CC1aL>> 1c3 1a!5dd!;<>C1aL 88K DDAqMDAqMNN 1c3 1a!5dd!;<>>?mMDAqMIIc,cI2IIc,cI2IIc,I'IId>&)L ; && &r6ctj}t|}tjdt j d}|j|d|d<|jddk(sJdyNrVr rr##@r'r value changed) r(rrr*r`rr r_Arnrrds r4test_axesimage_setdatars` B 2B "E"**62AKKNAdG 55;! ,_, r6ctj}t|}tjdt j d}|j|d|d<|jddk(sJdyr) r(gcfrr*r`rr rr)r0rrds r4test_figureimage_setdatarsa '')C S B "E"**62AKKNAdG 55;! ,_, r6zimage_cls,x,y,a@@g(@rg@)r#rcptj}||}|j|||dx|d<x|d<|d<|jd|jdcxk(r|j dcxk(r dk(sJdJd|j|||j g|jdy)Nrrr'rr])r(rrr_Ax_Ayr r) image_clsrbrcrdrnrs r4test_setdata_xyars B 2BKK1aAaD1Q4!D' 55;"&&) 5rvvay 5A 5FF 5FF 5KK1aii!''2/0r6cddlm}tjj dtjj dd}t jdd\}}|dj|}|dj|}t j||dt j||dtj}t j|dtj|j}|j|}d}|jd D]} || d } | d |k7sJy) Nr) ElementTreerrrr)rnr9rr r2) xml.etreerr*rxryrzr(r) pcolormeshcolorbarrirjrkgetvalueparseiter) rrr0rnp1p2rtreer2r s r4test_minimized_rasterizedrs&IINN1 99>>"b !Dll1a GC A  $ B A  $ BLL1LL1 :: ValueErrorr(rmurllibrequesturlopen)rurlfiles r4test_load_from_urlrs > #J JD ||w.eB 8 \\^ $ $ & 'C z)> ? 3    $ 4s1C .C CC"log_scale_imagectjd}d|ddd<tj\}}|j |gddddd|j d y) Nrrr)rrSrrSviridisr]rw)rr[vmaxvminaspectlog)yscale)r*r+r(r)r/r)rr0rns r4test_log_scale_imager&sY A AccFllnGCIIa(yqrFF%Fr6 rotate_imagecd}tjdd|x}}tj||\}}tj|dz|dzz dz dtjzz }tj|dz dz dz|dz dz dzz dz dtjzdzdzz }||z }t j dd\}} | j|dd d gd d } tjd| jz} | j| | j\} } }}| j| | | | | g|||||gdd| | jdd| jddy)Nrrrrrrr$rrY)rrT)r&r[r\rclip_onzr--r#)lwrrrr)r*r`meshgridexppir(r)r/r rotate_degr  set_transform get_extentrhrr)deltarbrcrJYZ1Z2rr0rKim1 trans_data2x1x2y1y2s r4test_rotate_imager1s} E IIdC ''A ;;q! DAq !Q$A+" #q255y 1B &&QUcMA%!a%3(::;a? @ ruu9s?S  "B RA||Aq!HC **Qf9#*D  :C*''+cmm;Kk"^^%NBBHHb"b"b !BBB#71" $LLALLAr6ctj}tjd}t j ||d|j dt j|}|jdd|jk(sJy)N)iiArPrrr) rirjr*r+r(rrlrmr)rrr3s r4test_image_preserve_sizerMs` ::  ;BMM12LLF $ Bi ,,-M58uF">  ;B MM%&LLFN)c">r6 mask_imagectjdd\}\}}tjd}tj|ddddf<|j |dtj dt}d|ddddf<tjjtjdtj|}|j |dy)NrrrrGr%r T) r(r)r*r,nanr/r+rr. masked_arrayr)r0rKrLrs r4test_mask_imager8sll1a(OC#s A&&Aac1Q3hKJJq J* t$AAac1Q3hK 2776;Q?AJJq J*r6ctjdtj}tj\}}|j ||j jy)NrR)r*rr6r(r)r/r  draw_idle)rr0rns r4test_mask_image_allr;s@ 776266 "DllnGCIIdOJJr6zimshow_endianess.pngcttjd}tj||\}}tj|dz |dz }t j dd\}\}}t ddd}|j|jd fi||j|jd fi|y) NrrrrrrYrGr)r\r&r[zf8) r*r`rhypotr(r)dictr/r)rbrJr rr0rKrLkwargss r4test_imshow_endianessr@s " A ;;q! DAq QAAll1a(OC#s  JFCJJqxx)&)CJJqxx)&)r6imshow_masked_interpolationx86_64r)rrr ctjdjddd}d}tjd||zdz }t j ||zt j||}d |d <d |d<t j|d<t j|jd}d|d<t jj||}tjdd\}}t!t"j$}|j'd|j'dt)||j+D]<\}} | j-|| j/||||| j1d>y)NrrarcrrrWrrrrr r]rgj@)rWr)rWrWrT)rrWr#rrw antialiased)rKr[r&off)rz colormapsr-r rr*r`rr inf zeros_likerr.r7r(r)sortedr _interpd_removezipravelrIr/r) r[Nrrmaskr0ax_gridinterpsinterprns r4 test_imshow_masked_interpolationrTsF == # 1 1s#3 1 OD Aaac!e,A 99QqS & . .q! 4DDJDK66DL ==  % %f -DDK 55  dD )D<<1%LCV%%&G NN6 NN=!'7==?3  V $QT @ r6cVtjddgdtjggy)Nrrr#)r(r/r*r6r6r4test_imshow_no_warn_invalidrWsJJABFF $%r6r!zu2 u4 i2 i4 i8 f4 f8cDtjd|jd}|jdk7r|dz}|dk}|dkD}|jdk(r|dz }t j \}}|j |j}||dk(jsJ|jdk(r4||d k(jsJ|jjdk(sJy||dk(jsJ|jtjk(sJy) Nrr )rrrrr#urrrrDfr) r*r`r kindr(r)r/ get_arrayallr!r.)r!rtoo_lowtoo_high_rnouts r4$test_imshow_clips_rgb_to_valid_rangerbs  ))Cu % - -k :C zzS r AgGSyH zzSCi LLNEAr ))C. " " $C LA  " " $$ $ zzSH "'')))yy~~$$$H $))+++yyBHH$$$r6zimshow_flatfield.pngctj\}}|jtjdd}|j ddy)NrrGr%rr)r(r)r/r*r,set_climr0rnrs r4test_imshow_flatfieldrfs9llnGC 2776?) C 3BKK1r6zimshow_bignumbers_real.pngcdtd<tj\}}tjgdgdg}|j |}|j ddy)NrGrh)rrgMD)rrrrr)rr(r)r*rHr/rdrjs r4test_imshow_bignumbers_realrnsN'0H "#llnGC ((O\2 3C 3BKK1r6 make_normc,tjdSNr)r SymLogNormrVr6r4rssV  q !r6c,tjdSrq)r PowerNormrVr6r4rsrssV  a r6ctj\}}tjtd5|j gg|}dddj gd|jjtjt5|j|jjdddy#1swYxYw#1swYyxYw)Nz.Attempting to set identical low and high xlimsrrK)rrxr) r(r)r=warns UserWarningr/ set_extentr rr> RuntimeError make_image get_renderer)ror0rnrs r4test_empty_imshowrsllnGC kL N/ YYt)+Y ./MM.!JJOO | $1 cjj--/011 // 11sC*CCC#ctj\}}|jtjdtj |j jy)Nrur )r(r)r/r*r+float16r rr0rns r4test_imshow_float16r#s:llnGCIIbhhvRZZ01JJOOr6ctj\}}|jtjdtj tj tj tjdr tntjt5|jjdddy#1swYyxYw)Nrur equiv)r(r)r/r*r+ longdoublecan_castfloat64rr=ryrzr rrs r4test_imshow_float128r*syllnGCIIbhhvR]]34R]]BJJH)+||K( s "CCctj\}}|jtjddgddggt y)NTFr )r(r)r/r*rHrrs r4test_imshow_boolr3s5llnGCIIbhhu t}5TBCr6ctj\}}|jtjdtj |j jy)Nr)r(r)r/r*rr6r rrs r4test_full_invalidr8s:llnGCIIbggh'(JJOOr6z fmt,counted)rs colorimage)r9s   (E 11 1r6ctj\}}|jdggd|j|j |j |j cxk(rdk(sJJy)Nrrrrv)r(r)r/relim autoscaleget_xlimget_ylimrs r4 test_relimrRs\llnGCIIseLI)HHJLLN ;;=BKKM 3V 33 33 3r6crtj\}}|j|jddgddggdddd}|j dd|j j tj|j jd dd fdk(jsJy) NrrwrXrZF)rrr[rrvr.r#) r(r)rr/rr rr*rH buffer_rgbar]res r4test_unclippedrZsllnGCOO QFQF#F;M  /BFFVF$JJOO HHSZZ++- .sBQBw 71 < A A CC Cr6c6tjd\}}|D]}|j|djddgddggdd}|j d|j |dj tj}|j|d h|jd hk(sJ|djd tj}|j|d |j|jk7sJy) Nrrrr#rwr)rrrgbarrD)r]r)r) r(r)rr/r* set_clip_boxbboxrirjrkrr)r0rrnr buf_before buf_afters r4test_respects_bboxrfs||AHC  QAA'| LBTOOCFKK JKK 6K* #Z " #v -- -FJJGJ IKK &K)    I$6$6$8 88 8r6ctj\}}|jtjd}tj j dgdg}|j|dk(sJtj j dgdg}|j|dk(sJtj}|j|dk(sJy) NrrTrPr Fz[0]z[nan]) r(r)r/r*r+r.r7r"r6)r0rnrrs r4test_image_cursor_formattingrxsllnGC 288F# $B 55  qc  /D  &$ .. . 55  qc  0D  &% // / 66D  &' 11 1r6ctjdd}tj||\}}tjd|dz dzz|dz z}||j z }t j d}|j}|j|||d |j}|tj|} || d <|j| d y ) zPer-pixel alpha channel test.rrrrrg[(\?rrG)rr[r&).r]r%N) r*rrrrrzrGryr/r r) r~rrbxxyyzzrr[rnrs r4test_image_array_alphars AqA [[A FB SQ'2=9 :B ME == #D    BIIbD IB    B "  "2& 'DDMIId)I,r6ctjtd5tjt j dddgdddy#1swYyxYw)Nzalpha must be a float, two-drrRrr)r=r>r?r(r/r*r+rVr6r4!test_image_array_alpha_validationrsA y(F G3 288F#Aq62333s -AActtjd}|jdt j dd}|j gd}tjgdgt }|j|d |d d }|jd |jj|j|jjd d }|j!|j#|dggdzzj$j'dzj)t*}tj,||k(sJy)Nautumn_r lightgrey)color)gffffff?rorSrTrv)r]r]r]rrrr+O_Brr]r]r]rrr"r rwr)rr[rrrFrrrrD)rrzrG set_underr(r^r]r*rHrr/rr rr}rr[rKTrNrr{r])r[r0rnrr from_imagedirect_computations r4test_exact_vminrs  j) *DNNN% **ZS 1C l #B 88 MN D 4T DBGGENJJOOszz223A6q9J 1#,//55789C? fSk 66* 22 33 3r6image_placementcTtj\}}|jgdgdddtjj d|j tjjdddd d d d |jdd|jddy)zK The red box should line up exactly with the outside of the image. )rrrrr)rrrrrraro)rrrurrrr$r]r)r[rr&rrgrnN) r(r)rhr*rxryr/randnrrrs r4test_image_placementrs llnGCGGO_CCG@IINN8IIbiioob"%GL"!5KKeKKer6c@eZdZdZdZfdZdZedZxZ S) QuantityNDc\tj|j|}||_|Sr)r*rviewunits)cls input_arrayrobjs r4__new__zQuantityND.__new__s'jj%**3/  r6c(t|dd|_yNr)getattrr)selfrs r4__array_finalize__zQuantityND.__array_finalize__sS'40 r6c|t|dd}t| |}t|ts| t ||}|Sr)rsuper __getitem__ isinstancer)ritemrret __class__s r4rzQuantityND.__getitem__s@gt,g!$' c: &%*;S%(C r6ct||}d|vrtSt|dk(r0|d}t|dd}|tj|fi|}nXt|dk(rC|d}|d} t|dd} t| dd} | | n| } | | n| } |tj tj fvr| | k7rt| }n|tjk(r| d| }n|tjk(r | d| d }ng|tjtjtjtjtjtjfvrd}ntS||j!tj"| j!tj"fi|}ntS|tj$|}|St'||}|S) Nrarrr dimensionlessr*z/())rNotImplementedrr*raddsubtractrmultiplydividegreater greater_equalequal not_equalless less_equalrndarrayrHr) rufuncmethodinputsr?funci0unitout_arri1u0u1s r4__array_ufunc__zQuantityND.__array_ufunc__suf% F?! ! v;! B2w8D2::b>4V4G [A BBWo6BWo6BzrBzrB--8$$"++%Qrd|"))#Rt1~2::r'7'788R\\77BMM33%%2772::. 0CNvNG! ! <hhw'G!$/Gr6c@|jtjSr)rr*r)rs r4rz QuantityND.vsyy$$r6) __name__ __module__ __qualname__rrrrpropertyr __classcell__)rs@r4rrs, 1%N%%r6rctddgd}|dd\}}tj|jtjddgk(sJ|j dk(sJtj||zjtjdgk(sJ||zj dk(sJ||z j dk(sJt jt5|tddzdddy#1swYyxYw)Nrrmr#zm*mzm/(m)s) rr*r]rrrr=r>r)qq0q1s r4test_quantityndr sAq63A qTFB 66!##QF++ ,, , 77c>> 6627++QC0 11 1 G??e ## # G??g %% % z "  Z3    s C66C?cttjdd}tj\}}|j ||j jy)NrRr)rr*r,r(r)r/r r)rr0rns r4test_imshow_quantityndrs> RWWV_c *CllnGCIIcNJJOOr6ctjddtj}d|ddddf<tjj |d}d |j ddddf<t jd jd }|j}|j|tjd ddd|}|jtjdd|j|tjd ddd|}|jtjdd|jdd|j}|j|tjdddd||j|tjdddd||jddy)Nrrr r]rrFrTrwr!rrDr0rG)rKrr&r[r)rrrrrrrrrr)r*rrr.rHrPrzrGr-r)r/r rMrrr)r~rr masked_datar[rnrs r4test_norm_changer s 7761BJJ /DD1aL%%++d+/K!%KQqS!A#X == # 1 1 1 &id  LBKK  bq12 ;V^^1%E(   NBKK  bq12FFgF&    BIId))r:!GIIk 0 0bq A#94IFFgF&r6rbc.tjd|tj}d|ddddf<|j}|j |t j d|jdd tjd|tj}d |ddddf<|j}tjd jd }|j |t jd|jd| y)Nrr g@xDrrrrDrGr)rKr&r[irr) r*rrr)r/r rMrrzrGr-r)r~rrbrrnr[s r4test_huge_range_logr<s 7761BJJ /DD1aL    BIIdQTXXZ@%I7 7761BJJ /DD1aL    B == # 1 1 1 ? :Au U# qq E"q )#*7!"  , q 4%q 3%q   "q d#q **62q ))   a}d K  q ))   a}d K  r6znonuniform_and_pcolor.pngctjdjddd}t|ddgD]\}}t ||}|j t jdd zt jdd zt jd jd|j||d jt jd d zt jd d zt jd jd|D]$}|j|jd &y)NrurTr#T)sharexshareyrGr'r%rrrr)r) r(r^r)rMrrr*r`r r pcolorfastrr)rrnr&rs r4test_nonuniform_and_pcolorr!qs  **V $ - -aT - JC y*&=>M R} = BIIaLA%ryy|q'8IIaL((0 2 R  F ! 299Q<1,biil.B.B6.JL  Gr6znonuniform_logscale.pngcztjdd\}}tdD]}||}t|}|j t j dddzt j dddzt j djd|jdd|jdd|jd|dk(r&|jd d |jd d |dk(r&|jd d |jd d |j|y) Nr#r)ncolsnrowsrrrrurr)base)r(r)rLrrr*r`r rrset_box_aspect set_xscale set_yscaler)r`rrrnrs r4test_nonuniform_logscaler)s \\ +FAs 1X V R  BIIaOq("))Aq/Q*>IIaL((0 2 Ar Ar ! 6 MM%aM ( MM%aM ( 6 MM%aM ( MM%aM ( Rr6zrgba_antialias.pngg{Gz?)r rrctjdddddd\}}d}tj||f}d|dddddf<tj||z dz }tj||z dz }tj ||\}}tj |dz|dzz}d } d } tjtjdz| |z| |dzzdz zz} d| dt|dz ddf|dt|dz ddfd k<d | dt|dz ddf|dt|dz ddfd k<| ddt|dz df|ddt|dz df<tj|ddddf<d|ddddf<d|ddddf<d|ddddf<d|ddddf<ttjj} | jd| jd|j!}|dj#|d| dd|dj%|dz dz |dz dzg|dj'|dz dz|dz d z g|d j#|d| dd|dj#|dd | dd!|d"j#|dd#| dd!y)$Nr) @r+FT)rUrrconstrained_layoutr]rrrKrrrprWrXg.AFZg.ryellowcyanrrGg333333r#)r&r[rrrwr)r&interpolation_stager[rrr#r)r(r)r*r,r`rsqrtrarr{r6rr,RdBu_rset_overrrr/rr) r0rrOaarbrcrJr Rf0rrdr[s r4test_rgba_antialiasr=s||Aq*U#(TCHC A !QBBssAvJ ! q3A ! q3A ;;q! DAq 1q!t A B A ruuqyBFQAX\123A.0Ais1Q3xilOAis1Q3xilOc)*-.Ais1Q3xilOAis1Q3xilOc)*C!HIBq#ac()|vvBr"ube|Br"ube|Br"ube|Br"uc#g~Br"uc#g~  DMM(NN6 ++-CFMM"IDt#MNFOOQqSVQqSV$%FOOQqSVQqSV$%FMM"IDt#MNFMM"F$S2 FMM"F$S2r6)rPctjjdtjjdd}|j }|j |ddd|j }|j |dddy) z[ Show that interpolation_stage='auto' gives the same as 'data' for upsampling. *N,rr'rrr&r[r6rwNr*rxryrzr)r/r~rgridrns r4!test_upsample_interpolation_stagerDszIINN: 99>>!Q D    BIId*9"(*    BIId*9"(*r6ctjjdtjjdd}|j }|j |ddd|j }|j |dddy)z] Show that interpolation_stage='auto' gives the same as 'rgba' for downsampling. ruirwrrr@NrArBs r4#test_downsample_interpolation_stagerFszIINN8 99>>$ %D    BIId&y"(*    BIId&y"(*r6cRdD]N}tjd|i5tjddggj |k(sJ dddPdD]7}t j t5|tjd<ddd9y#1swYxYw#1swYPxYw)Nrrzimage.interpolation_stagerr)DATAfooN) rz rc_contextr(r/get_interpolation_stager=r>rr)vals r4test_rc_interpolation_stagerNsI ^^8#> ? I::1vh'??ASH HH I II%< ]]: & <8;CLL4 5 < << I I < r)r~rr{axtsaxrss r4test_str_normsr`$s r2#b(A   Q "DGNN15N!GNN15rN*GNN18N$GNN18"2N6GNN17"N5   Aq !DGNN16>>+N,GNN16>>r2N3GNN16,,q9N:GNN16,,qrKNLGNN17N2 Qq!&& '6>> 99 9 z ") Qqx()))s G--G6ctjtjjt }t jtd5|tjdddddt jtd5|tjdtjddddt jtd5|tjdtjddddt jtd5|tjdtjddddt jtd 5|tjdtjddddt jtd 5|tjdtjtjddddt jtd 5|tjdtjdjdddtjd}d |j_t jtd 5|tjd|dddy#1swY|xYw#1swY6xYw#1swYxYw#1swYxYw#1swYdxYw#1swYxYw#1swYxYw#1swYyxYw)Nrzincompatible function argumentsr)rrzdifferent dimensionalities)rrrz3D input array must be RGBA)rrr#z3D output array must be RGBAzmismatched typeszmust be C-contiguousFzOutput array must be writeable) functoolspartialrz_imageresamplerr=r>r?r*r+rr.rflags writeable)reras r4test__resample_valid_outputrh:s;  !4!4 KH y(I J)&!4() z)E F8&!288I#678 z)E F8)$bhhv&678 z)F G;)$bhhy&9:; z)G H;)$bhhy&9:; z); <?&"((+RXXf-=>? z)? @7&!288F#3#5#567 ((6 CCII z)I J(&!3'((#))8888;;;;??77 ((s`K*0K7&0L90L 0L?L+:L8M*K47LLLL(+L58MM ctj}t|}tjt d5|j dddtjdtjd}|j||j dk(sJ|j|j k(sJy#1swY}xYw)Nz"You must first set the image arrayrrVr r) r(rrr=r>r| get_shaper*r`rr rget_sizers r4test_axesimage_get_shaperlQs B 2B |+O P  "E"**62AKKN <<>V ## # ;;=BLLN ** * s CCctjj}tjdj d}|j ||j|jdk(sJ|j |tjd|jz|jdk(sJ|j ||jd|jdk(sJy)NrrRrrwrr)rr) r(r^ryr*r`r r/r get_aspectrrr rs r4.test_non_transdata_image_does_not_touch_aspectro]s  ! ! #B 1  f %BIIbBLLI) ==?f $$ $IIbHJ,,Q/",,>I? ==?a  IIbBLLI3 ==?a  r6zdownsampling.pngg ףp= ?cPd}tj||z dz }tj||z dz }tj||f}d|dddddf<tj||\}}tj|dz|dzz}d}d}tj tj dz||z||dzzdz zz} d| dt|dz ddf|dt|dz ddfdk<d| dt|dz ddf|dt|dz ddfd k<| ddt|d z df|ddt|d z df<|} tjdd d d \} } | dj| ddd| djdd| djdd| djdt| jddgdgdD]3\} } }| j| | |d| jd| d|d5y)Nirr]rrrSrrrpr#)rr compressedrUlayoutr'rGrr8)r&r6r[}rr-r;Zoom)rGrGrqrqrw)rrrrrwzinterpolation='z ' space='')r*r`r,rr7rarr{r(r)r/rrrIrMflat)rOrbrcr:rJr r;r<rrdr0rrnrSspaces r4test_downsamplingryhs? A ! q3A ! q3A !QBBssAvJ ;;q! DAq 1q!t A B A ruuqyBFQAX\123A13Aks1q5zk1na QU Q'#-.12Aks1q5zk1na QU Q'#-.1c!a%jk>*Bq#a!e*+~ A||Aq&FHCIQiV"$IsC IsC I !"0C!IKCFE !6u  ! vhjqAB Cr6zdownsampling_speckle.pngcdtjdddddd\}}|j}tjdj ddtj d zd zj}tjd }|jd tjd d}|djd|djtj|||d|djd|djtj|||y)Nrr)rg@Trq)rUrrrsir]irXrrr#rlrDrz"interpolation='auto', stage='rgba'r)r[rKr6z"interpolation='auto', stage='auto')r[rK)r(r)rr*r`r r,rget_cmapr9r rMrIr/triu)r0rr3r,rKs r4test_downsampling_speckler}s||Aq(4#/1HC ++-C IIdO # #B *RWWS\ 9b @ C CC i BKK >>qr *D F9:FMM"''#,RdMOF9:FMM"''#,RdM3r6zupsampling.png)r rctjjdtjjdd}t j dddd\}}|dj |d }|djd |dj |d d |djd|dj |d d d|djd|j||ddy)Nr?rrr#)g@r#rqrrrr)r[zAinterpolation='auto' stage='antialaised' (default for upsampling)sinc)r[r&z:interpolation='sinc' stage='auto' (default for upsampling)rr)r[r&r6z!interpolation='sinc' stage='rgba'rr%)rnshrinkr') r*rxryrzr(r)r/rIr)rdr0rrs r4test_upsamplingrsIINN: q!A||Aq(<HHC Qqy )BFMOFMM!)6M:FFHFMM!)6vMVF9:LLCL7r6)rfloat32int16rint8r.ndim)rr#c8tjjd}|dk(rdnd}|j|j tj |d}t j\}}|j|}|jddy) NiUrrR)rrr#)rRTrr) r*rx default_rnguniformrr!r(r)r/r})r!rrngrrr0rn axes_images r4test_resample_dtypesrsz ))   %CaiFYE ;;E; " ) )"((5t*D EDllnGC4J$"r6 intp_stagerHc |jdd}|jdd}d\}}d}tjj||}tjj||d} tj||df} tj | |j ||dffd} |ddj| |ddjtj | | fd|ddj| || |ddjtj | || zfd| |ddj| || |ddj| | |ddj| |ddj| | |ddj| || |ddjtj | ||j ||dfzfd| tjj||} |ddj| || |ddjtj | | j ||dffd| y) Nrr#rurrr]rr)r6r)r6r)r)r*rxrzr,rr r/) r~rraxs_tstaxs_refnynx scalar_alpha array_alphaim_rgbim_concat_default_aim_rgbanew_array_alphas r42test_interpolation_stage_rgba_respects_alpha_paramrs1%Gq!$G FBL))..R(KYY^^BA &F''2r1+.nn $$b"a[12G AJqM  AJqM1D(EBOP AJqMZ|T AJqM  \$77 8r )  AJqMZ{S AJqMjA AJqM! AJqM{3 AJqMj U AJqM  \K$7$7R $DD EB ) iinnR,O AJqMjX AJqM  _,,b"a[9 : )r6) contextlibrrrbrirpathlibrrrurllib.requestrnumpyr* numpy.testingrPILr matplotlibrzr r rr r r(r rmatplotlib.imagerrrrrmatplotlib.testing.decoratorsrrmatplotlib.transformsrrrmatplotlib.tickertickerrr=r5rMmark parametrizerfrprrrrrrrrrrrrrcontextrrrr6r$r-r7r9rArErHrRrerirsr|rrrrrrrrrrr`r rrrrrrrr3r8r;r@machinerTrWsplitr!rbrfrlrnrrMrrrrrrrrrrrrrrrrrrrrrr!r)r=rDrFrNfilterwarningsrUr`rhrlroryr}rrr)rs0r4rs    ,FF<<OAA# %&D9 .: .+,#U^? +? + ,udm<:,E5>: B;= B'( .) .()"( )) )$$ >?-@-D,GW#56@7@ BCADA*2)4=/t46567()0D+N 3Z 3Z 3Z 3Z 3Z#Y 2Y & P P* %. =) ,# 661a. 4 g,/0 r(X a&8 DD<.01#$G45( ) ,-4@IAI=/tOPF8/0"'33*+>?4(%)%$%#U^WN!N!:()t7KL0 GF34"'33 ! '0--  2  " yryy~'='=f'E G  2  " yryy}'<'"566 %3(./TsK>L>><.d3+4+")*= *> *01+8++-9at"'33D& #9#?#?#A Bahbhhqk BD%D%&)*GLM *+WMN/0"'33  ^^! "# 1 # 1D 02DEG09j2IJ 2KG 2 4 D9$ 2--$3 7448$%5%."'3 3 "9%9%x  (')'6r1g&(2)'2$( ) @./w? @ ,-W=>('(TtT22U22j **+*& **+*$<=>GW#569689 *&+97>&>()))*(. + TtECECB TtM4M4*g49898* >( #)  #'78)9)[Cs_1