
    
3j                    H   S SK Jr  S SKrS SKrS SKrS SKJr  S SKrS SKrS SK	r
S SKrS SKJrJr  S SKJr  S SKrS SKJrJrJrJrJrJr  S SKJrJrJrJ r J!r!  S SK"J#r#  S S	K$J%r%J&r&  S S
K'J(r(J)r)J*r*J+r+  S SK,J-r.  S SK/r/\/R`                  S 5       r1\&" S/SSS9S 5       r2\&" S/SSS/SSS9S 5       r3\/Rh                  Rk                  SSS/5      \&" S/SS/SS9S 5       5       r6S r7\/Rh                  Rk                  S/ S Q5      \%" 5       S! 5       5       r8\%" 5       S" 5       r9\%" 5       S# 5       r:S$ r;S% r<\/Rh                  Rk                  S&/ S'Q5      S( 5       r=S) r>\/Rh                  Rk                  S*S+S,/5      S- 5       r?\/Rh                  Rk                  S&/ S.Q5      S/ 5       r@S0 rAS1 rBS2 rC\&" S3/SSS9S4 5       rD\R4                  R                  S5      \%" 5       S5 5       5       rF\/Rh                  Rk                  S6/ S7Q5      S8 5       rGS9 rH\/Rh                  Rk                  S:S;S;/S /S;S</S=/S>S;/S?/S@S;/S?/SASB/SC/SDS;/S/S;SD/S//5      SE 5       rI\/Rh                  Rk                  SFSGSH//SI4SJSK//SL4\R                  S=SM//SN4S=SO//SP4SDSD//SQ4S S //SR4/5      SS 5       rK\/Rh                  Rk                  SFSGSH//S S ///ST4SJSK//SUS ///SV4\R                  S=SM/// SWQ//SN4/5      SX 5       rL\&" SY/SSZ9S[ 5       rM\&" S\/SSZ9S] 5       rN\%" 5       S^ 5       rOS_ rPS` rQ\&" Sa/SSS9Sb 5       rR\&" Sc/SS/SSSd9Se 5       rSSf rT\&" Sg/SSS9Sh 5       rU\&" Si/SSSjSk9Sl 5       rV\%" S/Sm9Sn 5       rW\&" So/SS/SSSd9Sp 5       rX\&" Sq/SSS9Sr 5       rYSs rZ\&" St/SSS9Su 5       r[Sv r\Sw r]Sx r^Sy r_Sz r`S{ ra\/Rh                  Rk                  S|\ \R                  " S}5      \R                  " S~5      \R                  " S5      R                  S5      4\!\R                  " S}5      \R                  " S~5      \R                  " S5      R                  S5      4/5      S 5       rdS reS rf\&" S/SSS9S 5       rg\&" S/SSS9S 5       rhS riS rj\&" S/SSSSk9S 5       rk\&" S/SSS9S 5       rlS rm\&" S/SSS9S 5       rn\&" S/\R                  " 5       S:X  a  S OSSSS9S 5       rpS rq\/Rh                  Rk                  SSR                  5        V s/ s H  n \R                  U 5      PM     sn 5      S 5       rt\&" S/SSS9S 5       ru\&" S/SSS9S 5       rv\&" S/SSS9S 5       rw\/Rh                  Rk                  S\R                  \R                  S S /5      S 5       rzS r{S r|S r}S r~\/Rh                  Rk                  SSS/5      \/Rh                  Rk                  SSS/5      S 5       5       rS rS rS r\%" / SQSm9S 5       rS r\R4                  R                  S5      S 5       r\&" S/SS/SSSd9S 5       r " S S\GR                  5      rS rS r\%" 5       S 5       r\/Rh                  Rk                  SSDS=/5      \%" 5       S 5       5       r\%" 5       S 5       r\&" S/SSZ9S 5       r\&" S/SSZ9S 5       r\&" S/SSS9S 5       r\%" 5       S 5       r\%" 5       S 5       rS r\/Rh                  GR)                  S5      \/Rh                  Rk                  S*S+S,/5      \/Rh                  Rk                  S/ SQ/ SQ/5      \%" 5       S 5       5       5       5       r\%" 5       S 5       rS r\/Rh                  Rk                  S\GR0                  " / SQ/5      \GR2                  \GR0                  " / SQ/5      4\GR0                  " / SQ/5      \GR2                  \GR0                  " / SQ/5      4\GR0                  " / SQ/5      \GR4                  \GR0                  " / SQ/5      4\GR0                  " SUS//5      \GR4                  \GR0                  " / SQ/5      4\GR0                  " SUSU//5      \GR4                  \GR6                  " SSU5      4\GR0                  " SUS//5      \GR2                  \GR8                  " \GR6                  " SSU5      \GR6                  " SS5      /5      R                  S=SD5      4\GR0                  " SUS//5      \GR4                  \GR8                  " \GR6                  " SSU5      \GR:                  " S;SS5      GR=                  \5      S-  S-  SU-   \GR6                  " SS5      /5      R                  S=SD5      4/5      S 5       rS rS r\&" S/SS\R                  " 5       S:X  a  S OSjS9S 5       r\&" S/SSS9S 5       r\&" S/SSS9S 5       r\/Rh                  Rk                  SS5      \/Rh                  Rk                  SS5      S 5       5       r\/Rh                  Rk                  SS5      \%" / SQSm9S 5       5       r\&" S/SSZ9S 5       r\&" S/SSZ9S 5       r\&" S/SSS9S 5       r\&" S/SSS9S 5       r\&" S/SSZ9S 5       rgs  sn f )    )	ExitStackN)Path)assert_allcloseassert_array_equal)Image)colorsimagepatchespyplotstylercParams)	AxesImage	BboxImageFigureImageNonUniformImagePcolorImage)	Rectangle)check_figures_equalimage_comparison)BboxAffine2D	TransformTransformedBboxc                  .     " S S[         5      n U " 5       $ )zGNon-affine identity transform for compositing with any affine transformc                   "    \ rS rSrSrSrS rSrg)6nonaffine_identity.<locals>.NonAffineIdentityTransform      c                     U $ N selfs    U/home/wildlama/miniconda3/lib/python3.13/site-packages/matplotlib/tests/test_image.pyinverted?nonaffine_identity.<locals>.NonAffineIdentityTransform.inverted"   s    K    r!   N)__name__
__module____qualname____firstlineno__
input_dimsoutput_dimsr%   __static_attributes__r!   r'   r$   NonAffineIdentityTransformr      s    
	r'   r/   )r   )r/   s    r$   nonaffine_identityr0      s    Y  &''r'   zinterp_alpha.pngT_classic_test)remove_textr   c                  N   [         R                  " SS5      u  n u  p[        R                  " S5      n[        R                  " S5      US'   [        R
                  " [        R                  " S[        R                  S95      US'   UR                  USS	9  UR                  US
S	9  g)z:Test the interpolation of the alpha channel on RGBA images   r   )   r5      r5   r5   ).r4   dtype.   noneinterpolationbilinearN)pltsubplotsnpzerosonestriluint8imshow)figaxlaxrimgs       r$   test_alpha_interprL   '   sz     ll1a(OC#
((9
C''&/CK''"''&9:CKJJs&J)JJs*J-r'   interp_nearest_vs_noneg@pdfsvgmpl20)tol
extensionsr2   r   c                  4   S[         S'   [        R                  " / SQ/ SQ// SQ/ SQ//[        R                  S9n [        R
                  " SS	5      u  nu  p#UR                  U S
S9  UR                  S5        UR                  U SS9  UR                  S5        g)z5Test the effect of "nearest" and "none" interpolationr;   savefig.dpi)          )z   g      )      r   )r\   c   G   r8   r4   r   r<   r=   zinterpolation nonenearestzinterpolation nearestN)r   rB   arrayrF   r@   rA   rG   	set_title)XrH   ax1ax2s       r$   test_interp_nearest_vs_nonere   4   s      H]
>?3 -029;	CAll1a(OC#JJqJ'MM&'JJq	J*MM)*r'   suppressCompositeFfigimagepng)rR   r   c                 6   [         R                  " SSS9nXl        [        R                  " [        R
                  " S5      S-  [        R
                  " S5      S-  5      u  p#[        R                  " US-  US-  -   X#-  -
  5      n[        R                  " SUS-  -  SUS-  -  -   5      nXES-  -   nUR                  US	S	S
S9  UR                  US S S2S S 24   S	SS
S9  UR                  US S 2S S S24   SS	S
S9  UR                  US S S2S S S24   SSS
S9  g )Nr   r   d   figsizedpig      Y@r      2   r5   r   lower)xoyoorigin)r@   figurerf   rB   ix_arangesinrg   )rf   rH   xyzcrK   s          r$   test_figimager~   F   s    **V
-C-66"))C.5("))C.3*>?DA
q!tad{QS !A
r!Q$wAqD !A
c'CLLqL1LLTrT1W!GL<LLQ"W#!GL<LLTrT4R4ZSSLAr'   c                      [         R                  " 5       u  pUR                  / SQ5        [        R                  " 5       nU R                  U5        UR                  S5        [         R                  " U5        g )N)r4   r   r;   r   )r@   rA   plotioBytesIOsavefigseekimread)rH   axbuffers      r$   test_image_python_ior   V   sI    llnGCGGIZZ\FKK
KKNJJvr'   z!img_size, fig_size, interpolation))r5   r   hanning)r5   r5   r_   )r5   
   r_   )r;   333333@r   )r;   g333333"@r_   c                    [         R                  R                  S5        [        R                  S   n[         R                  R                  [        XR-  5      [        XR-  5      5      nX4 H  nUR                  X35        M     U R                  5       nUR                  / SQ5        UR                  USS9  UR                  5       nUR                  / SQ5        UR                  XdS9  g )N!N,rT   r   r   r4   r4   autor=   )rB   randomseedr@   r   randintset_size_inchesrA   set_positionrG   )	fig_testfig_refimg_sizefig_sizer>   rn   ArH   r   s	            r$   test_imshow_antialiasedr   _   s     IINN8
,,}
%C
		s3>*C,?@A"H/ #				BOOL!IIavI&				BOOL!IIaI-r'   c                     [         R                  R                  S5        [        R                  S   n[         R                  R                  [        US-  5      [        US-  5      5      nX4 H  nUR                  SS5        M     U R                  5       nUR                  USS9  UR                  SS5        UR                  SS5        UR                  5       nUR                  US	S9  UR                  SS5        UR                  SS5        g )
