
    fJj                       d dl mZ d dlZd dlZd dlZd dlmZ d dlZd dlZd dl	Z
d dlZd dlmZmZ d dlmZ d dlZd dlmZmZmZmZmZmZ d dlmZmZmZm Z m!Z! d dl"m#Z# d d	l$m%Z%m&Z& d d
l'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z. d dl/Z/e/j`                  d        Z1 e&dgdd      d        Z2 e&dgdddgdd      d        Z3e/jh                  jk                  dddg       e&dgddgd      d               Z6d Z7e/jh                  jk                  dg d        e%       d!               Z8 e%       d"        Z9 e%       d#        Z:d$ Z;d% Z<e/jh                  jk                  d&g d'      d(        Z=d) Z>e/jh                  jk                  d*d+d,g      d-        Z?e/jh                  jk                  d&g d.      d/        Z@d0 ZAd1 ZBd2 ZC e&d3gdd      d4        ZDej4                  j                  d       e%       d5               ZFe/jh                  jk                  d6g d7      d8        ZGd9 ZHe/jh                  jk                  d:d;d;gd gd;d<gd=gd>d;gd?gd@d;gd?gdAdBgdCgdDd;gdgd;dDgdgg      dE        ZIe/jh                  jk                  dFdGdHggdIfdJdKggdLfej                  d=dMggdNfd=dOggdPfdDdDggdQfd d ggdRfg      dS        ZKe/jh                  jk                  dFdGdHggd d gggdTfdJdKggdUd gggdVfej                  d=dMggg dWggdNfg      dX        ZL e&dYgdZ      d[        ZM e&d\gdZ      d]        ZN e%       d^        ZOd_ ZPd` ZQ e&dagdd      db        ZR e&dcgddgddd      de        ZSdf ZT e&dggdd      dh        ZU e&digdddjk      dl        ZV e%dgm      dn        ZW e&dogddgddd      dp        ZX e&dqgdd      dr        ZYds ZZ e&dtgdd      du        Z[dv Z\dw Z]dx Z^dy Z_dz Z`d{ Zae/jh                  jk                  d|e  ej                  d}       ej                  d~       ej                  d      j                  d      fe! ej                  d}       ej                  d~       ej                  d      j                  d      fg      d        Zdd Zed Zf e&dgdd      d        Zg e&dgdd      d        Zhd Zid Zj e&dgdddk      d        Zk e&dgdd      d        Zld Zm e&dgdd      d        Zn e&dg ej                         dk(  rd nddd      d        Zpd Zqe/jh                  jk                  ddj                         D  cg c]  } ej                  |        c}       d        Zt e&dgdd      d        Zu e&dgdd      d        Zv e&dgdd      d        Zwe/jh                  jk                  dej                  ej                  d d g      d        Zzd Z{d Z|d Z}d Z~e/jh                  jk                  dddg      e/jh                  jk                  dddg      d               Zd Zd Zd Z e%g dm      d        Zd Zej4                  j                  d      d        Z e&dgddgddd      d        Z G d dej                        Zd Zd Z e%       d        Ze/jh                  jk                  ddDd=g       e%       d               Z e%       d        Z e&dgdZ      dĄ        Z e&dgdZ      dƄ        Z e&dgddȫ      dɄ        Z e%       dʄ        Z e%       d˄        Zd̄ Ze/jh                  j)                  dͫ      e/jh                  jk                  d*d+d,g      e/jh                  jk                  dg dϢg dТg       e%       dф                             Z e%       d҄        Zdӄ Ze/jh                  jk                  d ej0                  g dբg      ej2                   ej0                  g d֢g      f ej0                  g dעg      ej2                   ej0                  g dآg      f ej0                  g dբg      ej4                   ej0                  g d٢g      f ej0                  dUdgg      ej4                   ej0                  g dۢg      f ej0                  dUdUgg      ej4                   ej6                  ddU      f ej0                  dUdgg      ej2                   ej8                   ej6                  ddU       ej6                  ddګ      g      j                  d=dD      f ej0                  dUdgg      ej4                   ej8                   ej6                  ddU       ej:                  d;ddݫ      j=                  e      dz  dz  dUz    ej6                  ddګ      g      j                  d=dD      fg      d        Zd Zd Z e&dgdd ej                         dk(  rd ndj      d        Z e&dgddȫ      d        Z e&dgddȫ      d        Ze/jh                  jk                  dd      e/jh                  jk                  dd      d               Ze/jh                  jk                  dd       e%g dm      d               Z e&dgdZ      d        Z e&dgdZ      d        Z e&dgdd      d        Z e&dgdd      d        Z e&dgdZ      d        Zyc c} w )    )	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                  .     G d dt               }  |        S )zGNon-affine identity transform for compositing with any affine transformc                       e Zd ZdZdZd Zy)6nonaffine_identity.<locals>.NonAffineIdentityTransform   c                     | S N selfs    e/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/matplotlib/tests/test_image.pyinvertedz?nonaffine_identity.<locals>.NonAffineIdentityTransform.inverted"   s    K    N)__name__
__module____qualname__
input_dimsoutput_dimsr$   r    r%   r#   NonAffineIdentityTransformr      s    
	r%   r+   )r   )r+   s    r#   nonaffine_identityr,      s    Y  &''r%   zinterp_alpha.pngT_classic_test)remove_textr   c                  X   t        j                  dd      \  } \  }}t        j                  d      }t        j                  d      |d<   t        j
                  t        j                  dt        j                              |d<   |j                  |d	       |j                  |d
	       y)z:Test the interpolation of the alpha channel on RGBA images   r   )   r1      r1   r1   ).r0   dtype.   noneinterpolationbilinearN)pltsubplotsnpzerosonestriluint8imshow)figaxlaxrimgs       r#   test_alpha_interprH   '   s|     ll1a(OC#s
((9
C''&/CK''"''&9:CKJJs&J)JJs*J-r%   interp_nearest_vs_noneg@pdfsvgmpl20)tol
extensionsr.   r   c                  D   dt         d<   t        j                  g dg dgg dg dggt        j                        } t	        j
                  dd	      \  }\  }}|j                  | d
       |j                  d       |j                  | d       |j                  d       y)z5Test the effect of "nearest" and "none" interpolationr7   savefig.dpi)          )z   g      )      r   )rX   c   G   r4   r0   r   r8   r9   zinterpolation nonenearestzinterpolation nearestN)r   r>   arrayrB   r<   r=   rC   	set_title)XrD   ax1ax2s       r#   test_interp_nearest_vs_nonera   4   s      H]
>?3 -029;	CAll1a(OC#sJJqJ'MM&'JJq	J*MM)*r%   suppressCompositeFfigimagepng)rN   r   c                 P   t        j                  dd      }| |_        t        j                  t        j
                  d      dz  t        j
                  d      dz        \  }}t        j                  |dz  |dz  z   ||z  z
        }t        j                  d|dz  z  d|dz  z  z         }||dz  z   }|j                  |d	d	d
       |j                  |d d dd d f   d	dd
       |j                  |d d d d df   dd	d
       |j                  |d d dd d df   ddd
       y )Nr   r   d   figsizedpig      Y@r      2   r1   r   lower)xoyoorigin)r<   figurerb   r>   ix_arangesinrc   )rb   rD   xyzcrG   s          r#   test_figimagerz   F   s    **V
-C-C66"))C.5("))C.3*>?DAq
q!tad{QqS !A
r!Q$wAqD !A
ac'CLLqL1LLTrT1W!GL<LLQ"W#!GL<LLTrT4R4ZSSLAr%   c                      t        j                         \  } }|j                  g d       t        j                         }| j                  |       |j                  d       t        j                  |       y )N)r0   r   r7   r   )r<   r=   plotioBytesIOsavefigseekimread)rD   axbuffers      r#   test_image_python_ior   V   sK    llnGCGGIZZ\FKK
KKNJJvr%   z!img_size, fig_size, interpolation))r1   r   hanning)r1   r1   r[   )r1   
   r[   )r7   333333@r   )r7   g333333"@r[   c                    t         j                  j                  d       t        j                  d   }t         j                  j                  t        ||z        t        ||z              }| |fD ]  }|j                  ||        | j                         }|j                  g d       |j                  |d       |j                         }|j                  g d       |j                  ||       y )N!N,rP   r   r   r0   r0   autor9   )r>   randomseedr<   r   randintset_size_inchesr=   set_positionrC   )	fig_testfig_refimg_sizefig_sizer:   rj   ArD   r   s	            r#   test_imshow_antialiasedr   _   s     IINN8
,,}
%C
		s3>*Ch,?@A'"Hh/ #				BOOL!IIavI&				BOOL!IIa}I-r%   c                 *   t         j                  j                  d       t        j                  d   }t         j                  j                  t        |dz        t        |dz              }| |fD ]  }|j                  dd        | j                         }|j                  |d       |j                  dd       |j                  dd       |j                         }|j                  |d	       |j                  dd       |j                  dd       y )