Nr   rT   r;   r   r   r=   r   ro   r_   )rB   r   r   r@   r   r   r   r   rA   rG   set_xlimset_ylim)r   r   rn   r   rH   r   s         r$   test_imshow_zoomr   w   s     IINN8
,,}
%C
		s37|Sq\2A"C% #				BIIavI&KKBKKB				BIIayI)KKBKKBr'   c                 $   [         R                  " S5        [        [        5      R                  S-  n[        [        5      R                  S-  nU R                  S5      nUS   R                  [        R                  " U5      5        US   R                  [        R                  " U5      5        UR                  S5      nUS   R                  [        R                  " U5      5        US   R                  [        R                  " U5      5        g )Ndefault%baseline_images/pngsuite/basn3p04.png%baseline_images/test_image/uint16.tifr   r   r4   )r   user   __file__parentrA   rG   r   openr@   r   )r   r   png_path	tiff_pathaxss        r$   test_imshow_pilr      s    	IIiH~$$'NNHX%%(OOI


A
CFMM%**X&'FMM%**Y'(


1
CFMM#**X&'FMM#**Y'(r'   c                  *   [         R                  " [        R                  R	                  [        R                  R                  [        5      SSS5      5      n U R                  [        R                  :X  d   e[        R                  " U 5      S:X  d   eg )Nbaseline_images
test_imagez
uint16.tif )r@   r   ospathjoindirnamer   r9   rB   uint16sumrK   s    r$   test_imread_pil_uint16r      sc    
**RWW\\"''//(";&lD EC99		!!!66#;)###r'   c                      [         R                  " [        [        5      R                  S-  5      n U R
                  [        R                  :X  d   e[        R                  " U 5      S:X  d   eg )Nr   r   )	r@   r   r   r   r   r9   rB   r   r   r   s    r$   test_imread_fspathr      sP    
**X GGIC99		!!!66#;)###r'   fmt)rh   jpgjpegtiffc                 B   U S;  n[         R                  R                  S5        [         R                  R                  SS5      n[        R
                  " 5       n[        R                  " X2U SS9  [        R
                  " 5       n[        R                  " XBU SS9  UR                  S5        [        R                  " X0S9nUR                  S5        [        R                  " X@S9nUR                  SSS	U-   4:X  d   eUR                  SSS	U-   4:X  d   e[        XV5        g )
N)r   r   r4   i@  r   )formatrn   rk   r   r   r;   )rB   r   r   r   r   r   r@   imsaver   r   shaper   )r   	has_alphadata	buff_dpi1buff_dpi100arr_dpi1
arr_dpi100s          r$   test_imsaver      s    ?*I IINN1 99>>$"D

IJJys2**,KJJ{#6NN1zz)0HQK4J>>dAq9}5555aY7777x,r'   c                     SS/SS/SS//n [         R                  " 5       n[        R                  " XSS9  UR	                  S	5        [        R
                  " U5      n[        [        R                  " U 5      US S 2S S 2S S
24   5        g )N)      ?        r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   rh   r   r   r;   )	r   r   r@   r   r   r   r   rB   r`   )img_databuffread_imgs      r$   test_imsave_python_sequencesr      s}     
/*	/*	/*H ::<DJJte,IIaLzz$H
Arrr'   rt   upperrq   c                     [         R                  " 5       n[        R                  " SSS9n[        R
                  " XSU S9  g )N)r   r   r6   rF   r8   rh   )arrr   rt   )r   r   rB   rC   mimager   )rt   bufresults      r$   test_imsave_rgba_originr      s/     **,CXXk1F
MM#%?r'   )rh   rN   psepsrO   c                 j    [         R                  " USU  3-  [        R                  " SS//5      U S9  g )Nzunused.r   r4   r   )r@   r   rB   r`   )r   tmp_paths     r$   test_imsave_fspathr      s,    JJxGC5/)288aVH+=cJr'   c                     [         R                  R                  S5        S H  n [         R                  R                  SSS5      n[        R
                  " 5       n[        R                  " X!U SS9  UR                  S5        [        R                  " U5      nSU-  R                  S	5      nU S
:X  a  US S S2   nSU-  R                  S	5      n[        X5        M     g )Nr4   )rq   r      r6   rh   )rt   r   r   r\   rF   rq   ru   )rB   r   r   r   r   r   r@   r   r   r   astyper   )rt   r   r   arr_bufs       r$   test_imsave_color_alphar      s     IINN1$yy~~b"a(zz|

4fU;		!**T"
 D  )W":Dw;&&w/4)! %r'   c                      SSK Jn   [        R                  " 5       nU " 5       nUR	                  SS5        [
        R                  " USS/SS//SS	U0S
9  [        R                  " U5      nUR                  S   S:X  d   eg )Nr   )PngInfoSoftwaretestr4   r   r;   rh   pnginfor   
pil_kwargs)
PIL.PngImagePluginr   r   r   add_textr@   r   r   r   info)r   r   r   ims       r$   test_imsave_pil_kwargs_pngr     sr    *
**,CiGZ(JJsaVaV$G(<>	CB77:&(((r'   c                  b   SSK Jn   [        R                  " 5       nSS0n[        R
                  " USS/SS//SUS	9  [        U5      S:X  d   e[        R                  " U5      nUR                  R                  5        VVs0 s H  u  pEX   R                  U_M     nnnUS
   S:X  d   eg s  snnf )Nr   )TAGS_V2descriptionz
test imager4   r   r;   r   r   ImageDescription)PIL.TiffTagsr   r   r   r@   r   lenr   r   tag_v2itemsname)TAGSr   r   r   kvtagss          r$   test_imsave_pil_kwargs_tiffr     s    ,
**,C.JJJsaVaV$V
Kz?a	CB(*		(9:(9DGLL!O(9D:"#|333 ;s   B+image_alphac                  "   [         R                  R                  S5        [         R                  R                  SS5      n [        R
                  " SS5      u  nu  p#nUR                  U SSS9  UR                  U SSS9  UR                  U SS	S9  g )
Nr      r4   r;   r   r<   )alphar>         ?r_   )rB   r   r   r   r@   rA   rG   )ZrH   rc   rd   ax3s        r$   test_image_alphar    su    IINN1
		q!A<<1-C#CJJq6J2JJq6J2JJq9J5r'   c                    [         R                  R                  S5        [         R                  R                  SSS5      R	                  [         R
                  5      n[         R                  " US-  5      nU R                  SS5      u  u  pEu  pgUR                  USS9  UR                  USS9  UR                  US	S9  UR                  US
S9  [         R                  " U[         R                  " S5      4SS9R	                  [         R
                  5      n[         R                  " U[         R                  " SS[         R                  5      4SS9n	UR                  SS5      u  u  pEu  pgSUS S 2S S 2S4'   UR                  U5        SUS S 2S S 2S4'   UR                  U5        SU	S S 2S S 2S4'   UR                  U	5        SU	S S 2S S 2S4'   UR                  U	5        g )Nr   r   r;   r\   r   r   r         ?g?g?)r   r   r4   axisr[      )rB   r   r   r   r   float32rF   rA   rG   concatenaterD   full)
r   r   rgbfrgbuax0rc   rd   r  rgbafrgbaus
             r$   test_imshow_alphar  $  s    IINN899>>!Q"))"**5D88D3JD'00A6Zc#JJt3JJJt4J JJt7J#JJt7J#NND"'')"45A>EEbjjQENND"'')S"(("CD1ME&//15Zc#E!Q'NJJuE!Q'NJJuE!Q'NJJuE!Q'NJJur'   z%n_channels, is_int, alpha_arr, opaque))r;   FFF)r6   FFF)r6   FTF)r6   FFT)r6   TFFc                    U(       a%  [         R                  R                  SSSSU 45      nO5[         R                  R                  SSU 45      nU(       a  SUS S 2S S 2S4'   U(       a  [         R                  " SS/SS//5      nOS n[        R
                  " 5       u  pgUR                  XES	9nUR                  5         [         R                  R                  XHR                  5        g )
Nr      r   r4   r;   333333?r   皙?r  )rB   r   randintr`   r@   rA   rG   draw_without_renderingtestingr   _A)	
n_channelsis_int	alpha_arropaquer`   r   rH   r   r   s	            r$   test_imshow_multi_drawr  >  s     		!!!S1a*<=		  !Q
!34E!Q'N3*q#h/0llnGC	5	&B  JJ!!%/r'   c                     SSK Jn   [        R                  " 5       u  pUR	                  [
        R                  " S5      R                  SS5      SS9nSu  pEUR                  R                  XE/5      u  pgU " SUR                  Xg5      nUR                  U5      S	:X  d   eS
u  pEUR                  R                  XE/5      u  pgU " SUR                  Xg5      nUR                  U5      b   eUR                  5         UR	                  [
        R                  " S5      R                  SS5      SS9nSu  pEUR                  R                  XE/5      u  pgU " SUR                  Xg5      nUR                  U5      S	:X  d   e[        R                  " 5       u  pUR	                  [
        R                  " S5      R                  SS5      / SQS9nSu  pEUR                  R                  XE/5      u  pgU " SUR                  Xg5      nUR                  U5      S:X  d   eSu  pEUR                  R                  XE/5      u  pgU " SUR                  Xg5      nUR                  U5      b   eSu  pEUR                  R                  XE/5      u  pgU " SUR                  Xg5      nUR                  U5      b   e[        5       R                  S5      R                  S5      n	UR	                  [
        R                  " S5      R                  SS5      XR                  -   S9nSu  pEUR                  R                  XE/5      u  pgU " SUR                  Xg5      nUR                  U5      S	:X  d   eg )Nr   
MouseEventrk   r   r   )rt   )r6   r6   motion_notify_event,   )g333333$@r6   rq   )r   r   r   r   extent)      ?r'  7   )r  r'  ){Gz?g{Gzr   r   	transform)r;   r   )matplotlib.backend_basesr"  r@   rA   rG   rB   rx   reshape	transDatar+  canvasget_cursor_dataclearr   scalerotate)
r"  rH   r   r   rz   r{   xdispydispeventtranss
             r$   test_cursor_datar8  Y  s   3llnGC	299S>))"b1'	BBDA<<))1&1LE,cjj%GEe$*** DA<<))1&1LE,cjj%GEe$,,, HHJ	299S>))"b1'	BBDA<<))1&1LE,cjj%GEe$***llnGC	299S>))"b1:J	KBDA<<))1&1LE,cjj%GEe$*** DA<<))1&1LE,cjj%GEe$,,,DA<<))1&1LE,cjj%GEe$,,, JQ&&s+E	299S>))"b1"\\1 
 
3BDA<<))1&1LE,cjj%GEe$***r'   zxy, datar         ?r4   g      @r   g      !@      #@g      @U   ru   c                 X   SSK Jn  [        R                  " / SQ5      n[        R                  " / SQ5      nU[        R                  S S 24   S-  US S 2[        R                  4   S-  -   n[
        R                  " 5       u  pg[        XsR                  5       UR                  5       UR                  5       UR                  5       4S9nUR                  X4U5        UR                  U5        UR                  UR                  5       S-
  UR                  5       5        UR                  UR                  5       S-
  UR                  5       5        UR                  R                  U 5      u  pU" SUR                   X5      nUR#                  U5      U:X  d   UR#                  U5      U45       eg )Nr   r!  )r   r4   r6   	   r   )r   r4   r   r;   r6   r   r%  r#  )r,  r"  rB   r`   newaxisr@   rA   r   minmaxset_data	add_imager   r   r.  r+  r/  r0  )xyr   r"  rz   r{   r|   rH   r   r   r4  r5  r6  s               r$   test_cursor_data_nonuniformrD    s9    4 	!"A
!A	"**a-!a2::.11AllnGC	UUWaeegquuw$H	IBKKaLLKK!QUUW%KK!QUUW%<<))"-LE,cjj%GEe$,Or/A/A%/H$.OO,r'   z
data, texti'  i'  z[10001.000]grh|?g/$?z[0.123]r   z[]g     ?z[1.0000000000000000]z[-1.0]z[0.00]c                    SSK Jn  [        R                  " 5       u  p4UR	                  U 5      nUR
                  R                  SS/5      u  pgU" SUR                  Xg5      nUR                  UR                  U5      5      U:X  d   eg )Nr   r!  r#  )
r,  r"  r@   rA   rG   r.  r+  r/  format_cursor_datar0  )	r   textr"  rH   r   r   r4  r5  r6  s	            r$   test_format_cursor_datarH    sr     4llnGC	4B<<))1a&1LE,cjj%GE  !3!3E!:;tCCCr'   z[10001.000, 0.000]皙?z[0.123, 0.100])r   r   r   c                    SSK Jn  [        R                  " 5       u  p4[        R
                  S   n[        R                  S   nUR                  SS//5      nXWR                  l	        [        R                  " UR                  UR                  /5      UR                  l        [        R                  R                  R                  Xp5        UR                   R#                  SS/5      u  pU" SUR$                  X5      n
UR'                  UR)                  U
5      5      U:X  d   eXgR                  l	        U" SUR$                  X5      n
UR'                  UR)                  U
5      5      U:X  d   eg )Nr   r!  BiOrangeBlue2VarAddAr4   r#  )r,  r"  r@   rA   mplbivar_colormapsmultivar_colormapsrG   	colorizer_cmapr   	MultiNormnorm_normColorizingArtist	set_arrayr.  r+  r/  rF  r0  )r   rG  r"  rH   r   
cmap_bivarcmap_multivarr   r4  r5  r6  s              r$   !test_format_cursor_data_multinormrY    s"    4llnGC$$^4J**:6M 
QF8	B#LL))277BGG*<=BLLMM"",,R6<<))1a&1LE,cjj%GE  !3!3E!:;tCCC&LL,cjj%GE  !3!3E!:;tCCCr'   
image_clip)r   c                      SS/SS//n [         R                  " 5       u  pUR                  U 5      n[        R                  " SSUR
                  S9nUR                  U5        g )Nr4   r   r;   r6   r   r   )radiusr+  )r@   rA   rG   r
   Circler.  set_clip_path)drH   r   r   patchs        r$   test_image_cliprb    sR    
Q!QAllnGC	1BNN6!r||DEUr'   image_cliprectc                      [         R                  " 5       u  pSS/SS//nUR                  USS9n[        R                  " SSSUR
                  R                  S9nUR                  U5        g )	Nr4   r   r;   r6   r   r5   r   r5   r%  r4   r4   )rC  widthheightr+  )r@   rA   rG   r
   r   axesr.  r_  )rH   r   r`  r   rects        r$   test_image_cliprectrk    se    llnGC
Q!QA	1\	*B10A0ACDTr'   c                 v   [         R                  " S5      R                  S5      nUR                  5       nUR	                  US S 2S S 2S4   SSS9  UR                  SS5        UR                  SS5        U R                  5       nUR	                  USSS9  UR                  SS5        UR                  SS5        g )Nrk   )r   r   r4   r   r?   )r4   r   r4   r   )r>   r&  r;   )rB   rx   r-  rA   rG   r   r   )r   r   r   r   s       r$   test_imshow_10_10_1rm    s     ))C.
 
 
-C				BIIc!Q'l*\IJKK1KK1				BIIcLIAKK1KK1r'   c                     [         R                  " 5       u  p[        R                  " S5      R	                  S5      n[
        R                  " [        5         UR                  U5        S S S 5        g ! , (       d  f       g = f)N   )r   r   r   	r@   rA   rB   rx   r-  pytestraises	TypeErrorrG   rH   r   r   s      r$   test_imshow_10_10_2ru    J    llnGC
))C.
 
 
-C	y	!
		# 
"	!	!   A22
B c                     [         R                  " 5       u  p[        R                  " S5      R	                  S5      n[
        R                  " [        5         UR                  U5        S S S 5        g ! , (       d  f       g = f)Ni  )r   r   r5   rp  rt  s      r$   test_imshow_10_10_5ry  %  rv  rw  no_interpolation_originc                     [         R                  " S5      u  pUS   R                  [        R                  " S5      R                  S5      SSS9  US   R                  [        R                  " S5      R                  S5      SS	9  g )
Nr   r   rk   )r   rp   rq   r<   )rt   r>   r4   r=   )r@   rA   rG   rB   rx   r-  )rH   r   s     r$   test_no_interpolation_originr|  ,  sg    ||AHCFMM"))C.((1' &  (FMM"))C.((1MHr'   image_shift)rR   r2   r   c            
      F   [        SS5       V Vs/ s H)  n [        SS5       Vs/ s H  nSU-  SU -  -   PM     snPM+     nn nSnSn[        R                  " 5       u  pVUR                  U[        R
                  " 5       SX4SS4S9  UR                  S5        g s  snf s  snn f )Nr4   rk   gMk&Agk&Ar<   )rS  r>   r&  r   )ranger@   rA   rG   r   LogNorm
set_aspect)r{   rz   imgDatatMintMaxrH   r   s          r$   test_image_shiftr  4  s     @EQ}M}!uQ}5}!AA}5}GMDDllnGCIIgFNN,F!S)  +MM& 6Ms   BBBBc                     [         R                  " SS/S9n U R                  SSS9n[        R                  " [        R
                  " S5      S5      R                  SS	5      nUR                  US
/ SQSSS9nS=pEUR                  U* U5        UR                  U* U5        UR                  / 5        UR                  / 5        [        R                  " 5       nU R                  USS9  UR                  S5        [         R                   " U5      n[#        US S 2S4   5      u  pxp[#        US S 2S4   5      u  pxpUS:w  d   S5       eg )Nr4   rm   r   F)frameon      ro   r=  r   r   r  r   r<   gray)rt   r&  r>   cmapr   )r   r4   r   )	facecolorr   ru   rk   z.Expected a non-green edge - but sadly, it was.)r@   rv   add_axesrB   tilerx   r-  rG   r   r   
set_xticks
set_yticksr   r   r   r   r   r   )rH   r   r   r   rz   r{   r   rgbas              r$   test_image_edgesr  A  s   
**aV
$C	lE	2B77299R="%--b!4D	40B!'f 
 
6B IAKKAKKAMM"MM"
**,CKKyK)HHQK	CBR1XJA!R2YJA!8EEE8r'   image_composite_backgroundc                     [         R                  " 5       u  p[        R                  " S5      R	                  SS5      nUR                  U/ SQS9  UR                  U/ SQS9  UR                  S5        UR                  SS5        g )	Nr  r6   r;   )r   r   r  r   r%  )r6   r   r  r   )r4   r   r   r   r   )r@   rA   rB   rx   r-  rG   set_facecolorr   rt  s      r$   test_image_composite_backgroundr  ]  sg     llnGC
))B-

1
%CIIc-I(IIc-I(^$KK2r'   image_composite_alphagQ?)r2   r   rQ   c                     [         R                  " 5       u  p[        R                  " S5      nSUSS2SS2S4'   [        R                  " [        R
                  " SSS5      [        R
                  " SSS5      SSS2   45      USS2SS2S4'   [        R                  " S	5      nSUSS2SS2S4'   SUSS2SS2S4'   [        R                  " [        R
                  " SSS5      [        R
                  " SSS5      SSS2   45      SS2[        R                  4   USS2SS2S4'   UR                  U/ S
QSS9  UR                  U/ SQSS9  UR                  U/ SQS9  UR                  U/ SQS9  UR                  U/ SQSS9  UR                  U/ SQSS9  UR                  S5        UR                  SS5        UR                  SS5        g)zo
Tests that the alpha value is recognized and correctly applied in the
process of compositing images together.
)      r6   r4   Nr   皙?rI  ru   r;   )r  r  r6   )r4   r   r5   r   r  )r&  r   )r   r;   r5   r   333333?)r;   r6   r5   r   r%  )r   r5   r4   r   )r   r5   r   r;   )r   r5   r;   r6   )r   r   r   r4   r5   )r@   rA   rB   rC   r  rx   r>  rG   r  r   r   )rH   r   r   arr2s       r$   test_image_composite_alphar  h  s    llnGC
((;
CC1aL>>	1c3	1a!5dd!;<>C1aL88K DDAqMDAqMNN	1c3	1a!5dd!;<>>?mMDAqMIIc,cI2IIc,cI2IIc,I'IId<I(IId<sI3IId<sI3^$KK1KK1r'   )rR   c                 |   [         R                  " S5      R                  S5      nX4 H  nUR                  5       nUR	                  U[
        R                  R                  / SQ5      UR                  4S9  UR	                  U[
        R                  R                  / SQ5      UR                  4S9  M     SUl	        g )Nr=  r;   r;   )r\  r   r4   )r4   r   )	clip_path)rf  )r4   r   )r   r4   T)
rB   rx   r-  add_subplotrG   rM  r   r   r.  rf   )r   r   trH   r   s        r$   #test_clip_path_disables_compositingr    s    
		!V$A"__
		!.F G " .	 	/
		!.F G " .	 	/	 # !%Gr'   rasterize_10dpic                     [         R                  " SS/SS//5      n [        R                  " SSSS9u  pUS   R	                  U 5        US   R                  SS/SS/SS	S
9  US   R                  SSS9  US   R                  SS/SS/SS9  US   R                  SSS9  U HC  nUR                  / 5        UR                  / 5        UR                  S S  R                  S5        ME     S[        S'   g )Nr4   r   r;   r6   )r;   r4   r  r   g      4@T)	linewidth
rasterizedr  )ru   r   xlimylim)r  Fr   rT   )rB   asarrayr@   rA   rG   r   setr  r  spinesset_visibler   )rK   rH   r   r   s       r$   test_rasterize_dpir    s     **q!fq!f%
&C||Aq&1HCFMM#FKKAA#$K?FJJFJ)FKKAA#K.FJJFJ) 
b
b
		!  ' 
 !H]r'   bbox_image_invertedc            	         [         R                  " S5      R                  S5      n [        R                  " 5       u  p[        [        [        SS/SS//5      UR                  5      SS9nUR                  U 5        UR                  S5        UR                  SS5        UR                  SS5        UR                  U5        [         R                  " S5      n [        [        [        SS	/S
S//5      UR                  5       R                   5      SS9nUR                  U 5        UR                  S5        UR                  U5        g )Nrk   r   r   r   r_   r=   Fr   rI  皙?r  r'  )rB   rx   r-  r@   rA   r   r   r   r.  rA  set_clip_onr   r   
add_artistidentity
get_figuretransFigure)r	   rH   r   bbox_ims       r$   test_bbox_image_invertedr    s    IIcN""8,EllnGCsCj1a&12BLLA!G UKK3KK3MM'KKOEsCj3+-F(G(*(C(CE&/1G UMM'r'   c                  f   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n [        R                  " SSS9u  pUR	                  / SQ5        UR                  S	S
5        UR                  S	S
5        UR                  U / SQSS9nUR                  R                  5         UR                  R                  nUR                  U5      n[        UR                  5       SS/SS//5        [        R                  " SSS9u  pUR	                  / SQ5        UR                  S
S5        UR                  S	S
5        UR                  U / SQSUR                  S9nUR                  R                  5         UR                  R                  nUR                  U5      n[        UR                  5       SS/SS//5        g )N)r'  r  r   r  )rI  g?r   皙?)r  r  r   r  )ffffff??r  r  r  rk   rl   r   r   r4   )r  r  r  r  r_   )r&  r>     ro  i  i  r   )r&  r>   r+  )rB   r`   r@   rA   r   r   r   rG   r/  drawrendererget_window_extentr   
get_points	transAxes)r   rH   r   im_objr  im_bboxs         r$   $test_get_window_extent_for_AxisImager    st   
 
*,A')=? 
@Bll85GCOOL!KK1KK1YY
'y  BF JJOOzz""H&&x0Gw))+sCj3*-EFll85GCOOL!KK1KK1YY
'y,,   F JJOOzz""H&&x0Gw))+sCj3*-EFr'   zzoom_and_clip_upper_origin.pngc                      [         R                  " S5      n U R                  S5      n [        R                  " 5       u  pUR                  U 5        UR                  SS5        UR                  SS5        g )Nrk   r         @      )rB   rx   r-  r@   rA   rG   r   r   )r	   rH   r   s      r$   test_zoom_and_clip_upper_originr    sT     IIcNEMM(#EllnGCIIeKKTKKcr'   c                  f    [         R                  " 5       n [        U 5      nUR                  S5        g )NBlues)r@   gcar   set_cmapr   r   s     r$   test_nonuniformimage_setcmapr    s#    	B		BKKr'   c                      [         R                  " 5       n [        U 5      nUR                  [         R                  " 5       5        g r    )r@   r  r   set_norm	Normalizer  s     r$   test_nonuniformimage_setnormr    s)    	B		BKK r'   c                  P   [         R                  " SSS9n [        S5       H$  n[         R                  " SSS5      S-  XS S 24'   M&     [        R
                  " SS5      nUR                  U R                  5       5        [        R                  " 5       u  p4UR                  U5        g )	Nr  rF   r8   r   r   r   r\   L)rB   rD   r  linspacer   newputdataflattenr@   rA   rG   )imdir   rH   r   s        r$   test_jpeg_2dr    sw    