Nr   rP   r7   r   r   r9   r   rk   r[   )r>   r   r   r<   r   r   r   r   r=   rC   set_xlimset_ylim)r   r   rj   r   rD   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                    t        j                  d       t        t              j                  dz  }t        t              j                  dz  }| j                  d      }|d   j                  t        j                  |             |d   j                  t        j                  |             |j                  d      }|d   j                  t        j                  |             |d   j                  t        j                  |             y )Ndefault%baseline_images/pngsuite/basn3p04.png%baseline_images/test_image/uint16.tifr   r   r0   )r   user   __file__parentr=   rC   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                  "   t        j                  t        j                  j	                  t        j                  j                  t              ddd            } | j                  t        j                  k(  sJ t        j                  |       dk(  sJ y )Nbaseline_images
test_imagez
uint16.tif )r<   r   ospathjoindirnamer   r5   r>   uint16sumrG   s    r#   test_imread_pil_uint16r      sc    
**RWW\\"''//(";&lD EC99		!!!66#;)###r%   c                      t        j                  t        t              j                  dz        } | j
                  t        j                  k(  sJ t        j                  |       dk(  sJ y )Nr   r   )	r<   r   r   r   r   r5   r>   r   r   r   s    r#   test_imread_fspathr      sP    
**X GGIC99		!!!66#;)###r%   fmt)rd   jpgjpegtiffc                 R   | dv}t         j                  j                  d       t         j                  j                  dd      }t	        j
                         }t        j                  ||| d       t	        j
                         }t        j                  ||| d       |j                  d       t        j                  ||       }|j                  d       t        j                  ||       }|j                  ddd	|z   fk(  sJ |j                  ddd	|z   fk(  sJ t        ||       y )
N)r   r   r0   i@  r   )formatrj   rg   r   r   r7   )r>   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JJy$s2**,KJJ{D#6NN1zz)C0HQK4J>>dAq9}5555aY7777x,r%   c                     ddgddgddgg} t        j                         }t        j                  || d       |j	                  d	       t        j
                  |      }t        t        j                  |       |d d d d d d