''('
*C2YKKS"-3qD	 	3	!BJJs{{}llnGCIIbMr'   c                     [         R                  " SSS9  [        R                  " S[        S9n [        R
                  " SSS5      U S'   [         R                  " U 5        [        R                  " 5       n[         R                  " US	S
SS9  UR                  S5        [        R                  " U5      n[        UR                  S5      5      nSUs=::  a  S::  d   e   eUR                  S5      nUS:X  d   eg )Nrf  ,  rl   )r  r  r6   r8   r   r   r:   redr   )r  r   rn   r   r        r\  )   r   r   )r@   rv   rB   rC   floatr  rg   r   r   r   r   r   r   r   	getcolorsgetpixel)r   r   r	   
num_colorscorner_pixels        r$   test_jpeg_alphar    s    JJv3' 
-u	-BS#s+BvJLL::<DKKe=IIaLJJtE U__S)*J*######>>&)L;&&&r'   c                      [         R                  " 5       n [        U 5      n[        R                  " S[
        S9R                  S5      nUR                  U5        SUS'   UR                  S   S:X  d   S5       eg Nr  r8   r6   r;   #@r\  r   value changed)	r@   r  r   rB   rx   r  r-  rA  r  r   r   r|   s      r$   test_axesimage_setdatar  &  s`    	B	2B
		"E"**62AKKNAdG55;!,_,r'   c                      [         R                  " 5       n [        U 5      n[        R                  " S[
        S9R                  S5      nUR                  U5        SUS'   UR                  S   S:X  d   S5       eg r  )	r@   gcfr   rB   rx   r  r-  rA  r  )rH   r   r|   s      r$   test_figureimage_setdatar  /  sa    
'')C	S	B
		"E"**62AKKNAdG55;!,_,r'   zimage_cls,x,y,a      @      @g      (@r  g      @)r;   r   c                 t   [         R                  " 5       nU " U5      nUR                  XU5        S=US'   =US'   US'   UR                  S   UR                  S   s=:X  a   UR
                  S   s=:X  a  S:X  d   S5       e   S5       eUR                  XUR                  / UR                  QSP75      5        g )Nr  r   r\  r  ru   )r@   r  rA  r  _Ax_Ayr-  r   )	image_clsrz   r{   r  r   r   s         r$   test_setdata_xyar  8  s     
B	2BKKaAaD1Q4!D'55;"&&)5rvvay5A5FF5FF5KKaii!''2/0r'   c                     SSK Jn   [        R                  R	                  S5        [        R                  R                  SS5      n[        R                  " SS5      u  p#US   R                  U5      nUS   R                  U5      n[        R                  " XCS   S9  [        R                  " XSS   S9  [        R                  " 5       n[        R                  " USS9  [        R                  " UR                  5       5      nU R                  U5      nS nUR                  S	5       H  n	Uc  U	S
   nM  U	S
   U:w  d  M   e   g )Nr   )ElementTreer   r4   r   )r   rO   r   r	   rg  )	xml.etreer  rB   r   r   r   r@   rA   
pcolormeshcolorbarr   r   r   getvalueparseiter)
r  r   rH   r   p1p2r   treerg  r	   s
             r$   test_minimized_rasterizedr  H  s     &IINN199>>"b!Dll1a GC	A		$	B	A		$	BLL1LL1::<DKKU#::dmmo&DT"DE7#='NEW~&u $r'   c                     [        [        5      R                  S-  n S[        R                  S:X  a  SOS-   U R                  5       R                  5       -   n[        R                  " [        SS9   [        R                  " U5        S S S 5        [        R                  R                  U5       n[        R                  " U5        S S S 5        g ! , (       d  f       NM= f! , (       d  f       g = f)Nr   zfile:win32z/// zPlease open the URLmatch)r   r   r   sysplatformresolveas_posixrq  rr  
ValueErrorr@   r   urllibrequesturlopen)r   urlfiles      r$   test_load_from_urlr  i  s    >  #JJD||w.eB8\\^$$&'C 
z)>	?

3 
@				$

4 
%	$ 
@	?	$	$s   0C.C
C
C-log_scale_imagec            	          [         R                  " S5      n SU S S S2'   [        R                  " 5       u  pUR	                  U / SQSSSSS9  UR                  S	S
9  g )Nr  r4   r   )r4   rk   r4   rk   viridisru   r   )r&  r  vmaxvminaspectlog)yscale)rB   rC   r@   rA   rG   r  )r  rH   r   s      r$   test_log_scale_imager(  t  sW    
AAccFllnGCIIa(yqr  FF%Fr'   rotate_imagec            	         Sn [         R                  " SSU 5      =p[         R                  " X5      u  p4[         R                  " US-  US-  -   * S-  5      S[         R                  -  -  n[         R                  " US-
  S-  S-  US-
  S-  S-  -   * S-  5      S[         R                  -  S-  S-  -  nXe-
  n[
        R                  " SS5      u  pU	R                  USS	S
/ SQSS9n
[        5       R                  S5      U	R                  -   nU
R                  U5        U
R                  5       u  ppU	R                  XXU/XXU/SSUS9  U	R                  SS5        U	R                  SS5        g )Nr'        r  r   r4   r9  r   r<   r"  rq   )r6   r   T)r>   r  rt   r&  clip_onr   zr--r;   )lwr+  r5   r   r6   )rB   rx   meshgridexppir@   rA   rG   r   
rotate_degr.  set_transform
get_extentr   r   r   )deltarz   r{   rb   YZ1Z2r  rH   rc   im1trans_data2x1x2y1y2s                   r$   test_rotate_imager@    sg   EIIdC''A;;qDA	!Q$A+"	#q255y	1B
&&QUcMA%!a%3(::;a?
@ruu9s?S "B
A||Aq!HC
**Qf9#*D  :C *''+cmm;Kk" ^^%NBBHHbbb!BBB#71"  $ LLALLAr'   c                     [         R                  " 5       n [        R                  " S5      n[        R
                  " XSS9  U R                  S5        [        R                  " U 5      nUR                  S S UR                  :X  d   eg )N)i  iA  rh   r   r   r   )	r   r   rB   rC   r@   r   r   r   r   )r   r   rK   s      r$   test_image_preserve_sizerB    s^    ::<D	*	BJJt&IIaL
**T
C99Ra=BHH$$$r'   c                  (   Sn [         R                  " U [        5      n[        R                  " X 4SS9nUR                  S5      nUR                  5         UR                  USSSS9  [        R                  " 5       nUR                  US	S
9  UR                  S5        [        R                  " U5      nUR                  S:X  d   e[        [         R                  " US S 2S S 2S4   [         5      [         R                  " U [         5      S S S2   5        g )N   F)rm   r  )r   r   r   r   r_   rq   r   )r>   rt   r%  r4   )rn   r   )rD  rD  r6   ru   )rB   r  r  r@   rv   r  set_axis_offrG   r   r   r   r   r   r   r   r  bool)nr   rH   r   r   rK   s         r$   test_image_preserve_size2rH    s    	A;;q% D
**aVU
3C	*	+BOOIId)GFIK::<DKK!KIIaL
**T
C99	!!!rzz#aAg,5{{1d+DbD13r'   zmask_image_over_under.pngr   c                  x   Sn [         R                  " SSU 5      =p[         R                  " X5      u  p4[         R                  " US-  US-  -   * S-  5      S[         R                  -  -  n[         R                  " US-
  S-  S-  US-
  S-  S-  -   * S-  5      S[         R                  -  S-  S-  -  nSXe-
  -  n[
        R                  S	   R                  S
SSS9n[         R                  R                  US:  U5      n	[
        R                  " SS5      u  n
u  pUR                  U	SU[        R                  " SSSS9S/ SQS9nUR                  S5        U
R                  USSUSS9  UR                  U	SU[        R                   " / SQSSS9S/ SQS9nUR                  S5        U
R                  USS SUSS!9  g )"Ng?r+  r  r   r4   r9  r   r   r  r  r  r  overunderbad333333?r?   g      r   F)r$  r#  cliprq   )r-  r;   r-  r;   )r>   r  rS  rt   r&  zGreen=low, Red=high, Blue=badboth
horizontal)extendorientationr   r%  r_   )ru   r  gɿr   r  r   r4   r  )ncolorsrO  zWith BoundaryNormproportional)rR  spacingrS  r   r%  )rB   rx   r0  r1  r2  r@   	colormapswith_extremesmamasked_whererA   rG   r   r  ra   r  BoundaryNorm)r6  rz   r{   rb   r7  r8  r9  r  paletteZmrH   rc   rd   r   s                 r$   test_mask_image_over_underr^    s    EIIdC''A;;qDA	!Q$A+"	#q255y	1B
&&QUcMA%!a%3(::;a?
@ruu9s?S "B
BGAmmF#11s#31OG			AGQ	'Bll1a(OC#	Bj ))t#EJ"> 
 
;B MM12LLF  $ 
Bi ,,-M58uF">	 
 
;B
 MM%&LLFN)c"  >r'   
mask_imagec                     [         R                  " SS5      u  n u  p[        R                  " S5      n[        R                  USS2SS24'   UR                  USS9  [        R                  " S[        S9nSUSS2SS24'   [        R                  R                  [        R                  " S[        R                  S9U5      nUR                  USS9  g )Nr4   r   r7   r_   r=   r8   T)r@   rA   rB   rD   nanrG   rC   rF  rY  masked_arrayr   )rH   rc   rd   r   s       r$   test_mask_imagerc    s     ll1a(OC#
A&&Aac1Q3hKJJq	J*
t$AAac1Q3hK
2776;Q?AJJq	J*r'   c                      [         R                  " S[         R                  5      n [        R                  " 5       u  pUR                  U 5        UR                  R                  5         g )Nrj   )rB   r  ra  r@   rA   rG   r/  	draw_idle)r   rH   r   s      r$   test_mask_image_allrf    s>    776266"DllnGCIIdOJJr'   zimshow_endianess.pngc                  p   [         R                  " S5      n [         R                  " X 5      u  p[         R                  " US-
  US-
  5      n[        R
                  " SS5      u  nu  pV[        SSSS9nUR                  " UR                  S	5      40 UD6  UR                  " UR                  S
5      40 UD6  g )Nr   r5   r4   r   rq   r_   r"  )rt   r>   r  z<f8z>f8)	rB   rx   r0  hypotr@   rA   dictrG   r   )rz   rb   r7  r  rH   rc   rd   kwargss           r$   test_imshow_endianessrk    s    
		"A;;qDA
QAAll1a(OC#		JFJJqxx)&)JJqxx)&)r'   imshow_masked_interpolationx86_64r)  )rQ   r2   r   c                     [         R                  S   R                  SSSS9n Sn[        R                  " SX-  S-
  S	9n[
        R                  " X-  [        S
9R                  X5      nSUS'   SUS'   [
        R                  US'   [
        R                  " U5      R                  S5      nSUS'   [
        R                  R                  X45      n[        R                  " SS5      u  pV[!        ["        R$                  5      nUR'                  S5        UR'                  S5        [)        XvR+                  5       5       H7  u  pU	R-                  U5        U	R/                  X2XS9  U	R1                  S5        M9     g )Nr"  r  r  r   rJ  ro   r   r4   r$  r#  r8   ru   r7   g     j@)r  r5   )r  r  rF  T)r5   r  r;   r   r   antialiased)rS  r  r>   off)rM  rW  rX  r   r  rB   rx   r  r-  inf
zeros_liker   rY  rb  r@   rA   sortedr   	_interpd_removezipravelra   rG   r  )
r  NrG  r   maskrH   ax_gridinterpsinterpr   s
             r$    test_imshow_masked_interpolationr~    s/   
 ==#11s#31OD
Aaac!e,A99QS&..q4DDJ DK 66DL==%%f-DDK55d)D<<1%LCV%%&GNN6NN=!'==?3

V
		$T	@
 4r'   c                  X    [         R                  " SS/S[        R                  //5        g )Nr4   r   r;   )r@   rG   rB   ra  r!   r'   r$   test_imshow_no_warn_invalidr  )  s    JJABFF$%r'   r9   zu2 u4 i2 i4 i8 f4 f8c                 b   [         R                  " SU S9R                  S5      nU R                  S:w  a  US-  nUS:  nUS:  nU R                  S:X  a  US-  n[        R
                  " 5       u  pEUR                  U5      R                  5       nXb   S:H  R                  5       (       d   eU R                  S:X  a9  Xc   S	:H  R                  5       (       d   eUR                  R                  S:X  d   eg Xc   S:H  R                  5       (       d   eUR                  [         R                  :X  d   eg )
Nr  r8   )r   r   r;   ur   r   r\   fr4   )rB   rx   r-  kindr@   rA   rG   	get_arrayallr9   rF   )r9   r   too_lowtoo_high_r   outs          r$   $test_imshow_clips_rgb_to_valid_ranger  -  s
    ))Cu
%
-
-k
:CzzSr	AgGSyHzzSCiLLNEA
))C.
"
"
$CLA""$$$$zzS"''))))yy~~$$$$))++++yyBHH$$$r'   zimshow_flatfield.pngc                      [         R                  " 5       u  pUR                  [        R                  " S5      SS9nUR                  SS5        g )Nr7   r_   r=   r   r9  )r@   rA   rG   rB   rD   set_climrH   r   r   s      r$   test_imshow_flatfieldr  B  s7    llnGC	2776?)	<BKKCr'   zimshow_bignumbers.pngc                      S[         S'   [        R                  " 5       u  p[        R                  " / SQ/ SQ/[        R
                  S9nUR                  U5      nUR                  SS5        g )Nr_   image.interpolation)r4   r   g   mB)r;   r4   r6   r8   r   r5   )r   r@   rA   rB   r`   uint64rG   r  rH   r   rK   pcs       r$   test_imshow_bignumbersr  I  sP    &/H"# llnGC
((L),BII
>C	3BKK1r'   zimshow_bignumbers_real.pngc                      S[         S'   [        R                  " 5       u  p[        R                  " / SQ/ SQ/5      nUR                  U5      nUR                  SS5        g )Nr_   r  )r  r   gMD)r  r   r  r   r5   )r   r@   rA   rB   r`   rG   r  r  s       r$   test_imshow_bignumbers_realr  T  sL     '0H"# llnGC
((O\2
3C	3BKK1r'   	make_normc                  .    [         R                  " S5      $ Nr4   )r   
SymLogNormr!   r'   r$   <lambda>r  d  s    Vq!r'   c                  .    [         R                  " S5      $ r  )r   	PowerNormr!   r'   r$   r  r  e  s    Va r'   c                    [         R                  " 5       u  p[        R                  " [        SS9   UR                  / /U " 5       S9nS S S 5        WR                  / SQ5        UR                  R                  5         [        R                  " [        5         UR                  UR                  R                  5       5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz.Attempting to set identical low and high xlimsr  rS  )r5   r  r5   )r@   rA   rq  warnsUserWarningrG   
set_extentr/  r  rr  RuntimeError
make_imageget_renderer)r  rH   r   r   s       r$   test_empty_imshowr  `  s     llnGC	kL
NYYt)+Y.
N MM.!JJOO	|	$
cjj--/0 
%	$
N 
N 
%	$s   C
*C

C
C)c                      [         R                  " 5       u  pUR                  [        R                  " S[        R
                  S95        U R                  R                  5         g )Nr  r8   )r@   rA   rG   rB   rC   float16r/  r  rH   r   s     r$   test_imshow_float16r  r  s8    llnGCIIbhhvRZZ01JJOOr'   c                     [         R                  " 5       u  pUR                  [        R                  " S[        R
                  S95        [        R                  " [        R
                  [        R                  S5      (       a
  [        5       O[        R                  " [        5         U R                  R                  5         S S S 5        g ! , (       d  f       g = f)Nr  r8   equiv)r@   rA   rG   rB   rC   
longdoublecan_castfloat64r   rq  r  r  r/  r  r  s     r$   test_imshow_float128r  y  sz    llnGCIIbhhvR]]34R]]BJJHH)+||K() 	

) ) )s   'C
Cc                      [         R                  " 5       u  pUR                  [        R                  " SS/SS//[
        S95        g )NTFr8   )r@   rA   rG   rB   r`   rF  r  s     r$   test_imshow_boolr    s3    llnGCIIbhhut}5TBCr'   c                      [         R                  " 5       u  pUR                  [        R                  " S[        R
                  5      5        U R                  R                  5         g )Nr  )r@   rA   rG   rB   r  ra  r/  r  r  s     r$   test_full_invalidr    s8    llnGCIIbggh'(JJOOr'   zfmt,counted)r   s    colorimage)rO   s   <imagezcomposite_image,count)Tr4   )Fr   c                    [         R                  " [         R                  " SSS5      [         R                  " SSS5      5      u  pE[         R                  " US-  5      n[        R
                  " 5       u  pxUR                  SS5        UR                  U/ SQS9  UR                  US S S	2   / S
QS9  U[        R                  S'   [        R                  " 5       n	UR                  XS9  U	R                  5       R                  U5      U:X  d   eg )Nr  r5   r4   r   r   r;   r   r4   r   r4   r%  ru   )r   r;   r   r4   zimage.composite_imager   )rB   r0  rx   ry   r@   rA   r   rG   r   r   r   r   r	  count)
r   countedcomposite_imager  rb   r7  r  rH   r   r   s
             r$   test_compositer    s     ;;ryyQ*BIIb!Q,?@DA
qAvAllnGCKK1IIaI%IIa"glI+,;CLL()
**,CKKK <<>(E111r'   c                      [         R                  " 5       u  pUR                  S//SS9  UR                  5         UR	                  5         UR                  5       UR                  5       s=:X  a  S:X  d   e   eg )Nr   r  r%  r  )r@   rA   rG   relim	autoscaleget_xlimget_ylimr  s     r$   
test_relimr    sZ    llnGCIIseLI)HHJLLN;;=BKKM3V33333r'   c                  r   [         R                  " 5       u  pUR                  5         UR                  SS/SS//SSSSS9nUR	                  SSS9  U R
                  R                  5         [        R                  " U R
                  R                  5       5      S	S S
24   S:H  R                  5       (       d   eg )Nr   r   r  r  F)r%  r&  r  r.  r  r  .r;   )r@   rA   rE  rG   r  r/  r  rB   r`   buffer_rgbar  r  s      r$   test_unclippedr    s    llnGCOO	QFQF#F;M 
 
/BFFVF$JJOO HHSZZ++-.sBQBw71<AACCCCr'   c                  *   [         R                  " S5      u  pU H  nUR                  5         M     US   R                  SS/SS//SSS9nUR	                  S 5        UR                  US   R                  5        [        R                  " 5       nU R                  USS	9  1 UR                  5       kS
1:X  d   eUS   R                  SS9  [        R                  " 5       nU R                  USS	9  UR                  5       UR                  5       :w  d   eg )Nr   r4   r   r;   r   r  )r%  r&  rgbar   r\   )ru   r   )r  )r@   rA   rE  rG   r_  set_clip_boxbboxr   r   r   r	  r  )rH   r   r   r   
buf_before	buf_afters         r$   test_respects_bboxr    s    ||AHC
 	QAA'|	LBT OOCFKK JKK
6K*#Z  "#v---FJJGJ

IKK	&K) I$6$6$8888r'   )rh   rN   rO   c                    [         R                  " SS5      n[         R                  " X"5      u  p4[         R                  " SUS-
  S-  -  US-
  -   5      nXUR	                  5       -  n[
        R                  S   nU R                  5       nUR                  XVUSS	9  UR                  5       nU" [        R                  " 5       " U5      5      n	XiS
'   UR                  U	SS9  g)zPer-pixel alpha channel test.r   r4   r-  r   r   g[(\?r"  r_   )r   r  r>   ).ru   r=   N)rB   r  r0  r1  r@  rM  rW  r  rG   r   r  )
r   r   rz   xxyyzzr   r  r   r  s
             r$   test_image_array_alphar    s     	AqA[[FB	SQ'2=9	:BME==#D				BIIbD	IB				B  "2&'DMIId)I,r'   c                      [         R                  " [        SS9   [        R                  " [
        R                  " S5      SS/S9  S S S 5        g ! , (       d  f       g = f)Nzalpha must be a float, two-dr  rj   r4   r  )rq  rr  rs  r@   rG   rB   rC   r!   r'   r$   !test_image_array_alpha_validationr    s9    	y(F	G

288F#Aq62 
H	G	Gs   ,A
Ac                     [         R                  S   R                  SS9n [        R                  " SSS9nUR                  S5      n[        R                  " / SQ/[        S	9nUR                  US
U SSS9nUR                  S5        UR                  R                  5         UR                  UR                  R                  5      S   S   nUR                  UR!                  US//S-  -  R"                  R%                  5       5      5      S-  R'                  [(        5      n[        R*                  " XV:H  5      (       d   eg )Nautumn_r	lightgreyrL  )gffffff?rI  rk   rl   r   )ru   ru   ru   r   r   r   r   +   O   _   B   r4   ru   ru   ru   r   r   r   "   r8   r   r   )r%  r  r$  r#  rq  r4   r   r\   )rM  rW  rX  r@   rv   r  rB   r`   r  rG   r  r/  r  r  r  r  rS  Trx  r   r   r  )r  rH   r   r   r   
from_imagedirect_computations          r$   test_exact_vminr    s   ==$222ED **ZS
1C	l	#B88	MND
 
4T	DBGGENJJOO szz223A6q9J 	1#,//55789C?fSk 
 66*23333r'   image_placementc            	      H   [         R                  " 5       u  pUR                  / SQ/ SQSSS9  [        R                  R                  S5        UR                  [        R                  R                  SS5      SS	S
SSS9  UR                  SS5        UR                  SS5        g)zC
The red box should line up exactly with the outside of the image.
)r   r   r4   r4   r   )r   r4   r4   r   r   r  rI  )colorr/  r   r   r  r  r<   ru   r4   )r  r&  r>   r$  r#  gr  N)
r@   rA   r   rB   r   r   rG   randnr   r   r  s     r$   test_image_placementr    s~     llnGCGGO_CCG@IINN8IIbiioob"%GL"!  5KKeKKer'   c                   J   ^  \ rS rSrS rS rU 4S jrS r\S 5       r	Sr
U =r$ )
QuantityNDi  c                 \    [         R                  " U5      R                  U 5      nX#l        U$ r    )rB   r  viewunits)clsinput_arrayr  objs       r$   __new__QuantityND.__new__  s%    jj%**3/	
r'   c                 (    [        USS 5      U l        g Nr  )getattrr  )r#   r  s     r$   __array_finalize__QuantityND.__array_finalize__  s    S'40
r'   c                    > [        U SS 5      n[        TU ]	  U5      n[        U[        5      (       d  Ub  [	        X25      nU$ r  )r  super__getitem__
isinstancer  )r#   itemr  ret	__class__s       r$   r  QuantityND.__getitem__  sA    gt,g!$'c:&&%*;S(C
r'   c                    [        X5      nSU;   a  [        $ [        U5      S:X  a1  US   n[        USS5      nU" [        R                  " U5      40 UD6nGOa[        U5      S:X  GaK  US   nUS   n	[        USS5      n
[        U	SS5      nU
c  UOU
n
Uc  U
OUnU[        R
                  [        R                  4;   a  X:w  a  [        eU
nOU[        R                  :X  a  U
 SU 3nOU[        R                  :X  a	  U
 SU S	3nOiU[        R                  [        R                  [        R                  [        R                  [        R                  [        R                  4;   a  S nO[        $ U" UR!                  [        R"                  5      U	R!                  [        R"                  5      40 UD6nO[        $ Uc  [        R$                  " U5      nU$ ['        X5      nU$ )
Nr  r4   r   r  dimensionlessr   *z/())r  NotImplementedr   rB   r  addsubtractr  multiplydividegreatergreater_equalequal	not_equalless
less_equalr  ndarrayr`   r  )r#   ufuncmethodinputsrj  funci0unitout_arri1u0u1s               r$   __array_ufunc__QuantityND.__array_ufunc__  s   u%F?!!v;!B2w8D2::b>4V4G[ABBWo6BWo6BzrBzrB--8$$"++%Qrd|"))#Rt1~2::r'7'788R\\77BMM3 3 %%2772::.

0CNvNG!!<hhw'G  !/Gr'   c                 @    U R                  [        R                  5      $ r    )r  rB   r  r"   s    r$   r   QuantityND.vE  s    yy$$r'   )r  )r(   r)   r*   r+   r  r  r  r  propertyr   r.   __classcell__)r  s   @r$   r  r    s,    
1%N % %r'   r  c                  *   [        SS/S5      n U S S  u  p[        R                  " U R                  [        R                  " SS/5      :H  5      (       d   eU R
                  S:X  d   e[        R                  " X-   R                  [        R                  " S/5      :H  5      (       d   eX-  R
                  S:X  d   eX!-  R
                  S:X  d   e[        R                  " [        5         U[        SS5      -     S S S 5        g ! , (       d  f       g = f)Nr4   r   mr;   zm*mzm/(m)s)	r  rB   r  r   r  r  rq  rr  r  )qq0q1s      r$   test_quantityndr#  J  s    Aq63AqTFB66!##QF++,,,,77c>>6627++QC01111G??e###G??g%%%	z	"
Z3 
#	"	"s   +D
Dc                      [        [        R                  " S5      S5      n [        R                  " 5       u  pUR                  U 5        UR                  R                  5         g )Nrj   r  )r  rB   rD   r@   rA   rG   r/  r  )r   rH   r   s      r$   test_imshow_quantityndr%  V  s<    
RWWV_c
*CllnGCIIcNJJOOr'   c                 H   [         R                  " SS[         R                  S9nSUSS2S S 24'   [         R                  R	                  USS9nS	UR
                  SS2SS24'   [        R                  S
   R                  SS9nU R                  5       nUR                  U[        R                  " SSS9SSUS9nUR                  [        R                  " SSS95        UR                  U[        R                  " SSS9SSUS9nUR                  [        R                  " SSS95        UR                  SSS9  UR                  5       nUR                  U[        R                  " SSS9SSUS9  UR                  U[        R                  " SSS9SSUS9  UR                  SSS9  g )Nr7   r4   r8   ru   r   r   F)rz  Tr"  wr  r   ro  re  r_   )rS  r&  r>   r  r,  )r5   r   r5   r   r   r   r  )rB   r  r  rY  r`   rz  rM  rW  rX  rA   rG   r   r  r  r  r  )r   r   r   masked_datar  r   r   s          r$   test_norm_changer*  _  s    7761BJJ/DD1aL%%++d+/K!%KQqS!A#X==#111<D				B	4fnn#A>&id 
 
LBKK  bq12	;V^^1%E(	 
 
NBKK  bq12FFgF&				BIId))r:!  GIIk 0 0bq A#94  IFFgF&r'   rz   c                    [         R                  " SU[         R                  S9nSUSS2S S 24'   U R                  5       nUR	                  U[
        R                  " SUR                  5       S9SS	S
9  [         R                  " SU[         R                  S9nSUSS2S S 24'   UR                  5       n[        R                  S	   R                  SS9nUR	                  U[
        R                  " SUR                  5       S9SUS
9  g )Nr7   r8   g@xDr   r   r4   ro  r_   r"  )rS  r>   r  i  r'  r  )rB   r  r  rA   rG   r   r  r@  rM  rW  rX  r  )r   r   rz   r   r   r  s         r$   test_huge_range_logr,  {  s     7761BJJ/DD1aL				BIIdQTXXZ@%I  7 7761BJJ/DD1aL				B==#111<DIId))qtxxzB%D  2r'   c                 .   U R                  SS5      nUR                  SS5      nSS/SS//SS/SS//SS/SS//4n/ SQn[        [        XE5      5       GH=  u  nu  pxX&   R                  U5        X&   R	                  U5        X6   R                  U5        X6   R                  USSSSSSS	9  X6   R                  S
S5        X6   R                  SS
5        X6   R                  R                  5         X6   R                  R                  S5        X6   R                  R                  S5        X6   R                  R                  [        R                  " S/ SQSS95        X6   R                   R                  [        R                  " S/ SQSS95        GM@     g )Nr4   r;   r   )rD   rC   mixedr_   r  r   Greys)r>   r%  rt   r  r$  r#  r  r9  g?rP  r=  )r4   r   r5   r   T)nbinsstepsinteger)rA   	enumeraterw  ra   spyrG   r   r   xaxistick_toptitleset_yset_ticks_positionset_major_locatormtickerMaxNLocatoryaxis)	r   r   ax_testax_ref	plot_dataplot_titlesr  r|   r7  s	            r$   test_spy_boxrB    s    1%Ga#F Q!Q
Q!Q
Q!QI
 -K"3y#>?:A
U#
q	E"	)#*7!" 	 	, 		4%	3%	  "	d#	**62	))a}dK	
 		))a}dK	
 @r'   znonuniform_and_pcolor.pngc                     [         R                  " SS9R                  SSSS9n [        U SS/5       H  u  p[	        XS9nUR                  [        R                  " S5      S	-  [        R                  " S5      S	-  [        R                  " S
5      R                  S5      5        UR                  U5        M     U S	   R                  [        R                  " S5      S	-  [        R                  " S5      S	-  [        R                  " S
5      R                  S5      5        U  H"  nUR                  5         UR                  SS9  M$     g )Nr  r  r;   T)sharexshareyr_   r?   r=   r   r=  r6   r(  )r  )r@   rv   rA   rw  r   rA  rB   rx   r-  rB  
pcolorfastrE  r  )r   r   r>   r   s       r$   test_nonuniform_and_pcolorrG    s    
**V
$
-
-aT
-
JC y*&=>R=
BIIaLA%ryy|q'8IIaL((0	2
R	 ?
 F
		!299Q<1,biil.B.B6.JL

G r'   znonuniform_logscale.pngc                  h   [         R                  " SSS9u  p[        S5       GH  nX   n[        U5      nUR	                  [
        R                  " SS5      S-  [
        R                  " SS5      S-  [
        R                  " S5      R                  S5      5        UR                  SS5        UR                  SS5        UR                  S5        US:X  a   UR                  S	SS
9  UR                  S	SS
9  US:X  a   UR                  S	SS
9  UR                  S	SS
9  UR                  U5        GM     g )Nr;   r4   )ncolsnrowsr6   r   r=  r  r   r&  )base)r@   rA   r  r   rA  rB   rx   r-  r   r   set_box_aspect
set_xscale
set_yscalerB  )r  r   r  r   r   s        r$   test_nonuniform_logscalerO    s    \\+FA1XVR 
BIIaOq("))Aq/Q*>IIaL((0	2
Ar
Ar
!6MM%aM(MM%aM(6MM%aM(MM%aM(
R r'   zrgba_antialias.png)r   r2   c            	         [         R                  " SSSSSSS9u  pSn[        R                  " X"45      nSUS S S2S S 24'   [        R                  " U5      U-  S-
  n[        R                  " U5      U-  S-
  n[        R
                  " XE5      u  pg[        R                  " US-  US-  -   5      nS	n	S
n
[        R                  " [        R                  S-  X-  XS-  -  S-  -   -  5      nSUS [        US-  5      2S S 24   US [        US-  5      2S S 24   S:  '   SUS [        US-  5      2S S 24   US [        US-  5      2S S 24   S:  '   US S 2[        US-  5      S 24   US S 2[        US-  5      S 24'   [        R                  USS2SS24'   SUSS2SS24'   SUSS2SS24'   SUSS2SS24'   SUSS2SS24'   [         R                  S   R                  SSS9nUR                  5       nUS   R                  USUSSS9  US   R                  US-  S -
  US-  S -   5        US   R!                  US-  S-   US-  S	-
  5        US   R                  USUSSS9  US   R                  US!S"USSS#9  US$   R                  US!S%USSS#9  g )&Nr   )      @rQ  FT)rm   rD  rE  constrained_layout   ru   r   r   K   r  r4   r  ro   rp   g    .AF   Z   g    .r         RdBu_ryellowcyan)rK  rL  r   r_   g333333rN  )r>   r  r$  r#     r   r   )r>   interpolation_stager  r$  r#  r;   r  )r@   rA   rB   rD   rx   r0  sqrtry   r2  r   ra  rW  rX  r  rG   r   r   )rH   r   ry  aarz   r{   rb   r7  Rf0r   r  r  s                r$   test_rgba_antialiasrb    s   ||Aq*U#(TCHCA	!BBssAvJ
		!q3A
		!q3A;;qDA
1q!tA	B
A
ruuqyBFQAX\123A .0Ais1Q3xilOAis1Q3xilOc)*-.Ais1Q3xilOAis1Q3xilOc)*C!HIBq#ac()| vvBr"ube|Br"ube|Br"ube|Br"uc#g~Br"uc#g~=="00hf0MD
++-CFMM"IDt#MNFOOAaCFAaCF#FOOAaCFAaCF# FMM"IDt#MN FMM"F$S  2
 FMM"F$S  2r'   c                 
   [         R                  R                  S5        [         R                  R                  SS5      nUR	                  5       nUR                  USSSS9  U R	                  5       nUR                  USSSS9  g)	zO
Show that interpolation_stage='auto' gives the same as 'data'
for upsampling.
*N,r6   r?   r"  r   r>   r  r]  r   NrB   r   r   r   rA   rG   r   r   gridr   s       r$   !test_upsample_interpolation_stageri  	  sz     IINN:99>>!QD				BIId*9"(  * 
			BIId*9"(  *r'   c                 
   [         R                  R                  S5        [         R                  R                  SS5      nUR	                  5       nUR                  USSSS9  U R	                  5       nUR                  USSSS9  g)zQ
Show that interpolation_stage='auto' gives the same as 'rgba'
for downsampling.
r   r  r   r"  r  re  Nrf  rg  s       r$   #test_downsample_interpolation_stagerk    sz     IINN899>>#s#D				BIId&y"(  * 
			BIId&y"(  *r'   c                  z   S HR  n [         R                  " SU 05         [        R                  " SS//5      R	                  5       U :X  d   e S S S 5        MT     S H9  n [
        R                  " [        5         U [         R                  S'   S S S 5        M;     g ! , (       d  f       M  = f! , (       d  f       M_  = f)Nr   r  zimage.interpolation_stager4   r   )DATAfooN)	rM  
rc_contextr@   rG   get_interpolation_stagerq  rr  r  r   )vals    r$   test_rc_interpolation_stagers  0  s    ^^8#>?::1vh'??ASHHH @?   %]]:&8;CLL45 '& % @? '&s   .B8B+
B(	+
B:	z<ignore:Data with more than .* cannot be accurately displayedzdim, size, msg)rowi   z2\*\*23 columns)coli   z2\*\*24 rowsc           
         U R                  5       nUR                  5       n[        R                  " SUS-   45      n	SU	S S 2U	R                  S-  S 24'   US:X  a  U	R                  n	UR                  U	SSSSSUS9n
[        R                  " [        S	U S
3S9   [        R                  " 5        nU R                  U5        S S S 5        S S S 5        [        R                  " SUS-  S-   45      n	SU	S S 2U	R                  S-  S 24'   US:X  a  U	R                  n	UR                  U	SSSSSUS9n
g ! , (       d  f       Nt= f! , (       d  f       N}= f)Nr4   r   ru  r   r   r  r<   )r$  r#  r%  r&  r>   rt   zData with more than z  cannot be accurately displayed.r  )rA   rB   rC   sizer  rG   rq  r  r  r   r   r   )r   r   dimrw  msgrt   high_memoryr>  r?  r`   r   r   s               r$   test_large_imager{  ;  sH    !GFHHa]#E!"E!UZZ1_

e|	AA%l&,% 
 
'B
 
k23% 8. .
/ ZZ\VV$ 
/ HHaQ'(E!"E!UZZ1_

e|	u11V*%+$ 
 
&B \
/ 
/s$   D?.D. D?.
D<	8D??
Ec           	         [         R                  R                  SS5      S-  S-   nU R                  SS5      nUS   R	                  USS9  US   R	                  USS	S
9  US   R	                  USS9  US   R	                  USSSS9  US   R	                  USSSS9  UR                  SS5      nUS   R	                  U[
        R                  " 5       S9  US   R	                  U[
        R                  " S	S9S9  US   R	                  U[
        R                  " SS9S9  US   R	                  U[
        R                  " SSSS9S9  US   R	                  USSS9  [        US   R                  S   R                  5      [
        R                  L d   e[        R                  " [        5         US   R	                  USS9  S S S 5        g ! , (       d  f       g = f)Nr   r  rI  r4   r5   r   r&  r  r  )rS  r$  r   symlogr;   r  r  )rS  r$  r#  r6   logit)r$  )	linthresh)r  r$  r#  )r  r  )rS  climfoobar)rB   r   r   rA   rG   r   r  r  typeimagesrS  rq  rr  r  )r   r   r  axtsaxrss        r$   test_str_normsr  c  s   
		r2#b(AQ"DGNN15N!GNN15rN*GNN18N$GNN18"2N6GNN17"N5Aq!DGNN16>>+N,GNN16>>r2N3GNN16,,q9N:GNN16,,qrKNLGNN17N2Qq!&&'6>>999	z	"Qqx( 
#	"	"s   ,G		
Gc                     [         R                  " [        R                  R                  [        5       S9n [        R                  " [        SS9   U " [        R                  " S5      S 5        S S S 5        [        R                  " [        SS9   U " [        R                  " S5      [        R                  " S5      5        S S S 5        [        R                  " [        SS9   U " [        R                  " S5      [        R                  " S5      5        S S S 5        [        R                  " [        SS9   U " [        R                  " S5      [        R                  " S5      5        S S S 5        [        R                  " [        S	S9   U " [        R                  " S5      [        R                  " S5      5        S S S 5        [        R                  " [        S
S9   U " [        R                  " S[        R                  5      [        R                  " S5      5        S S S 5        [        R                  " [        SS9   U " [        R                  " S5      [        R                  " S5      R                  5        S S S 5        [        R                  " S5      nSUR                  l        [        R                  " [        SS9   U " [        R                  " S5      U5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN@= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN}= f! , (       d  f       GN-= f! , (       d  f       N= f! , (       d  f       g = f)Nr*  zincompatible function argumentsr  )r=  r=  zdifferent dimensionalities)r=  r=  r6   z3D input array must be RGBA)r=  r=  r;   z3D output array must be RGBAzmismatched typeszmust be C-contiguousFzOutput array must be writeable)	functoolspartialrM  _imageresampler   rq  rr  rs  rB   rC   r  rF   r  flags	writeable)r  r  s     r$   test__resample_valid_outputr  y  s     !4!4
KH	y(I	J&!4( 
K	z)E	F&!288I#67 
G	z)E	F)$bhhv&67 
G	z)F	G)$bhhy&9: 
H	z)G	H)$bhhy&9: 
I	z);	<&"((+RXXf-=> 
=	z)?	@&!288F#3#5#56 
A ((6
CCII	z)I	J&!3' 
K	J# 
K	J	F	F	F	F	G	G	H	H	<	<	@	@
 
K	Jsa   K'2K9!2L42L2L/AM<<M M$'
K69
L
L
L,/
L>
M
M!$
M2zdata, interpolation, expected)rI  r  r  )
rI  rI  rI  r  r  r  r  r  r  r  )rI  r  r  r  r   r  )	rI  r  r  r  r  r  r   r  r  )
rI  rI  g333333?gzG?gHzG?g=
ףp=?gRQ?g?r  r  r  )rI  rI  rI  rI  rI  gQ?g)\(?r  gRQ?gq=
ףp?gHzG?gףp=
?r  g(\?gQ?r  r  r  r  r  )r4   r   i   r  r  c                    [         R                  " X R                  5       S   :H  5      (       a  SOSn[        5       R	                  UR
                  S   U R
                  S   -  SS9n[         R                  " U5      n[        R                  " XXQS9  [        XbUS9  X5-   n[         R                  " U5      n[        R                  " XUUS9  [        XUS9  g )Nr   gMb`?r4   )sxsyr=   )atol)
rB   r  rx  r   r2  r   
empty_liker   r  r   )	r   r>   expectedr0   r  affine_transformaffine_resultnonaffine_transformnonaffine_results	            r$   test_resample_nonaffiner    s    2 tzz|A.//1TD  z''8>>!+<tzz!}+LQR'SMM(+M
OOD)9WM$7 -?}}X.
OOD,?"/1$T:r'   c                     [         R                  " 5       n [        U 5      n[        R                  " [
        SS9   UR                  5         S S S 5        [        R                  " S[        S9R                  S5      nUR                  U5        UR                  5       S:X  d   eUR                  5       UR                  5       :X  d   eg ! , (       d  f       N= f)Nz"You must first set the image arrayr  r  r8   r  )r@   r  r   rq  rr  r  	get_shaperB   rx   r  r-  rA  get_sizer  s      r$   test_axesimage_get_shaper    s    	B	2B	|+O	P
 
Q
		"E"**62AKKN<<>V###;;=BLLN*** 
Q	Ps   C
Cc                     [         R                  " 5       R                  5       n [        R                  " S5      R                  S5      nU R                  XR                  S9  U R                  5       S:X  d   eU R                  U[        5       R                  S5      U R                  -   S9  U R                  5       S:X  d   eU R                  XR                  SS9  U R                  5       S:X  d   eg )Nr6   rj   r*  r   r   r4   )r+  r%  )r@   rv   r  rB   rx   r-  rG   r  
get_aspectr   r2  r.  r  s     r$   .test_non_transdata_image_does_not_touch_aspectr    s    		!	!	#B	1		f	%BIIbLLI)==?f$$$IIbHJ,,Q/",,>I?==?aIIbLLI3==?ar'   zdownsampling.png)r   r2   rQ   c                  @   Sn [         R                  " U 5      U -  S-
  n[         R                  " U 5      U -  S-
  n[         R                  " X 45      nSUS S S2S S 24'   [         R                  " X5      u  pE[         R                  " US-  US-  -   5      nSnSn[         R
                  " [         R                  S-  Xv-  XS-  -  S-  -   -  5      n	SU	S [        U S-  5      2S S 24   US [        U S-  5      2S S 24   S:  '   SU	S [        U S-  5      2S S 24   US [        U S-  5      2S S 24   S	:  '   U	S S 2[        U S
-  5      S 24   US S 2[        U S
-  5      S 24'   Un	[        R                  " SS
SSS9u  pUS   R                  U	SSSS9  US   R                  SS5        US   R                  SS5        US   R                  S5        [        UR                  SS  / SQ/ SQ5       H/  u  pnUR                  XUSS9  UR                  SU SU S35        M1     g )Ni  r   ru   r   r5   rk   r  r4   r  r;   )rD  r   
compressedrm   layoutr\  r_   r  rY  )r>   r]  r  }   r  rS  ro  Zoom)r_   r_   r   r   r   )r   r  r   r  r   zinterpolation='z	'
space='')rB   rx   rD   r0  r^  ry   r2  r   r@   rA   rG   r   r   ra   rw  flat)ry  rz   r{   r_  rb   r7  r`  ra  r   r  rH   r   r   r}  spaces                  r$   test_downsamplingr    s)    	A
		!q3A
		!q3A	!BBssAvJ;;qDA
1q!tA	
BA
ruuqyBFQAX\123A13Aks1q5zk1naQUQ'#-.12Aks1q5zk1naQUQ'#-.1c!a%jk>*Bq#a!e*+~
A||Aq&FHCIQiV"  $IsC IsC I !" 0C!IKE 			!u 	 	!
vhjqABKr'   zdownsampling_speckle.pngc            	      L   [         R                  " SSSSSSS9u  pUR                  5       n[        R                  " S5      R                  SS5      [        R                  " S	5      -  S
-  R                  n[         R                  " S5      R                  SS9n[        R                  " SSS9nUS   R                  S5        US   R                  [        R                  " U5      X4SS9  US   R                  S5        US   R                  [        R                  " U5      X4S9  g )Nr4   r   )r5   g@Tr  )rm   rD  rE  r  i   ru   i  rp   r"  r  )rK  r;   r  ro  r   z"interpolation='auto', stage='rgba'r  )r  rS  r]  z"interpolation='auto', stage='auto')r  rS  )r@   rA   r  rB   rx   r-  rD   r  get_cmaprX  r   r  ra   rG   triu)rH   r   rK   cmrS  s        r$   test_downsampling_speckler    s    ||Aq(4#/1HC
++-CIIdO##B*RWWS\9b@
C
CC	i	 	.	.C	.	8B>>qr*D
 F9:FMM"''#,RMO F9:FMM"''#,RM3r'   zupsampling.pngc                     [         R                  R                  S5        [         R                  R                  SS5      n [        R
                  " SSSSS9u  pUS   R                  U S	S
9nUS   R                  S5        US   R                  U S	SS9  US   R                  S5        US   R                  U S	SSS9  US   R                  S5        UR                  X2SSS9  g )Nrd  r6   r4   r;   )g      @r;   r  r  r   r"  )r  zAinterpolation='auto'
stage='antialaised'
(default for upsampling)sincr  r>   z:interpolation='sinc'
stage='auto'
(default for upsampling)r   r  )r  r>   r]  z!interpolation='sinc'
stage='rgba'r  rP  )r   shrinkrR  )	rB   r   r   r   r@   rA   rG   ra   r  )r  rH   r   r   s       r$   test_upsamplingr    s     IINN:
		q!A||Aq(<HHC	Qqy	)BFMO FMM!)6M:FFH FMM!)6vMVF9:LLCL7r'   )r  r
  int16r   int8rF   ndim)r   r;   c                 0   [         R                  R                  S5      nUS:X  a  SOSnUR                  US9R	                  [         R
                  " U SS95      n[        R                  " 5       u  pVUR                  U5      nUR                  S 5      S     g )	NiU  r   rj   )r   r   r;   )rw  T)copyr   )
rB   r   default_rnguniformr   r9   r@   rA   rG   r  )r9   r  rngr   r   rH   r   
axes_images           r$   test_resample_dtypesr  "  sx     ))


%CaiFYE;;E;"))"((5t*DEDllnGC4J$"r'   
intp_stagerm  c                    U R                  SS5      nUR                  SS5      nSu  pVSn[        R                  R                  XV5      n[        R                  R                  XVS5      n	[        R                  " XVS45      n
[        R
                  " XR                  XVS45      4SS9nUS   S   R                  U	5        US   S   R                  [        R
                  " X4SS95        US   S   R                  XUS	9  US   S   R                  [        R
                  " XU
-  4SS9US
9  US   S   R                  XUS	9  US   S   R                  XS
9  US   S   R                  U5        US   S   R                  XS9  US   S   R                  XUS	9  US   S   R                  [        R
                  " XUR                  XVS45      -  4SS9US
9  [        R                  R                  XV5      nUS   S   R                  XUS	9  US   S   R                  [        R
                  " XR                  XVS45      UR                  XVS45      -  4SS9US
9  g )Nr   r;   r  r   r4   ru   r  r   )r]  r   )r]  r  )rA   rB   r   r   rD   r  r-  rG   )r   r   r  axs_tstaxs_refnynxscalar_alphaarray_alphaim_rgbim_concat_default_aim_rgbanew_array_alphas                r$   2test_interpolation_stage_rgba_respects_alpha_paramr  3  sw    1%Gq!$GFBL))..(K YY^^BA&F''21+.nn	$$ba[12G AJqM AJqM(EBOPAJqM|TAJqM
$778r	
)  
 AJqM{SAJqMA AJqM!AJqM3AJqMUAJqM
K$7$7$DDEB	
)  
 iinnR,OAJqMXAJqM
(("!5&&{34 5;=	
  *	  r'   znn_pixel_alignment.pngc                    [         R                  " SS5      u  p[        / SQ5       H  u  p4[        R                  " US-  5      R                  XD45      S-  n[        R                  " SU5      n[        S5       H  nUS:X  a  X'U4   R                  USSS	9  O&X'U4   R                  USSXXs4   R                  -   S
9  X'U4   R                  5         X'U4   R                  USUSSSS9  X'U4   R                  USUSSSS9  M     M     g )Nr   r;   )r;   rD  r  r6   r  r   Graysr_   r  r  r>   r+  ru   r   r  dashedr/  r  ls)r@   rA   r3  rB   rx   r-  r  rG   r.  rE  vlineshlines)r0   rH   r   jry  r   sepsr  s           r$   test_nn_pixel_alignmentr  b  s   ||Aq!HC*%yyA&&v.2yyq!qAAvqD	  G9 M qD	  G9+=AD	@S@S+S ! U 1I""$1IT2qS(K1IT2qS(K  &r'   z!alignment_half_display_pixels.pngc           
         [         R                  " SSS9nUR                  S5        / SQnSS/n/ nU HG  n[        U5       H5  u  pgUS;   a  US	-   OUnUR	                  UR                  XxS
S// / S95        M7     MI     [        U5       HN  u  pU
R                  5       R                  n[        USS USS -
  SSSS9  [        US-  U	S-  S;   a  SOSSSS9  MP     Sn[        R                  " US-  5      R                  X45      S-  n[        R                  " SU5      n[        U5       H  u  pU
R                  S5        U	S-  S:  a  X
R                  -   OU
R                  nU
R                  USU	S-  S:X  a  SOSU	S:  a  SOSUS9  U
R                  USUS-
  SS S!S"9  U
R                  USUS-
  SS S!S"9  U
R                    H!  nU
R                   U   R#                  S#5        M#     M     g )$N)r5   r   rk   rl   r  )r)  gFx?g=
ףp=?g^I+?gS?g?g(\?)r4   r;   r6   g?g(\?g333333?)xticksyticksr   r6   r   r;  gvIh%<=)rtolr  r4   r5   r   r   r=  r  r  r  r   r_   r   rq   r  r>   rt   r+  r  )r   )r   r6   r  )r   )r5   r   )r@   rv   r  r3  appendr  r  extentsr   rB   rx   r-  r.  rG   r  r  r  set_linestyle)r0   rH   corner_xcorner_yr   cyixcxmyr  r   r  ry  r   r  r+  spines                    r$   "test_alignment_half_display_pixelsr  y  s     **V
-Cc0Hd|H
C)FB "ifRBJJs||RT5$9"R|PQ *  3&&(00!wq|3RaeL!AEY,>SAU	,   	A99QT?""A6*Q.D99T1D3
9:Q!&5	
		$W-.UaZ	Y$%F% 	 	'
 			$a#g#U{	K
		$a#g#U{	KYYEIIe**<8   r'   zimage_bounds_handling.pngg~jtx?)r   rQ   c                 >   [         R                  " SS5      u  pSn[        / SQ5       H  u  pE[        R                  " US-  5      R                  X345      nXcS-  -  US-  S-  -   n[        5       R                  US-  S-
  US-  S-
  S5      n[        S5       H}  nXrX4   R                  -   n	US:X  a  X	-   n	X(U4   R                  US	UU	S
9  X(U4   R                  5         [        SX3SSSSXrX4   R                  -   S9n
X(U4   R                  U
5        M     M     g )Nr   r;   r  )r_   r   r?   r6   r   r   r4   r  r  )r  r  r  r<   r  )	edgecolorr  r/  r  r+  )r@   rA   r3  rB   rx   r-  r   rotate_aroundr  r.  rG   rE  r   r  )r0   rH   r   ry  r  r>   r   rotationr  r+  boxs              r$   test_image_bounds_handlingr    s2    ||Aq!HC
A%&HIyyA&&v.d{dQh!^+:++AaCGQqSWa@qA qt9#6#66IAv.:	1IT}'0  2 1I""$L!&+v#(&.QT1D1D&DFC 1I  %  Jr'   zrgba_clean_edges.pngg~jth?c                     [         R                  R                  S5        [         R                  R                  SS5      n [         R                  " X /5      n [         R
                  U SSS2SS24'   [        5       R                  SSS5      n[        R                  " SS5      u  p#[        S5       H  n[        SSSS	S
S9n[        SSSSS
S9n[        SSSS	SSS
S9nX4   R                  U5        X4   R                  U5        X4   R                  U5        X4   R                  XS4   SSXU   R                  -   S9  X4   R                  5         X4   R!                  SS5        X4   R#                  SS5        M     g )Nrd     r4   r   r6   rQ  )      @r   r5   blackr   )r  zorder)r   r,  r  r  )r  r,  r<   r   )fcecr   r  .r?   r  )r>   r]  r+  g      r:  )rB   r   r   r   stackra  r   r  r@   rA   r  r   	add_patchrG   r.  rE  r   r   )r   r  rH   r   r  r  r  partly_blacks           r$   test_rgba_clean_edgesr    sU   IINN:99>>!QD88TL!DDAaC1z''S!4H||Aq!HC1X)QC$B Qg&'*16&dc6l$.F (q6+;+; ; 	 	= 	c"c"! r'   zaffine_fill_to_edges.pngc                      [         R                  " SS5      u  pSn[        R                  " US-  5      R	                  X"45      S-  n[        5       [        5       R                  SU* S-   5      R                  SS5      [        5       R                  U* S-   S5      R                  SS5      /n[        S5       H  n[        S5       H  nUS:X  a  SOSnXU4   R                  US	S
UXE   XU4   R                  -   S9  XU4   R                  5         XU4   R                  SUS-
  /SSSSS9  XU4   R                  SUS-
  /US-
  USSS9  XU4   R                  SUS-
  /SSSSS9  XU4   R                  SUS-
  /US-
  USSS9  M     M     g )Nr   r;   rD  r   r4   ru   r   rq   r  r   r  r  r   r  )r/  r  )r@   rA   rB   rx   r-  r   	translater2  r  rG   r.  rE  r  r  )rH   r   ry  r   r+  r  r  rt   s           r$   test_affine_fill_to_edgesr    s    ||Aq!HC	A99QT?""A6*Q.D%%a!a066q"=%%qb1fa066r1=?I 1XqA !QWGF1IT+4V'0|cQ$i6I6I'I  K 1I""$1IdAG_b!5I1IdAG_a!eQ3eL1IdAG_b!5I1IdAG_a!eQ3eL  r'   )
contextlibr   r  r   r   pathlibr   r  r  urllib.requestr  numpyrB   numpy.testingr   r   PILr   
matplotlibrM  r   r	   r   r
   r   r@   r   r   matplotlib.imager   r   r   r   r   matplotlib.patchesr   matplotlib.testing.decoratorsr   r   matplotlib.transformsr   r   r   r   matplotlib.tickertickerr;  rq  fixturer0   rL   re   markparametrizer~   r   r   r   r   r   r   r   r   r   r   r   r   r   r  contextr  r  r8  rD  ra  rH  rY  rb  rk  rm  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rx   r-  r  r  r  r(  r@  rB  rH  r^  rc  rf  rk  machiner~  r  splitr9   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r%  r*  r,  rB  rG  rO  rb  ri  rk  rs  filterwarningsr{  r  r  r`   NEARESTBILINEARr  r  r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  )r  s   0r$   <module>r     s]      	 	   
   =  F F< < ( O L L #  ( ( %&DP	. Q	. +,##U^WN+N+  ,udm<:,E5>QB R =B ' . .  " 	) 	)$$  >?- @-D, GW#56@ 7@  BCK DK*2)4 =/t?K6 L6 7  0 @34040*D+N 	3Z	3Z	3Z	3Z	3Z#Y	2Y	& 
P
P* %.	=),#661a.	4 g,/0r(Xa&8DD 5>
aVH	%';<$<.C8*	%'78FFAq>
YK	($/DD> <.0 1 #$G4 5   ,-4WI XI =/uen$'))F8 /0"'33 *+_4 (% )% $%#U^WN!N!: ()t7K L0 GF 34"'33!'0-- 		2		"ryy~'='=f'E	G		2		"ryy}'<'<V'D	F11B $%4O P >"OL M6	%3( ./T'S2>2>> <.d/J+ K+" )*OT
* U
* 01#++-9at"'33D& #9#?#?#AB#Aabhhqk#ABD%D%& )*GL M *+WM N /0"'33 ^^! "#	1#	1D
 02DEG09j2IJ2 KG2 4	D9$  56- 7-$3
 74 46 $%5%."'3
3
"9% 9%x	  ' '6 r1g&2  '2$ 
 
@ ./w? @ ,-W= >( '(TJ02 K02f * *& * *$<  = >GW#569689 & 9 7>&B ) )*(. 8hh !6>>hhBCDFhh./0&..hh=>?Ahh !6??hhKLMOhhc
|foohh G H IJ 	hhc
|foorwww/DEhhc
|fnnnnbggc3'c):;<DDQKMhhc
|foonnbggc3'kk#sC077<sBSH3Nggc3') **1'!R.:(;)(;0	+  %&g4#++-9atECECB -.g4P4 Q4( g49898* > (	# )	
	# '78 56* 7 9*Z +,ODL EL, 67wG69 H69r ./ER& S&< )*/uM# N#: -.oFM GMG Cs   j