f          y )N)      ?        r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   rd   r   r   r7   )	r}   r~   r<   r   r   r   r   r>   r\   )img_databuffread_imgs      r#   test_imsave_python_sequencesr      s     
/*	/*	/*H ::<DJJtXe,IIaLzz$H
Arrr%   rp   upperrm   c                     t        j                         }t        j                  dd      }t	        j
                  ||d|        y )N)r   r   r2   rB   r4   rd   )arrr   rp   )r}   r~   r>   r?   mimager   )rp   bufresults      r#   test_imsave_rgba_originr      s1     **,CXXk1F
MM#6%?r%   )rd   rJ   psepsrK   c                 l    t        j                  |d|  z  t        j                  ddgg      |        y )Nzunused.r   r0   r   )r<   r   r>   r\   )r   tmp_paths     r#   test_imsave_fspathr      s,    JJxGC5/)288aVH+=cJr%   c                     t         j                  j                  d       dD ]  } t         j                  j                  ddd      }t	        j
                         }t        j                  ||| d       |j                  d       t        j                  |      }d|z  j                  d	      }| d
k(  r|d d d   }d|z  j                  d	      }t        ||        y )Nr0   )rm   r      r2   rd   )rp   r   r   rX   rB   rm   rq   )r>   r   r   r   r}   r~   r<   r   r   r   astyper   )rp   r   r   arr_bufs       r#   test_imsave_color_alphar      s     IINN1$yy~~b"a(zz|

4fU;		!**T"
 D  )W":Dw;&&w/4)! %r%   c                      ddl m}  t        j                         } |        }|j	                  dd       t        j                  |ddgddggdd	|i
       t        j                  |      }|j                  d   dk(  sJ y )Nr   )PngInfoSoftwaretestr0   r   r7   rd   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                  \   ddl m}  t        j                         }ddi}t	        j
                  |ddgddggd|	       t        |      dk(  sJ t        j                  |      }|j                  j                         D ci c]  \  }}| |   j                  | }}}|d
   dk(  sJ y c c}}w )Nr   )TAGS_V2descriptionz
test imager0   r   r7   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1DGLL!O(9D:"#|333 ;s    B(image_alphac                  4   t         j                  j                  d       t         j                  j                  dd      } t	        j
                  dd      \  }\  }}}|j                  | dd       |j                  | dd       |j                  | dd	       y )
Nr      r0   r7   r   r8   )alphar:         ?r[   )r>   r   r   r   r<   r=   rC   )ZrD   r_   r`   ax3s        r#   test_image_alphar     sw    IINN1
		q!A<<1-C#sCJJq6J2JJq6J2JJq9J5r%   c                    t         j                  j                  d       t         j                  j                  ddd      j	                  t         j
                        }t        j                  |dz        }| j                  dd      \  \  }}\  }}|j                  |d       |j                  |d       |j                  |d	       |j                  |d
       t        j                  |t        j                  d      fd      j	                  t         j
                        }t        j                  |t        j                  ddt         j                        fd      }	|j                  dd      \  \  }}\  }}d|d d d d df<   |j                  |       d|d d d d df<   |j                  |       d|	d d d d df<   |j                  |	       d|	d d d d df<   |j                  |	       y )Nr   r   r7   rX   r   r   r         ?g?g?)r   r   r0   axisrW      )r>   r   r   r   r   float32rB   r=   rC   concatenater@   full)
r   r   rgbfrgbuax0r_   r`   r   rgbafrgbaus
             r#   test_imshow_alphar  $  s    IINN899>>!Q"))"**5D88D3JD'00A6Zc3#sJJt3JJJt4J JJt7J#JJt7J#NND"'')"45A>EEbjjQENND"'')S"(("CD1ME&//15Zc3#s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))r7   FFF)r2   FFF)r2   FTF)r2   FFT)r2   TFFc                    |r%t         j                  j                  dddd| f      }n0t         j                  j                  dd| f      }|rd|d d d d df<   |rt        j                  ddgddgg      }nd }t	        j
                         \  }}|j                  ||	      }|j                          t         j                  j                  ||j                         y )
Nr      r   r0   r7   333333?r   皙?r  )r>   r   randintr\   r<   r=   rC   draw_without_renderingtestingr   _A)	
n_channelsis_int	alpha_arropaquer\   r   rD   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                     ddl m}  t        j                         \  }}|j	                  t        j                  d      j                  dd      d      }d\  }}|j                  j                  ||g      \  }} | d|j                  ||      }|j                  |      d	k(  sJ d
\  }}|j                  j                  ||g      \  }} | d|j                  ||      }|j                  |      J |j                          |j	                  t        j                  d      j                  dd      d      }d\  }}|j                  j                  ||g      \  }} | d|j                  ||      }|j                  |      d	k(  sJ t        j                         \  }}|j	                  t        j                  d      j                  dd      g d      }d\  }}|j                  j                  ||g      \  }} | d|j                  ||      }|j                  |      dk(  sJ d\  }}|j                  j                  ||g      \  }} | d|j                  ||      }|j                  |      J d\  }}|j                  j                  ||g      \  }} | d|j                  ||      }|j                  |      J t               j                  d      j                  d      }	|j	                  t        j                  d      j                  dd      |	|j                  z         }d\  }}|j                  j                  ||g      \  }} | d|j                  ||      }|j                  |      d	k(  sJ y )Nr   
MouseEventrg   r   r   )rp   )r2   r2   motion_notify_event,   )g333333$@r2   rm   )r   r   r   r   extent)      ?r#  7   )r  r#  ){Gz?g{Gzr   r   	transform)r7   r   )matplotlib.backend_basesr  r<   r=   rC   r>   rt   reshape	transDatar'  canvasget_cursor_dataclearr   scalerotate)
r  rD   r   r   rv   rw   xdispydispeventtranss
             r#   test_cursor_datar4  Y  s<   3llnGC	299S>))"b1'	BBDAq<<))1a&1LE5,cjj%GEe$*** DAq<<))1a&1LE5,cjj%GEe$,,, HHJ	299S>))"b1'	BBDAq<<))1a&1LE5,cjj%GEe$***llnGC	299S>))"b1:J	KBDAq<<))1a&1LE5,cjj%GEe$*** DAq<<))1a&1LE5,cjj%GEe$,,,DAq<<))1a&1LE5,cjj%GEe$,,, JQ&&s+E	299S>))"b1"R\\1 
 
3BDAq<<))1a&1LE5,cjj%GEe$***r%   zxy, datar         ?r0   g      @r   g      !@      #@g      @U   rq   c                 `   ddl m} t        j                  g d      }t        j                  g d      }|t        j                  d d f   dz  |d d t        j                  f   dz  z   }t        j                         \  }}t        ||j                         |j                         |j                         |j                         f      }|j                  |||       |j                  |       |j                  |j                         dz
  |j                                |j                  |j                         dz
  |j                                |j                  j                  |       \  }	}
 |d|j                   |	|
      }|j#                  |      |k(  sJ |j#                  |      |f       y )Nr   r  )r   r0   r2   	   r   )r   r0   r   r7   r2   r   r!  r  )r(  r  r>   r\   newaxisr<   r=   r   minmaxset_data	add_imager   r   r*  r'  r+  r,  )xyr   r  rv   rw   rx   rD   r   r   r0  r1  r2  s               r#   test_cursor_data_nonuniformr@    sC    4 	!"A
!A	"**a-!a2::.11AllnGC	QUUWaeegquuw$H	IBKK1aLLKK!QUUW%KK!QUUW%<<))"-LE5,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                    ddl m} t        j                         \  }}|j	                  |       }|j
                  j                  ddg      \  }} |d|j                  ||      }|j                  |j                  |            |k(  sJ y )Nr   r  r  )
r(  r  r<   r=   rC   r*  r'  r+  format_cursor_datar,  )	r   textr  rD   r   r   r0  r1  r2  s	            r#   test_format_cursor_datarD    sx     4llnGC	4B<<))1a&1LE5,cjj%GE  !3!3E!:;tCCCr%   z[10001.000, 0.000]皙?z[0.123, 0.100])r   r   r   c                    ddl m} t        j                         \  }}t        j
                  d   }t        j                  d   }|j                  ddgg      }||j                  _	        t        j                  |j                  |j                  g      |j                  _        t        j                  j                  j                  ||        |j                   j#                  ddg      \  }}	 |d|j$                  ||	      }
|j'                  |j)                  |
            |k(  sJ ||j                  _	         |d|j$                  ||	      }
|j'                  |j)                  |
            |k(  sJ y )Nr   r  BiOrangeBlue2VarAddAr0   r  )r(  r  r<   r=   mplbivar_colormapsmultivar_colormapsrC   	colorizer_cmapr   	MultiNormnorm_normColorizingArtist	set_arrayr*  r'  r+  rB  r,  )r   rC  r  rD   r   
cmap_bivarcmap_multivarr   r0  r1  r2  s              r#   !test_format_cursor_data_multinormrU    s0    4llnGC$$^4J**:6M 
QF8	B#BLL))277BGG*<=BLLMM"",,R6<<))1a&1LE5,cjj%GE  !3!3E!:;tCCC&BLL,cjj%GE  !3!3E!:;tCCCr%   
image_clip)r   c                      ddgddgg} t        j                         \  }}|j                  |       }t        j                  dd|j
                        }|j                  |       y )Nr0   r   r7   r2   r   r   )radiusr'  )r<   r=   rC   r
   Circler*  set_clip_path)drD   r   r   patchs        r#   test_image_clipr^    sT    
Q!QAllnGC	1BNN6!r||DEUr%   image_cliprectc                      t        j                         \  } }ddgddgg}|j                  |d      }t        j                  ddd|j
                  j                        }|j                  |       y )	Nr0   r   r7   r2   r   r1   r   r1   r!  r0   r0   )r?  widthheightr'  )r<   r=   rC   r
   r   axesr*  r[  )rD   r   r\  r   rects        r#   test_image_cliprectrg    sg    llnGC
Q!QA	1\	*B10A0ACDTr%   c                    t        j                  d      j                  d      }|j                         }|j	                  |d d d d df   dd       |j                  dd       |j                  dd       | j                         }|j	                  |dd       |j                  dd       |j                  dd       y )Nrg   )r   r   r0   r   r;   )r0   r   r0   r   )r:   r"  r7   )r>   rt   r)  r=   rC   r   r   )r   r   r   r   s       r#   test_imshow_10_10_1ri    s     ))C.
 
 
-C				BIIc!Q'l*\IJKK1KK1				BIIcLIAKK1KK1r%   c                      t        j                         \  } }t        j                  d      j	                  d      }t        j                  t              5  |j                  |       d d d        y # 1 sw Y   y xY w)N   )r   r   r   	r<   r=   r>   rt   r)  pytestraises	TypeErrorrC   rD   r   r   s      r#   test_imshow_10_10_2rq    L    llnGC
))C.
 
 
-C	y	!
		# 
"	!	!   A00A9c                      t        j                         \  } }t        j                  d      j	                  d      }t        j                  t              5  |j                  |       d d d        y # 1 sw Y   y xY w)Ni  )r   r   r1   rl  rp  s      r#   test_imshow_10_10_5ru  %  rr  rs  no_interpolation_originc                     t        j                  d      \  } }|d   j                  t        j                  d      j                  d      dd       |d   j                  t        j                  d      j                  d      d	       y )
Nr   r   rg   )r   rl   rm   r8   )rp   r:   r0   r9   )r<   r=   rC   r>   rt   r)  )rD   r   s     r#   test_no_interpolation_originrx  ,  si    ||AHCFMM"))C.((1' &  (FMM"))C.((1MHr%   image_shift)rN   r.   r   c            
      @   t        dd      D  cg c]%  } t        dd      D cg c]  }d|z  d| z  z    c}' }} }d}d}t        j                         \  }}|j                  |t	        j
                         d||ddf       |j                  d       y c c}w c c}} w )Nr0   rg   gMk&Agk&Ar8   )rO  r:   r"  r   )ranger<   r=   rC   r   LogNorm
set_aspect)rw   rv   imgDatatMintMaxrD   r   s          r#   test_image_shiftr  4  s     @EQ}M}!uQ}5}!AA}5}GMDDllnGCIIgFNN,FD!S)  +MM& 6Ms   BBBBc                     t        j                  ddg      } | j                  dd      }t        j                  t        j
                  d      d      j                  dd	      }|j                  |d
g ddd      }dx}}|j                  | |       |j                  | |       |j                  g        |j                  g        t        j                         }| j                  |d       |j                  d       t        j                   |      }t#        |d d df         \  }}}	}
t#        |d d df         \  }}}	}
|dk7  sJ d       y )Nr0   ri   r   F)frameon      rk   r9  r   r   r  r   r8   gray)rp   r"  r:   cmapr   )r   r0   r   )	facecolorr   rq   rg   z.Expected a non-green edge - but sadly, it was.)r<   rr   add_axesr>   tilert   r)  rC   r   r   
set_xticks
set_yticksr}   r~   r   r   r   r   )rD   r   r   r   rv   rw   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JAq!QR2YJAq!Q8EEE8r%   image_composite_backgroundc                     t        j                         \  } }t        j                  d      j	                  dd      }|j                  |g d       |j                  |g d       |j                  d       |j                  dd       y )	Nr  r2   r7   )r   r   r  r   r!  )r2   r   r  r   )r0   r   r   r   r   )r<   r=   r>   rt   r)  rC   set_facecolorr   rp  s      r#   test_image_composite_backgroundr  ]  si     llnGC
))B-

1
%CIIc-I(IIc-I(^$KK2r%   image_composite_alphagQ?)r.   r   rM   c                     t        j                         \  } }t        j                  d      }d|dddddf<   t        j                  t        j
                  ddd      t        j
                  ddd      ddd   f      |dddddf<   t        j                  d	      }d|dddddf<   d|dddddf<   t        j                  t        j
                  ddd      t        j
                  ddd      ddd   f      ddt        j                  f   |dddddf<   |j                  |g d
d       |j                  |g dd       |j                  |g d       |j                  |g d       |j                  |g dd       |j                  |g dd       |j                  d       |j                  dd       |j                  dd       y)z{
    Tests that the alpha value is recognized and correctly applied in the
    process of compositing images together.
    )      r2   r0   Nr   皙?rE  rq   r7   )r  r  r2   )r0   r   r1   r   r  )r"  r   )r   r7   r1   r   333333?)r7   r2   r1   r   r!  )r   r1   r0   r   )r   r1   r   r7   )r   r1   r7   r2   )r   r   r   r0   r1   )r<   r=   r>   r?   r  rt   r:  rC   r  r   r   )rD   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%   )rN   c                    t        j                  d      j                  d      }| |fD ]  }|j                         }|j	                  |t
        j                  j                  g d      |j                  f       |j	                  |t
        j                  j                  g d      |j                  f        d|_	        y )Nr9  r7   r7   )rX  r   r0   )r0   r   )	clip_path)rb  )r0   r   )r   r0   T)
r>   rt   r)  add_subplotrC   rI  r   r   r*  rb   )r   r   trD   r   s        r#   #test_clip_path_disables_compositingr    s    
		!V$A'"__
		!.F G " .	 	/
		!.F G " .	 	/	 # !%Gr%   rasterize_10dpic                     t        j                  ddgddgg      } t        j                  ddd      \  }}|d   j	                  |        |d   j                  ddgddgdd	
       |d   j                  dd       |d   j                  ddgddgd       |d   j                  dd       |D ]B  }|j                  g        |j                  g        |j                  d d  j                  d       D dt        d<   y )Nr0   r   r7   r2   )r7   r0   r  r   g      4@T)	linewidth
rasterizedr  )rq   r   xlimylim)r  Fr   rP   )r>   asarrayr<   r=   rC   r|   setr  r  spinesset_visibler   )rG   rD   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            	         t        j                  d      j                  d      } t        j                         \  }}t        t        t        ddgddgg      |j                        d      }|j                  |        |j                  d       |j                  dd       |j                  dd       |j                  |       t        j                  d      } t        t        t        dd	gd
dgg      |j                         j                         d      }|j                  |        |j                  d       |j                  |       y )Nrg   r   r   r   r[   r9   Fr   rE  皙?r  r#  )r>   rt   r)  r<   r=   r   r   r   r*  r=  set_clip_onr   r   
add_artistidentity
get_figuretransFigure)r	   rD   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                  |   t        j                  g dg dg dg dg      } t        j                  dd      \  }}|j	                  g d       |j                  d	d
       |j                  d	d
       |j                  | g dd      }|j                  j                          |j                  j                  }|j                  |      }t        |j                         ddgddgg       t        j                  dd      \  }}|j	                  g d       |j                  d
d       |j                  d	d
       |j                  | g dd|j                        }|j                  j                          |j                  j                  }|j                  |      }t        |j                         ddgddgg       y )N)r#  r  r   r  )rE  g?r   皙?)r  r  r   r  )ffffff??r  r  r  rg   rh   r   r   r0   )r  r  r  r  r[   )r"  r:     rk  i  i  r   )r"  r:   r'  )r>   r\   r<   r=   r   r   r   rC   r+  drawrendererget_window_extentr   
get_points	transAxes)r   rD   r   im_objr  im_bboxs         r#   $test_get_window_extent_for_AxisImager    sx   
 
*,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                      t        j                  d      } | j                  d      } t        j                         \  }}|j                  |        |j                  dd       |j                  dd       y )Nrg   r         @      )r>   rt   r)  r<   r=   rC   r   r   )r	   rD   r   s      r#   test_zoom_and_clip_upper_originr    sV     IIcNEMM(#EllnGCIIeKKTKKcr%   c                  d    t        j                         } t        |       }|j                  d       y )NBlues)r<   gcar   set_cmapr   r   s     r#   test_nonuniformimage_setcmapr    s#    	B		BKKr%   c                      t        j                         } t        |       }|j                  t        j                                y r   )r<   r  r   set_norm	Normalizer  s     r#   test_nonuniformimage_setnormr    s)    	B		BKK r%   c                  N   t        j                  dd      } t        d      D ]#  }t        j                  ddd      dz  | |d d f<   % t	        j
                  dd      }|j                  | j                                t        j                         \  }}|j                  |       y )	Nr  rB   r4   r   r   r   rX   L)r>   r@   r{  linspacer   newputdataflattenr<   r=   rC   )imdir   rD   r   s        r#   test_jpeg_2dr    s{    
''('
*C2YKKS"-3AqD	 	3	!BJJs{{}llnGCIIbMr%   c                     t        j                  dd       t        j                  dt              } t        j
                  ddd      | d<   t        j                  |        t        j                         }t        j                  |d	d
d       |j                  d       t        j                  |      }t        |j                  d            }d|cxk  rdk  sJ  J |j                  d      }|dk(  sJ y )Nrb  ,  rh   )r  r  r2   r4   r   r   r6   redr   )r  r   rj   r   r        rX  )   r   r   )r<   rr   r>   r?   floatr  rc   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                      t        j                         } t        |       }t        j                  dt
              j                  d      }|j                  |       d|d<   |j                  d   dk(  sJ d       y Nr  r4   r2   r7   #@rX  r   value changed)	r<   r  r   r>   rt   r  r)  r=  r  r   r   rx   s      r#   test_axesimage_setdatar  &  s`    	B	2B
		"E"**62AKKNAdG55;!,_,r%   c                      t        j                         } t        |       }t        j                  dt
              j                  d      }|j                  |       d|d<   |j                  d   dk(  sJ d       y r  )	r<   gcfr   r>   rt   r  r)  r=  r  )rD   r   rx   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      @)r7   r   c                 p   t        j                         } | |      }|j                  |||       dx|d<   x|d<   |d<   |j                  d   |j                  d   cxk(  r|j
                  d   cxk(  rdk(  sJ d        J d       |j                  |||j                  g |j                  d             y )Nr  r   rX  r  rq   )r<   r  r=  r  _Ax_Ayr)  r   )	image_clsrv   rw   r  r   r   s         r#   test_setdata_xyar  8  s     
B	2BKK1aAaD1Q4!D'55;"&&)5rvvay5A5FF5FF5KK1aii!''2/0r%   c                     ddl m}  t        j                  j	                  d       t        j                  j                  dd      }t        j                  dd      \  }}|d   j                  |      }|d   j                  |      }t        j                  ||d          t        j                  ||d          t        j                         }t        j                  |d       t        j                  |j                               }| j                  |      }d }|j                  d	      D ]  }	||	d
   }|	d
   |k7  sJ  y )Nr   )ElementTreer   r0   r   )r   rK   r   r	   rc  )	xml.etreer  r>   r   r   r   r<   r=   
pcolormeshcolorbarr}   r~   r   getvalueparseiter)
r  r   rD   r   p1p2r   treerc  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                     t        t              j                  dz  } dt        j                  dk(  rdndz   | j                         j                         z   }t        j                  t        d      5  t        j                  |       d d d        t        j                  j                  |      5 }t        j                  |       d d d        y # 1 sw Y   GxY w# 1 sw Y   y xY w)Nr   zfile:win32z/// zPlease open the URLmatch)r   r   r   sysplatformresolveas_posixrm  rn  
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   1C.CCC"log_scale_imagec                      t        j                  d      } d| d d d<   t        j                         \  }}|j	                  | g ddddd       |j                  d	
       y )Nr  r0   r   )r0   rg   r0   rg   viridisrq   r   )r"  r  vmaxvminaspectlog)yscale)r>   r?   r<   r=   rC   r  )r   rD   r   s      r#   test_log_scale_imager$  t  sY    
AAccFllnGCIIa(yqr  FF%Fr%   rotate_imagec                     d} t        j                  dd|       x}}t        j                  ||      \  }}t        j                  |dz  |dz  z    dz        dt         j                  z  z  }t        j                  |dz
  dz  dz  |dz
  dz  dz  z    dz        dt         j                  z  dz  dz  z  }||z
  }t        j                  dd      \  }}	|	j                  |dd	d
g dd      }
t               j                  d      |	j                  z   }|
j                  |       |
j                         \  }}}}|	j                  |||||g|||||gdd|       |	j                  dd       |	j                  dd       y )Nr#        r  r   r0   r5  r   r8   r  rm   )r2   r   T)r:   r  rp   r"  clip_on   zr--r7   )lwr'  r1   r   r2   )r>   rt   meshgridexppir<   r=   rC   r   
rotate_degr*  set_transform
get_extentr|   r   r   )deltarv   rw   r^   YZ1Z2r   rD   r_   im1trans_data2x1x2y1y2s                   r#   test_rotate_imager=    s}   EIIdC''A;;q!DAq	!Q$A+"	#q255y	1B
&&QUcMA%!a%3(::;a?
@ruu9s?S "B
RA||Aq!HC
**Qf9#*D  :C *''+cmm;Kk" ^^%NBBHHb"b"b!BBB#71"  $ LLALLAr%   c                     t        j                         } t        j                  d      }t	        j
                  | |d       | j                  d       t	        j                  |       }|j                  d d |j                  k(  sJ y )N)i  iA  rd   r   r   r   )	r}   r~   r>   r?   r<   r   r   r   r   )r   r   rG   s      r#   test_image_preserve_sizer?    s`    ::<D	*	BJJtR&IIaL
**T
C99Ra=BHH$$$r%   c                  .   d} t        j                  | t              }t        j                  | | fd      }|j                  d      }|j                          |j                  |ddd       t        j                         }|j                  |d	
       |j                  d       t        j                  |      }|j                  dk(  sJ t        t        j                  |d d d d df   t               t        j                  | t               d d d          y )N   F)ri   r  )r   r   r   r   r[   rm   r   )r:   rp   r!  r0   )rj   r   )rA  rA  r2   rq   )r>   r  r  r<   rr   r  set_axis_offrC   r}   r~   r   r   r   r   r   r  bool)nr   rD   r   r   rG   s         r#   test_image_preserve_size2rE    s    	A;;q% D
**aVU
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            
         d} t        j                  dd|       x}}t        j                  ||      \  }}t        j                  |dz  |dz  z    dz        dt         j                  z  z  }t        j                  |dz
  dz  dz  |dz
  dz  dz  z    dz        dt         j                  z  dz  dz  z  }d||z
  z  }t
        j                  d	   j                  d
dd      }t         j                  j                  |dkD  |      }	t        j                  dd      \  }
\  }}|j                  |	d|t        j                  ddd      dg d      }|j                  d       |
j                  |dd|d       |j                  |	d|t        j                   g ddd      dg d      }|j                  d       |
j                  |dd d|d!       y )"Ng?r'  r  r   r0   r5  r   r   r  r  r  r  overunderbad333333?r;   g      r   F)r   r  cliprm   )r)  r7   r)  r7   )r:   r  rO  rp   r"  zGreen=low, Red=high, Blue=badboth
horizontal)extendorientationr   r!  r[   )rq   r  gɿr   r  r   r0   r  )ncolorsrL  zWith BoundaryNormproportional)rO  spacingrP  r   r!  )r>   rt   r-  r.  r/  r<   	colormapswith_extremesmamasked_wherer=   rC   r   r  r]   r  BoundaryNorm)r3  rv   rw   r^   r4  r5  r6  r   paletteZmrD   r_   r`   r   s                 r#   test_mask_image_over_underr[    s    EIIdC''A;;q!DAq	!Q$A+"	#q255y	1B
&&QUcMA%!a%3(::;a?
@ruu9s?S "B
BGAmmF#11s#31OG			AGQ	'Bll1a(OC#s	Bj ))t#EJ"> 
 
;B MM12LLF  $ 
Bi ,,-M58uF">	 
 
;B
 MM%&LLFN)c"  >r%   
mask_imagec                     t        j                  dd      \  } \  }}t        j                  d      }t        j                  |ddddf<   |j                  |d       t        j                  dt              }d|ddddf<   t        j                  j                  t        j                  dt        j                        |      }|j                  |d       y )Nr0   r   r3   r[   r9   r4   T)r<   r=   r>   r@   nanrC   r?   rC  rV  masked_arrayr   )rD   r_   r`   r   s       r#   test_mask_imager`    s     ll1a(OC#s
A&&Aac1Q3hKJJq	J*
t$AAac1Q3hK
2776;Q?AJJq	J*r%   c                      t        j                  dt         j                        } t        j                         \  }}|j                  |        |j                  j                          y )Nrf   )r>   r  r^  r<   r=   rC   r+  	draw_idle)r   rD   r   s      r#   test_mask_image_allrc    s@    776266"DllnGCIIdOJJr%   zimshow_endianess.pngc                  t   t        j                  d      } t        j                  | |       \  }}t        j                  |dz
  |dz
        }t	        j
                  dd      \  }\  }}t        ddd      } |j                  |j                  d	      fi |  |j                  |j                  d
      fi | y )Nr   r1   r0   r   rm   r[   r  )rp   r:   r  z<f8z>f8)	r>   rt   r-  hypotr<   r=   dictrC   r   )rv   r^   r4  r   rD   r_   r`   kwargss           r#   test_imshow_endianessrh    s    
		"A;;q!DAq
QAAll1a(OC#s		JFCJJqxx)&)CJJqxx)&)r%   imshow_masked_interpolationx86_64r%  )rM   r.   r   c                     t         j                  d   j                  ddd      } d}t        j                  d||z  dz
  	      }t        j                  ||z  t        
      j                  ||      }d|d<   d|d<   t
        j                  |d<   t        j                  |      j                  d      }d|d<   t
        j                  j                  ||      }t        j                  dd      \  }}t!        t"        j$                        }|j'                  d       |j'                  d       t)        ||j+                               D ]<  \  }}	|	j-                  |       |	j/                  ||| |       |	j1                  d       > y )Nr  r  r  r   rG  rk   r   r0   r   r  r4   rq   r3   g     j@)r  r1   )r  r  rC  T)r1   r  r7   r   r   antialiased)rO  r  r:   off)rI  rT  rU  r   r  r>   rt   r  r)  inf
zeros_liker   rV  r_  r<   r=   sortedr   	_interpd_removezipravelr]   rC   r  )
r  NrD  r   maskrD   ax_gridinterpsinterpr   s
             r#    test_imshow_masked_interpolationr{    sA   
 ==#11s#31OD
Aaac!e,A99QqS&..q!4DDJ DK 66DL==%%f-DDK55dD)D<<1%LCV%%&GNN6NN=!'7==?3

V
		$QT	@
 4r%   c                  V    t        j                  ddgdt        j                  gg       y )Nr0   r   r7   )r<   rC   r>   r^  r    r%   r#   test_imshow_no_warn_invalidr}  )  s    JJABFF$%r%   r5   zu2 u4 i2 i4 i8 f4 f8c                 D   t        j                  d|       j                  d      }| j                  dk7  r|dz  }|dk  }|dkD  }| j                  dk(  r|dz  }t	        j
                         \  }}|j                  |      j                         }||   dk(  j                         sJ | j                  dk(  r4||   d	k(  j                         sJ |j                  j                  dk(  sJ y ||   dk(  j                         sJ |j                  t         j                  k(  sJ y )
Nr  r4   )r   r   r7   ur   r   rX   fr0   )r>   rt   r)  kindr<   r=   rC   	get_arrayallr5   rB   )r5   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LLNEAr
))C.
"
"
$CLA""$$$zzSH"'')))yy~~$$$H$))+++yyBHH$$$r%   zimshow_flatfield.pngc                      t        j                         \  } }|j                  t        j                  d      d      }|j                  dd       y )Nr3   r[   r9   r   r5  )r<   r=   rC   r>   r@   set_climrD   r   r   s      r#   test_imshow_flatfieldr  B  s9    llnGC	2776?)	<BKKCr%   zimshow_bignumbers.pngc                      dt         d<   t        j                         \  } }t        j                  g dg dgt        j
                        }|j                  |      }|j                  dd       y )Nr[   image.interpolation)r0   r   g   mB)r7   r0   r2   r4   r   r1   )r   r<   r=   r>   r\   uint64rC   r  rD   r   rG   pcs       r#   test_imshow_bignumbersr  I  sR    &/H"# llnGC
((L),BII
>C	3BKK1r%   zimshow_bignumbers_real.pngc                      dt         d<   t        j                         \  } }t        j                  g dg dg      }|j                  |      }|j                  dd       y )Nr[   r  )r  r   gMD)r  r   r  r   r1   )r   r<   r=   r>   r\   rC   r  r  s       r#   test_imshow_bignumbers_realr  T  sN     '0H"# llnGC
((O\2
3C	3BKK1r%   	make_normc                  ,    t        j                  d      S Nr0   )r   
SymLogNormr    r%   r#   <lambda>r  d  s    Vq!r%   c                  ,    t        j                  d      S r  )r   	PowerNormr    r%   r#   r  r  e  s    Va r%   c                    t        j                         \  }}t        j                  t        d      5  |j                  g g |              }d d d        j                  g d       |j                  j                          t        j                  t              5  |j                  |j                  j                                d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz.Attempting to set identical low and high xlimsr  rO  )r1   r  r1   )r<   r=   rm  warnsUserWarningrC   
set_extentr+  r  rn  RuntimeError
make_imageget_renderer)r  rD   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                      t        j                         \  } }|j                  t        j                  dt        j
                               | j                  j                          y )Nr  r4   )r<   r=   rC   r>   r?   float16r+  r  rD   r   s     r#   test_imshow_float16r  r  s:    llnGCIIbhhvRZZ01JJOOr%   c                     t        j                         \  } }|j                  t        j                  dt        j
                               t        j                  t        j
                  t        j                  d      r
t               nt        j                  t              5  | j                  j                          d d d        y # 1 sw Y   y xY w)Nr  r4   equiv)r<   r=   rC   r>   r?   
longdoublecan_castfloat64r   rm  r  r  r+  r  r  s     r#   test_imshow_float128r  y  sy    llnGCIIbhhvR]]34R]]BJJH)+||K() 	

) ) )s   "CCc                      t        j                         \  } }|j                  t        j                  ddgddggt
                     y )NTFr4   )r<   r=   rC   r>   r\   rC  r  s     r#   test_imshow_boolr    s5    llnGCIIbhhut}5TBCr%   c                      t        j                         \  } }|j                  t        j                  dt        j
                               | j                  j                          y )Nr  )r<   r=   rC   r>   r  r^  r+  r  r  s     r#   test_full_invalidr    s:    llnGCIIbggh'(JJOOr%   zfmt,counted)r   s    colorimage)rK   s   <imagezcomposite_image,count)Tr0   )Fr   c                 (   t        j                  t        j                  ddd      t        j                  ddd            \  }}t        j                  |dz        }t	        j
                         \  }}|j                  dd       |j                  |g d       |j                  |d d d	   g d
       |t        j                  d<   t        j                         }	|j                  |	|        |	j                         j                  |      |k(  sJ y )Nr  r1   r0   r   r   r7   r   r0   r   r0   r!  rq   )r   r7   r   r0   zimage.composite_imager   )r>   r-  rt   ru   r<   r=   r   rC   r   r}   r~   r   r  count)
r   countedcomposite_imager  r^   r4  r   rD   r   r   s
             r#   test_compositer    s     ;;ryyQ*BIIb!Q,?@DAq
qAvAllnGCKK1IIaI%IIa"glI+,;CLL()
**,CKKCK <<>(E111r%   c                      t        j                         \  } }|j                  dggd       |j                          |j	                          |j                         |j                         cxk(  rdk(  sJ  J y )Nr   r  r!  r  )r<   r=   rC   relim	autoscaleget_xlimget_ylimr  s     r#   
test_relimr    s\    llnGCIIseLI)HHJLLN;;=BKKM3V33333r%   c                  r   t        j                         \  } }|j                          |j                  ddgddggdddd      }|j	                  dd       | j
                  j                          t        j                  | j
                  j                               d	d d
f   dk(  j                         sJ y )Nr   r   r  r  F)r!  r"  r  r*  r  r  .r7   )r<   r=   rB  rC   r  r+  r  r>   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Cr%   c                  6   t        j                  d      \  } }|D ]  }|j                           |d   j                  ddgddggdd      }|j	                  d        |j                  |d   j                         t        j                         }| j                  |d	       h |j                         d
hk(  sJ |d   j                  d       t        j                         }| j                  |d	       |j                         |j                         k7  sJ y )Nr   r0   r   r7   r   r  )r!  r"  rgbar   rX   )rq   r   )r  )r<   r=   rB  rC   r[  set_clip_boxbboxr}   r~   r   r  r  )rD   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%   )rd   rJ   rK   c                    t        j                  dd      }t        j                  ||      \  }}t        j                  d|dz
  dz  z  |dz
  z         }||j	                         z  }t
        j                  d   }| j                         }|j                  |||d	       |j                         } | t        j                         |            }	||	d
<   |j                  |	d       y)zPer-pixel alpha channel test.r   r0   r)  r   r   g[(\?r  r[   )r   r  r:   ).rq   r9   N)r>   r  r-  r.  r<  rI  rT  r  rC   r   r  )
r   r   rv   xxyyzzr   r  r   r  s
             r#   test_image_array_alphar    s     	AqA[[AFB	SQ'2=9	:BME==#D				BIIbD	IB				B"  "2&'DDMIId)I,r%   c                      t        j                  t        d      5  t        j                  t        j                  d      ddg       d d d        y # 1 sw Y   y xY w)Nzalpha must be a float, two-dr  rf   r0   r  )rm  rn  ro  r<   rC   r>   r?   r    r%   r#   !test_image_array_alpha_validationr    s9    	y(F	G

288F#Aq62 
H	G	Gs   -AAc                     t         j                  d   j                  d      } t        j                  dd      }|j                  d      }t        j                  g dgt        	      }|j                  |d
| dd      }|j                  d       |j                  j                          |j                  |j                  j                        d   d   }|j                  |j!                  |dggdz  z  j"                  j%                                     dz  j'                  t(              }t        j*                  ||k(        sJ y )Nautumn_r	lightgreyrI  )gffffff?rE  rg   rh   r   )rq   rq   rq   r   r   r   r   +   O   _   B   r0   rq   rq   rq   r   r   r   "   r4   r   r   )r!  r  r   r  rn  r0   r   rX   )rI  rT  rU  r<   rr   r  r>   r\   r  rC   r  r+  r  r  r  r  rO  Tru  r   r   r  )r  rD   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2333r%   image_placementc                  T   t        j                         \  } }|j                  g dg ddd       t        j                  j                  d       |j                  t        j                  j                  dd      dd	d
dd       |j                  dd       |j                  dd       y)zK
    The red box should line up exactly with the outside of the image.
    )r   r   r0   r0   r   )r   r0   r0   r   r   r  rE  )colorr,  r   r   r  r  r8   rq   r0   )r  r"  r:   r   r  gr  N)
r<   r=   r|   r>   r   r   rC   randnr   r   r  s     r#   test_image_placementr    s     llnGCGGO_CCG@IINN8IIbiioob"%GL"!  5KKeKKer%   c                   @     e Zd Zd Zd Z fdZd Zed        Z xZ	S )
QuantityNDc                 \    t        j                  |      j                  |       }||_        |S r   )r>   r  viewunits)clsinput_arrayr  objs       r#   __new__zQuantityND.__new__  s'    jj%**3/	
r%   c                 (    t        |dd       | _        y Nr  )getattrr  )r"   r  s     r#   __array_finalize__zQuantityND.__array_finalize__  s    S'40
r%   c                 |    t        | dd       }t        | 	  |      }t        |t              s|t	        ||      }|S r  )r  super__getitem__
isinstancer  )r"   itemr  ret	__class__s       r#   r  zQuantityND.__getitem__  s@    gt,g!$'c:&%*;S%(C
r%   c                    t        ||      }d|v rt        S t        |      dk(  r0|d   }t        |dd      } |t        j                  |      fi |}nXt        |      dk(  rC|d   }|d   }	t        |dd      }
t        |	dd      }|
|n|
}
||
n|}|t        j
                  t        j                  fv r|
|k7  rt        |
}n|t        j                  k(  r|
 d| }n|t        j                  k(  r	|
 d| d	}ng|t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  fv rd }nt        S  ||j!                  t        j"                        |	j!                  t        j"                        fi |}nt        S |t        j$                  |      }|S t'        ||      }|S )
Nr  r0   r   r  dimensionlessr   *z/())r  NotImplementedr   r>   r  addsubtractr  multiplydividegreatergreater_equalequal	not_equalless
less_equalr  ndarrayr\   r  )r"   ufuncmethodinputsrg  funci0unitout_arri1u0u1s               r#   __array_ufunc__zQuantityND.__array_ufunc__  s   uf%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                 @    | j                  t        j                        S r   )r  r>   r  r!   s    r#   r   zQuantityND.vE  s    yy$$r%   )
r&   r'   r(   r  r  r  r  propertyr   __classcell__)r  s   @r#   r  r    s,    
1%N % %r%   r  c                     t        ddgd      } | d d  \  }}t        j                  | j                  t        j                  ddg      k(        sJ | j
                  dk(  sJ t        j                  ||z   j                  t        j                  dg      k(        sJ ||z  j
                  dk(  sJ ||z  j
                  dk(  sJ t        j                  t              5  |t        dd      z    d d d        y # 1 sw Y   y xY w)Nr0   r   mr7   zm*mzm/(m)s)	r  r>   r  r   r  r  rm  rn  r  )qq0q1s      r#   test_quantityndr  J  s    Aq63AqTFB66!##QF++,,,77c>>6627++QC0111G??e###G??g%%%	z	"
Z3 
#	"	"s   C66C?c                      t        t        j                  d      d      } t        j                         \  }}|j                  |        |j                  j                          y )Nrf   r  )r  r>   r@   r<   r=   rC   r+  r  )r   rD   r   s      r#   test_imshow_quantityndr  V  s>    
RWWV_c
*CllnGCIIcNJJOOr%   c                    t        j                  ddt         j                        }d|ddd d f<   t         j                  j	                  |d      }d	|j
                  ddddf<   t        j                  d
   j                  d      }| j                         }|j                  |t        j                  dd      dd|      }|j                  t        j                  dd             |j                  |t        j                  dd      dd|      }|j                  t        j                  dd             |j                  dd       |j                         }|j                  |t        j                  dd      dd|       |j                  |t        j                  dd      dd|       |j                  dd       y )Nr3   r0   r4   rq   r   r   F)rw  Tr  wr  r   rl  ra  r[   )rO  r"  r:   r  r(  )r1   r   r1   r   r   r   r  )r>   r  r  rV  r\   rw  rI  rT  rU  r=   rC   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%   rv   c                 .   t        j                  d|t         j                        }d|ddd d f<   | j                         }|j	                  |t        j                  d|j                               dd	
       t        j                  d|t         j                        }d|ddd d f<   |j                         }t        j                  d	   j                  d      }|j	                  |t        j                  d|j                               d|
       y )Nr3   r4   g@xDr   r   r0   rl  r[   r  )rO  r:   r  i  r  r  )r>   r  r  r=   rC   r   r|  r<  rI  rT  rU  r  )r   r   rv   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           
      R   | j                  dd      }|j                  dd      }ddgddggddgddggddgddggf}g d}t        t        ||            D ]O  \  }\  }}||   j                  |       ||   j	                  |       ||   j                  |       ||   j                  |dddddd	       ||   j                  d
d       ||   j                  dd
       ||   j                  j                          ||   j                  j                  d       ||   j                  j                  d       ||   j                  j                  t        j                  dg dd             ||   j                   j                  t        j                  dg dd             R y )Nr0   r7   r   )r@   r?   mixedr[   r  r   Greys)r:   r!  rp   r  r   r  r  r5  g?rM  r9  )r0   r   r1   r   T)nbinsstepsinteger)r=   	enumeratert  r]   spyrC   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  rx   r/  s	            r#   test_spy_boxr:    s    1%Ga#F Q!Q
Q!Q
Q!QI
 -K"3y+#>?:Au
U#
qq	E"q	)#*7!" 	 	, 	q	4%q	3%q	  "q	d#q	**62q	))a}dK	
 	q	))a}dK	
 @r%   znonuniform_and_pcolor.pngc                     t        j                  d      j                  ddd      } t        | ddg      D ]  \  }}t	        ||      }|j                  t        j                  d      d	z  t        j                  d      d	z  t        j                  d
      j                  d             |j                  |        | d	   j                  t        j                  d      d	z  t        j                  d      d	z  t        j                  d
      j                  d             | D ]$  }|j                          |j                  d       & y )Nr  r  r7   T)sharexshareyr[   r;   r9   r   r9  r2   r   )r  )r<   rr   r=   rt  r   r=  r>   rt   r)  r>  
pcolorfastrB  r  )r   r   r:   r   s       r#   test_nonuniform_and_pcolorr?    s    
**V
$
-
-aT
-
JC y*&=>MR}=
BIIaLA%ryy|q'8IIaL((0	2
R	 ?
 F
		!299Q<1,biil.B.B6.JL

G r%   znonuniform_logscale.pngc                  z   t        j                  dd      \  } }t        d      D ]  }||   }t        |      }|j	                  t        j                  dd      dz  t        j                  dd      dz  t        j                  d      j                  d             |j                  dd       |j                  dd       |j                  d       |dk(  r&|j                  d	d
       |j                  d	d
       |dk(  r&|j                  d	d
       |j                  d	d
       |j                  |        y )Nr7   r0   )ncolsnrowsr2   r   r9  r  r   r"  )base)r<   r=   r{  r   r=  r>   rt   r)  r   r   set_box_aspect
set_xscale
set_yscaler>  )r  r   r  r   r   s        r#   test_nonuniform_logscalerG    s    \\+FAs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   r.   c                  >   t        j                  dddddd      \  } }d}t        j                  ||f      }d|d d dd d f<   t        j                  |      |z  dz
  }t        j                  |      |z  dz
  }t        j
                  ||      \  }}t        j                  |dz  |dz  z         }d	}	d
}
t        j                  t        j                  dz  |	|z  |
|dz  z  dz  z   z        }d|d t        |dz        d d f   |d t        |dz        d d f   dk  <   d|d t        |dz        d d f   |d t        |dz        d d f   dk  <   |d d t        |dz        d f   |d d t        |dz        d f<   t        j                  |ddddf<   d|ddddf<   d|ddddf<   d|ddddf<   d|ddddf<   t         j                  d   j                  dd      }|j                         }|d   j                  |d|dd       |d   j                  |dz  d z
  |dz  d z          |d   j!                  |dz  dz   |dz  d	z
         |d   j                  |d|dd       |d   j                  |d!d"|dd#       |d$   j                  |d!d%|dd#       y )&Nr   )      @rI  FT)ri   r<  r=  constrained_layout   rq   r   r   K   r  r0   r  rk   rl   g    .AF   Z   g    .r+        RdBu_ryellowcyan)rH  rI  r   r[   g333333rK  )r:   r  r   r     r   r   )r:   interpolation_stager  r   r  r7   r  )r<   r=   r>   r@   rt   r-  sqrtru   r/  r   r^  rT  rU  r  rC   r   r   )rD   r   rv  aarv   rw   r^   r4  Rf0r   r  r  s                r#   test_rgba_antialiasrZ    s   ||Aq*U#(TCHCA	!QBBssAvJ
		!q3A
		!q3A;;q!DAq
1q!tA	B
A
ruuqyBFQA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                    t         j                  j                  d       t         j                  j                  dd      }|j	                         }|j                  |ddd       | j	                         }|j                  |ddd       y)	z[
    Show that interpolation_stage='auto' gives the same as 'data'
    for upsampling.
    *N,r2   r;   r  r   r:   r  rU  r   Nr>   r   r   r   r=   rC   r   r   gridr   s       r#   !test_upsample_interpolation_stagera  	  sz     IINN:99>>!QD				BIId*9"(  * 
			BIId*9"(  *r%   c                    t         j                  j                  d       t         j                  j                  dd      }|j	                         }|j                  |ddd       | j	                         }|j                  |ddd       y)z]
    Show that interpolation_stage='auto' gives the same as 'rgba'
    for downsampling.
    r   r  r   r  r  r]  Nr^  r_  s       r#   #test_downsample_interpolation_stagerc    sz     IINN899>>#s#D				BIId&y"(  * 
			BIId&y"(  *r%   c                  R   dD ]N  } t        j                  d| i      5  t        j                  ddgg      j	                         | k(  sJ 	 d d d        P dD ]7  } t        j                  t              5  | t         j                  d<   d d d        9 y # 1 sw Y   xY w# 1 sw Y   PxY w)Nr   r  zimage.interpolation_stager0   r   )DATAfooN)	rI  
rc_contextr<   rC   get_interpolation_stagerm  rn  r  r   )vals    r#   test_rc_interpolation_stagerk  0  s    ^^8#>?::1vh'??ASHHH @?   %]]:&8;CLL45 '& % @? '&s   ,B2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           	         | j                         }|j                         }t        j                  d|dz   f      }	d|	d d |	j                  dz  d f<   |dk(  r|	j                  }	|j                  |	ddddd|      }
t        j                  t        d	| d
      5  t        j                         5 }| j                  |       d d d        d d d        t        j                  d|dz  dz   f      }	d|	d d |	j                  dz  d f<   |dk(  r|	j                  }	|j                  |	ddddd|      }
y # 1 sw Y   pxY w# 1 sw Y   txY w)Nr0   r   rm  r   r   r  r8   )r   r  r!  r"  r:   rp   zData with more than z  cannot be accurately displayed.r  )r=   r>   r?   sizer  rC   rm  r  r  r}   r~   r   )r   r   dimro  msgrp   high_memoryr6  r7  r\   r   r   s               r#   test_large_imagers  ;  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=0D1D=1D:	6D==Ec                    t         j                  j                  dd      dz  dz   }| j                  dd      }|d   j	                  |d       |d   j	                  |dd	
       |d   j	                  |d       |d   j	                  |ddd       |d   j	                  |ddd       |j                  dd      }|d   j	                  |t        j                                |d   j	                  |t        j                  d	             |d   j	                  |t        j                  d             |d   j	                  |t        j                  ddd             |d   j	                  |dd       t        |d   j                  d   j                        t
        j                  u sJ t        j                  t              5  |d   j	                  |d       d d d        y # 1 sw Y   y xY w)Nr   r  rE  r0   r1   r   r"  r  r  )rO  r   r   symlogr7   r  r  )rO  r   r  r2   logit)r   )	linthresh)rw  r   r  )r  r  )rO  climfoobar)r>   r   r   r=   rC   r   r|  r  typeimagesrO  rm  rn  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--G6c                     t        j                  t        j                  j                  t                     } t        j                  t        d      5   | t        j                  d      d        d d d        t        j                  t        d      5   | t        j                  d      t        j                  d             d d d        t        j                  t        d      5   | t        j                  d      t        j                  d             d d d        t        j                  t        d      5   | t        j                  d      t        j                  d             d d d        t        j                  t        d	      5   | t        j                  d      t        j                  d             d d d        t        j                  t        d
      5   | t        j                  dt        j                        t        j                  d             d d d        t        j                  t        d      5   | t        j                  d      t        j                  d      j                         d d d        t        j                  d      }d|j                  _        t        j                  t        d      5   | t        j                  d      |       d d d        y # 1 sw Y   |xY w# 1 sw Y   6xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   dxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr&  zincompatible function argumentsr  )r9  r9  zdifferent dimensionalities)r9  r9  r2   z3D input array must be RGBA)r9  r9  r7   z3D output array must be RGBAzmismatched typeszmust be C-contiguousFzOutput array must be writeable)	functoolspartialrI  _imageresampler   rm  rn  ro  r>   r?   r  rB   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	Js`   K*0K7&0L90L0L?L+:L8M*K47LLLL(+L58MMzdata, interpolation, expected)rE  r  r  )
rE  rE  rE  r  r  r  r  r  r  r  )rE  r  r  r  r   r  )	rE  r  r  r  r  r  r   r  r  )
rE  rE  g333333?gzG?gHzG?g=
ףp=?gRQ?g?r  r  r  )rE  rE  rE  rE  rE  gQ?g)\(?r  gRQ?gq=
ףp?gHzG?gףp=
?r  g(\?gQ?r  r  r  r  r  )r0   r   i   r  r  c                    t        j                  | | j                         d   k(        rdnd}t               j	                  |j
                  d   | j
                  d   z  d      }t        j                  |      }t        j                  | |||       t        |||       ||z   }t        j                  |      }t        j                  | |||       t        |||       y )Nr   gMb`?r0   )sxsyr9   )atol)
r>   r  ru  r   r.  r   
empty_liker   r  r   )	r   r:   expectedr,   r  affine_transformaffine_resultnonaffine_transformnonaffine_results	            r#   test_resample_nonaffiner    s    2 ttzz|A./1TD  z''8>>!+<tzz!}+LQR'SMM(+M
OOD-)9WM8$7 -/??}}X.
OOD*,?"/1$hT:r%   c                     t        j                         } t        |       }t        j                  t
        d      5  |j                          d d d        t        j                  dt              j                  d      }|j                  |       |j                         dk(  sJ |j                         |j                         k(  sJ y # 1 sw Y   }xY w)Nz"You must first set the image arrayr  r  r4   r  )r<   r  r   rm  rn  r  	get_shaper>   rt   r  r)  r=  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                     t        j                         j                         } t        j                  d      j                  d      }| j                  || j                         | j                         dk(  sJ | j                  |t               j                  d      | j                  z          | j                         dk(  sJ | j                  || j                  d       | j                         dk(  sJ y )Nr2   rf   r&  r   r   r0   )r'  r!  )r<   rr   r  r>   rt   r)  rC   r  
get_aspectr   r.  r*  r  s     r#   .test_non_transdata_image_does_not_touch_aspectr    s    		!	!	#B	1		f	%BIIbBLLI)==?f$$$IIbHJ,,Q/",,>I?==?aIIbBLLI3==?ar%   zdownsampling.png)r   r.   rM   c                  P   d} t        j                  |       | z  dz
  }t        j                  |       | z  dz
  }t        j                  | | f      }d|d d dd d f<   t        j                  ||      \  }}t        j                  |dz  |dz  z         }d}d}t        j
                  t         j                  dz  ||z  ||dz  z  dz  z   z        }	d|	d t        | dz        d d f   |d t        | dz        d d f   dk  <   d|	d t        | dz        d d f   |d t        | dz        d d f   d	k  <   |	d d t        | d
z        d f   |d d t        | d
z        d f<   |}	t        j                  dd
dd      \  }
}|d   j                  |	ddd       |d   j                  dd       |d   j                  dd       |d   j                  d       t        |j                  dd  g dg d      D ]3  \  }}}|j                  |	||d       |j                  d| d| d       5 y )Ni  r   rq   r   r1   rg   r  r0   r  r7   )rA  r   
compressedri   layoutrX  r[   r  rQ  )r:   rU  r  }   r  rK  rk  Zoom)r[   r[   r   r   r   )r   r  r   r  r   zinterpolation='z	'
space='')r>   rt   r@   r-  rV  ru   r/  r   r<   r=   rC   r   r   r]   rt  flat)rv  rv   rw   rW  r^   r4  rX  rY  r   r  rD   r   r   rz  spaces                  r#   test_downsamplingr    s9    	A
		!q3A
		!q3A	!QBBssAvJ;;q!DAq
1q!tA	
BA
ruuqyBFQA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FE 			!6u 	 	!
vhjqABKr%   zdownsampling_speckle.pngc                  b   t        j                  dddddd      \  } }|j                         }t        j                  d      j                  dd      t        j                  d	      z  d
z  j                  }t        j                  d      j                  d      }t        j                  dd      }|d   j                  d       |d   j                  t        j                  |      ||d       |d   j                  d       |d   j                  t        j                  |      ||       y )Nr0   r   )r1   g@Tr  )ri   r<  r=  r  i   rq   i  rl   r  r  )rH  r7   r  rl  r   z"interpolation='auto', stage='rgba'r  )r  rO  rU  z"interpolation='auto', stage='auto')r  rO  )r<   r=   r  r>   rt   r)  r@   r  get_cmaprU  r   r|  r]   rC   triu)rD   r   rG   cmrO  s        r#   test_downsampling_speckler    s    ||Aq(4#/1HC
++-CIIdO##B*RWWS\9b@
C
CC	i	 	.	.C	.	8B>>qr*D
 F9:FMM"''#,RdMO F9:FMM"''#,RdM3r%   zupsampling.pngc                     t         j                  j                  d       t         j                  j                  dd      } t	        j
                  dddd      \  }}|d   j                  | d	
      }|d   j                  d       |d   j                  | d	d       |d   j                  d       |d   j                  | d	dd       |d   j                  d       |j                  ||dd       y )Nr\  r2   r0   r7   )g      @r7   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:   rU  z!interpolation='sinc'
stage='rgba'r  rM  )r   shrinkrO  )	r>   r   r   r   r<   r=   rC   r]   r  )r  rD   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   int8rB   ndim)r   r7   c                 8   t         j                  j                  d      }|dk(  rdnd}|j                  |      j	                  t        j
                  | d            }t        j                         \  }}|j                  |      }|j                  d       d    y )	NiU  r   rf   )r   r   r7   )ro  T)copyr   )
r>   r   default_rnguniformr   r5   r<   r=   rC   r  )r5   r  rngr   r   rD   r   
axes_images           r#   test_resample_dtypesr  "  sz     ))


%CaiFYE;;E;"))"((5t*DEDllnGC4J$"r%   
intp_stagere  c                 ,   | j                  dd      }|j                  dd      }d\  }}d}t        j                  j                  ||      }t        j                  j                  ||d      }	t        j                  ||df      }
t        j
                  |	|j                  ||df      fd      }|d   d   j                  |	       |d   d   j                  t        j
                  |	|
fd             |d   d   j                  |	||	       |d   d   j                  t        j
                  |	||
z  fd      |
       |d   d   j                  |	||	       |d   d   j                  ||
       |d   d   j                  |       |d   d   j                  |	|       |d   d   j                  |||	       |d   d   j                  t        j
                  |	||j                  ||df      z  fd      |
       t        j                  j                  ||      }|d   d   j                  |||	       |d   d   j                  t        j
                  |	|j                  ||df      |j                  ||df      z  fd      |
       y )Nr   r7   r  r   r0   rq   r  r   )rU  r   )rU  r  )r=   r>   r   r   r@   r  r)  rC   )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  s    1%Gq!$GFBL))..R(K YY^^BA&F''2r1+.nn	$$b"a[12G AJqM AJqM1D(EBOPAJqMZ|TAJqM
\$778r	
)  
 AJqMZ{SAJqMjA AJqM!AJqM{3AJqMjUAJqM
\K$7$7R$DDEB	
)  
 iinnR,OAJqMjXAJqM
[(("b!5&&B{34 5;=	
  *	  r%   znn_pixel_alignment.pngc                 4   t        j                  dd      \  }}t        g d      D ]  \  }}t        j                  |dz        j                  ||f      dz  }t        j                  d|      }t        d      D ]  }|dk(  r|||f   j                  |dd	       n,|||f   j                  |dd| |||f   j                  z   
       |||f   j                          |||f   j                  |d|ddd       |||f   j                  |d|ddd         y )Nr   r7   )r7   rA  r  r2   r  r   Graysr[   r  r  r:   r'  rq   r   r  dashedr,  r  ls)r<   r=   r+  r>   rt   r)  r{  rC   r*  rB  vlineshlines)r,   rD   r   jrv  r   sepsr  s           r#   test_nn_pixel_alignmentr  b  s&   ||Aq!HC*%1yyA&&1v.2yyq!qAAvAqD	  G9 M AqD	  G9+=AqD	@S@S+S ! U 1I""$1IT2qS(K1IT2qS(K  &r%   z!alignment_half_display_pixels.pngc           
         t        j                  dd      }|j                  d       g d}ddg}g }|D ]G  }t        |      D ]7  \  }}|dv r|d	z   n|}|j	                  |j                  ||d
dgg g              9 I t        |      D ]R  \  }	}
|
j                         j                  }t        |dd |dd z
  ddd       t        |dz  |	dz  dv rdnddd       T d}t        j                  |dz        j                  ||f      dz  }t        j                  d|      }t        |      D ]  \  }	}
|
j                  d       |	dz  dk\  r| |
j                  z   n|
j                  }|
j                  |d|	dz  dk(  rdnd|	dk\  rdnd|       |
j                  |d|dz
  dd d!"       |
j                  |d|dz
  dd d!"       |
j                   D ]   }|
j                   |   j#                  d#       "  y )$N)r1   r   rg   rh   r  )r%  gFx?g=
ףp=?g^I+?gS?g?g(\?)r0   r7   r2   g?g(\?g333333?)xticksyticksr   r2   r   r7  gvIh%<=)rtolr  r0   r1   r   r   r9  r  r  r  r   r[   r   rm   r  r:   rp   r'  r  )r   )r   r2   r  )r   )r1   r   )r<   rr   r  r+  appendr  r  extentsr   r>   rt   r)  r*  rC   r  r  r  set_linestyle)r,   rD   corner_xcorner_yr   cyixcxmyr  r   r  rv  r   r  r'  spines                    r#   "test_alignment_half_display_pixelsr  y  s     **V
-Cc0Hd|H
C)FB "ifRBJJs||RT5$9"R|PQ *  32&&(00!wq|3RaeL!AEY,>SAU	,   	A99QT?""Aq6*Q.D99T1D32
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   rM   c                 X   t        j                  dd      \  }}d}t        g d      D ]  \  }}t        j                  |dz        j                  ||f      }||dz  z  |dz  dz  z   }t               j                  |dz  dz
  |dz  dz
  d      }t        d      D ]  }||||f   j                  z   }	|dk(  r| |	z   }	|||f   j                  |d	||	
       |||f   j                          t        d||dddd||||f   j                  z         }
|||f   j                  |
         y )Nr   r7   r  )r[   r   r;   r2   r   r   r0   r  r  )r  r  r  r8   r  )	edgecolorr  r,  r  r'  )r<   r=   r+  r>   rt   r)  r   rotate_aroundr{  r*  rC   rB  r   r  )r,   rD   r   rv  r  r:   r   rotationr  r'  boxs              r#   test_image_bounds_handlingr    sL    ||Aq!HC
A%&HI=yyA&&1v.ad{dQh!^+:++AaCGQqSWa@qA 3q!t9#6#66IAv.:	1IT}'0  2 1I""$L!Q&+v#(&.QT1D1D&DFC 1I  %  Jr%   zrgba_clean_edges.pngg~jth?c            
         t         j                  j                  d       t         j                  j                  dd      } t        j                  | | g      } t         j
                  | dddddf<   t               j                  ddd      }t        j                  dd      \  }}t        d      D ]  }t        dddd	d
      }t        ddddd
      }t        dddd	ddd
      }||   j                  |       ||   j                  |       ||   j                  |       ||   j                  | |df   dd|||   j                  z          ||   j                          ||   j!                  dd       ||   j#                  dd        y )Nr\     r0   r   r2   rI  )      @r   r1   blackr   )r  zorder)r   r(  r  r  )r  r(  r8   r   )fcecr   r  .r;   r  )r:   rU  r'  g      r6  )r>   r   r   r   stackr^  r   r  r<   r=   r{  r   	add_patchrC   r*  rB  r   r   )r   r  rD   r   r  r  r  partly_blacks           r#   test_rgba_clean_edgesr    sk   IINN:99>>!QD88T4L!DDAaC1z''S!4H||Aq!HC1X)QC$B Qg&'*16AAA&Ad1c6l$.F (3q6+;+; ; 	 	= 	AAc"Ac"! r%   zaffine_fill_to_edges.pngc                  D   t        j                  dd      \  } }d}t        j                  |dz        j	                  ||f      dz  }t               t               j                  d| dz         j                  dd      t               j                  | dz   d      j                  dd      g}t        d      D ]  }t        d      D ]  }|dk(  rdnd}|||f   j                  |d	d
|||   |||f   j                  z          |||f   j                          |||f   j                  d|dz
  gdddd       |||f   j                  d|dz
  g|dz
  |dd       |||f   j                  d|dz
  gdddd       |||f   j                  d|dz
  g|dz
  |dd         y )Nr   r7   rA  r   r0   rq   r   rm   r  r   r  r  r   r  )r,  r  )r<   r=   r>   rt   r)  r   	translater.  r{  rC   r*  rB  r  r  )rD   r   rv  r   r'  r  r  rp   s           r#   test_affine_fill_to_edgesr    s    ||Aq!HC	A99QT?""Aq6*Q.D%%a!a066q"=%%qb1fa066r1=?I 1XqA !QWGF1IT+4V'0|c!Q$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  numpyr>   numpy.testingr   r   PILr   
matplotlibrI  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tickerr3  rm  fixturer,   rH   ra   markparametrizerz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   contextr  r  r4  r@  r^  rD  rU  r^  rg  ri  rq  ru  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rt   r)  r  r  r  r$  r=  r?  rE  r[  r`  rc  rh  machiner{  r}  splitr5   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$  r:  r?  rG  rZ  ra  rc  rk  filterwarningsrs  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			"yryy~'='=f'E	G		2			"yryy}'<'<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+8++-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bhh !6>>bhhBCDFbhh./0&..bhh=>?Abhh !6??bhhKLMObhhc
|foobhh G H IJ bhhc
|foowrwww/DEbhhc
|fnnbnngbggc3'c):;<DDQKMbhhc
|foobnngbggc3'!bkk#sC077<sBSH3Nbggc3') **1'!R.:(;)(;0	+  %&g4+8++-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   l	
