
    ^j                    8   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 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/Z0 d dl1Z1e1jd                  d        Z3 e(dgdd      d        Z4 e(dgdddgdd      d        Z5e1jl                  jo                  dddg       e(dgddgd      d               Z8d Z9e1jl                  jo                  d g d!       e'       d"               Z: e'       d#        Z; e'       d$        Z<d% Z=d& Z>e1jl                  jo                  d'g d(      d)        Z?d* Z@e1jl                  jo                  d+d,d-g      d.        ZAe1jl                  jo                  d'g d/      d0        ZBd1 ZCd2 ZDd3 ZE e(d4gdd      d5        ZFej4                  j                  d       e'       d6               ZHe1jl                  jo                  d7g d8      d9        ZId: ZJe1jl                  jo                  d;d<d<gd gd<d=gd>gd?d<gd@gdAd<gd@gdBdCgdDgdEd<gdgd<dEgdgg      dF        ZKe1jl                  jo                  dGdHdIggdJfdKdLggdMfej                  d>dNggdOfd>dPggdQfdEdEggdRfd d ggdSfg      dT        ZMdU ZNe1jl                  jo                  dGdHdIggd d gggdVfdKdLggdWd gggdXfej                  d>dNggg dYggdOfg      dZ        ZO e(d[gd\      d]        ZP e(d^gd\      d_        ZQ e'       d`        ZRda ZSdb ZT e(dcgdd      dd        ZU e(degddgddf      dg        ZVdh ZW e(digdd      dj        ZX e(dkgdddlm      dn        ZY e'dgo      dp        ZZ e(dqgddgddf      dr        Z[ e(dsgdd      dt        Z\du Z] e(dvgdd      dw        Z^dx Z_dy Z`dz Zad{ Zbd| Zcd} Zde1jl                  jo                  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        Zgd Zhd Zi e(dgdd      d        Zj e(dgdd      d        Zkd Zld Zm e(dgdddm      d        Zn e(dgdd      d        Zod Zp e(dgdd      d        Zq e(dg ej                         dk(  rd nddd      d        Zsd Zte1jl                  jo                  ddj                         D  cg c]  }  ej                  |        c}       d        Zw e(dgdd      d        Zx e(dgdd      d        Zy e(dgdd      d        Zze1jl                  jo                  dej                  ej                  d d g      d        Z}d Z~d Zd Zd Ze1jl                  jo                  dddg      e1jl                  jo                  dddg      d               Zd Zd Zd Z e'g do      d        Zd Zej4                  j                  d      d        Z e(dgddgddf      d        Z G d dej                        Zd Zd Z e'       d        Ze1jl                  jo                  ddEd>g       e'       dÄ               Z e'       dĄ        Z e(dgd\      dƄ        Z e(dgd\      dȄ        Z e(dgddʫ      d˄        Z e'       d̄        Z e'       d̈́        Zd΄ Ze1jl                  j/                  dϫ      e1jl                  jo                  d+d,d-g      e1jl                  jo                  dg dѢg dҢg       e'       dӄ                             Z e'       dԄ        ZdՄ Zdք Ze1jl                  jo                  d ej8                  g dآg      ej:                   ej8                  g d٢g      f ej8                  g dڢg      ej:                   ej8                  g dۢg      f ej8                  g dآg      ej<                   ej8                  g dܢg      f ej8                  dWdgg      ej<                   ej8                  g dޢg      f ej8                  dWdWgg      ej<                   ej>                  ddW      f ej8                  dWdgg      ej:                   ej@                   ej>                  ddW       ej>                  ddݫ      g      j                  d>dE      f ej8                  dWdgg      ej<                   ej@                   ej>                  ddW       ejB                  d<dd      jE                  e      dz  dz  dWz    ej>                  ddݫ      g      j                  d>dE      fg      d        Zd Zd Z e(dgdd ej                         dk(  rd ndl      d        Z e(dgddʫ      d        Z e(dgddʫ      d        Ze1jl                  jo                  dd      e1jl                  jo                  dd      d               Ze1jl                  jo                  dd       e'g do      d               Z e(dgd\      d        Z e(dgd\      d        Z e(dgdd      d        Z e(dgdd      d        Z e(dgd\      d         Zyc c} w (      )	ExitStackN)Path)assert_allcloseassert_array_equal)Image)colorsimagepatchespyplotstylercParams)
MouseEvent)	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    f/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/matplotlib/tests/test_image.pyinvertedz?nonaffine_identity.<locals>.NonAffineIdentityTransform.inverted#       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   )   r3      r3   r3   ).r2   dtype.   noneinterpolationbilinearN)pltsubplotsnpzerosonestriluint8imshow)figaxlaxrimgs       r$   test_alpha_interprJ   (   s|     ll1a(OC#s
((9
C''&/CK''"''&9:CKJJs&J)JJs*J-r'   interp_nearest_vs_noneg@pdfsvgmpl20)tol
extensionsr0   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" interpolationr9   savefig.dpi)          )z   g      )      r   )rZ   c   G   r6   r2   r   r:   r;   zinterpolation nonenearestzinterpolation nearestN)r   r@   arrayrD   r>   r?   rE   	set_title)XrF   ax1ax2s       r$   test_interp_nearest_vs_nonerc   5   s      H]
>?3 -029;	CAll1a(OC#sJJqJ'MM&'JJq	J*MM)*r'   suppressCompositeFfigimagepng)rP   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   r3   r   lower)xoyoorigin)r>   figurerd   r@   ix_arangesinre   )rd   rF   xyzcrI   s          r$   test_figimager|   G   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)r2   r   r9   r   )r>   r?   plotioBytesIOsavefigseekimread)rF   axbuffers      r$   test_image_python_ior   W   sK    llnGCGGIZZ\FKK
KKNJJvr'   z!img_size, fig_size, interpolation))r3   r   hanning)r3   r3   r]   )r3   
   r]   )r9   333333@r   )r9   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,rR   r   r   r2   r2   autor;   )r@   randomseedr>   r   randintset_size_inchesr?   set_positionrE   )	fig_testfig_refimg_sizefig_sizer<   rl   ArF   r   s	            r$   test_imshow_antialiasedr   `   s     IINN8
,,}
%C
		s3>*Ch,?@A'" 0Hh/0				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   rR   r9   r   r   r;   r   rm   r]   )r@   r   r   r>   r   r   r   r   r?   rE   set_xlimset_ylim)r   r   rl   r   rF   r   s         r$   test_imshow_zoomr   x   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   r2   )r   user   __file__parentr?   rE   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   r7   r@   uint16sumrI   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   r7   r@   r   r   r   s    r$   test_imread_fspathr      sP    
**X GGIC99		!!!66#;)###r'   fmt)rf   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   r2   i@  r   )formatrl   ri   r   r   r9   )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   rf   r   r   r9   )	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'   rr   upperro   c                     t        j                         }t        j                  dd      }t	        j
                  ||d|        y )N)r   r   r4   rD   r6   rf   )arrr   rr   )r   r   r@   rA   mimager   )rr   bufresults      r$   test_imsave_rgba_originr      s1     **,CXXk1F
MM#6%?r'   )rf   rL   psepsrM   c                 l    t        j                  |d|  z  t        j                  ddgg      |        y )Nzunused.r   r2   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 )Nr2   )ro   r      r4   rf   )rr   r   r   rZ   rD   ro   rs   )r@   r   r   r   r   r   r>   r   r   r   astyper   )rr   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testr2   r   r9   rf   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 imager2   r   r9   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:1DGLL!O:D:"#|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      r2   r9   r   r:   )alphar<         ?r]   )r@   r   r   r   r>   r?   rE   )ZrF   ra   rb   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   r9   rZ   r   r   r         ?g?g?)r   r   r2   axisrY      )r@   r   r   r   r   float32rD   r?   rE   concatenaterB   full)
r   r   rgbfrgbuax0ra   rb   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))r9   FFF)r4   FFF)r4   FTF)r4   FFT)r4   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   r2   r9   333333?r   皙?r  )r@   r   randintr^   r>   r?   rE   draw_without_renderingtestingr   _A)	
n_channelsis_int	alpha_arropaquer^   r   rF   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                     t        j                         \  } }|j                  t        j                  d      j                  dd      d      }d\  }}|j                  j                  ||g      \  }}t        d| j                  ||      }|j                  |      dk(  sJ d\  }}|j                  j                  ||g      \  }}t        d| j                  ||      }|j                  |      J |j                          |j                  t        j                  d      j                  dd      d	      }d\  }}|j                  j                  ||g      \  }}t        d| j                  ||      }|j                  |      dk(  sJ t        j                         \  } }|j                  t        j                  d      j                  dd      g d
      }d\  }}|j                  j                  ||g      \  }}t        d| j                  ||      }|j                  |      dk(  sJ d\  }}|j                  j                  ||g      \  }}t        d| j                  ||      }|j                  |      J d\  }}|j                  j                  ||g      \  }}t        d| j                  ||      }|j                  |      J t               j                  d      j                  d      }|j                  t        j                  d      j                  dd      ||j                  z         }d\  }}|j                  j                  ||g      \  }}t        d| j                  ||      }|j                  |      dk(  sJ y )Nri   r   r   )rr   )r4   r4   motion_notify_event,   )g333333$@r4   ro   )r   r   r   r   extent)      ?r#  7   )r  r#  ){Gz?g{Gzr   r   	transform)r9   r   )r>   r?   rE   r@   rv   reshape	transDatar'  r   canvasget_cursor_dataclearr   scalerotate)	rF   r   r   rx   ry   xdispydispeventtranss	            r$   test_cursor_datar3  Z  s9   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         ?r2   g      @r   g      !@      #@g      @U   rs   c                 Z   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                  |       \  }}	t        d|j                  ||	      }
|j!                  |
      |k(  sJ |j!                  |
      |f       y )N)r   r2   r4   	   r   )r   r2   r   r9   r4   r   r!  r  )r@   r^   newaxisr>   r?   r   minmaxset_data	add_imager   r   r)  r'  r   r*  r+  )xyr   rx   ry   rz   rF   r   r   r/  r0  r1  s              r$   test_cursor_data_nonuniformr?    s>    	!"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                    t        j                         \  }}|j                  |       }|j                  j	                  ddg      \  }}t        d|j                  ||      }|j                  |j                  |            |k(  sJ y )Nr   r  )	r>   r?   rE   r)  r'  r   r*  format_cursor_datar+  )r   textrF   r   r   r/  r0  r1  s           r$   test_format_cursor_datarC    su     llnGC	4B<<))1a&1LE5,cjj%GE  !3!3E!:;tCCCr'   c                     t        j                  ddggt         j                        } t        j                         \  }}|j                  | t        j                               }|j                  j                  ddg      \  }}t        d|j                  ||      }|j                  |j                  |            dk(  sJ y )Nr   r   r6   normr2   r  z[44.000])r@   r^   rD   r>   r?   rE   r   NoNormr)  r'  r   r*  rA  r+  )r   rF   r   r   r/  r0  r1  s          r$   %test_format_cursor_data_uint8_no_normrH    s    88aWIRXX.DllnGC	4fmmo	.B<<))1a&1LE5,cjj%GE  !3!3E!:;zIIIr'   z[10001.000, 0.000]皙?z[0.123, 0.100])r   r   r   c                    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      \  }}t!        d|j"                  ||      }	|j%                  |j'                  |	            |k(  sJ ||j                  _        t!        d|j"                  ||      }	|j%                  |j'                  |	            |k(  sJ y )NBiOrangeBlue2VarAddAr   r2   r  )r>   r?   mplbivar_colormapsmultivar_colormapsrE   	colorizer_cmapr   	MultiNormrF  _normColorizingArtist	set_arrayr)  r'  r   r*  rA  r+  )
r   rB  rF   r   
cmap_bivarcmap_multivarr   r/  r0  r1  s
             r$   !test_format_cursor_data_multinormrX    s-    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 )Nr2   r   r9   r4   r   r   )radiusr'  )r>   r?   rE   r
   Circler)  set_clip_path)drF   r   r   patchs        r$   test_image_clipra    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 )	Nr2   r   r9   r4   r   r3   r   r3   r!  r2   r2   )r>  widthheightr'  )r>   r?   rE   r
   r   axesr)  r^  )rF   r   r_  r   rects        r$   test_image_cliprectrj    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 )Nri   )r   r   r2   r   r=   )r2   r   r2   r   )r<   r"  r9   )r@   rv   r(  r?   rE   r   r   )r   r   r   r   s       r$   test_imshow_10_10_1rl    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@   rv   r(  pytestraises	TypeErrorrE   rF   r   r   s      r$   test_imshow_10_10_2rt  "  U    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   r3   ro  rs  s      r$   test_imshow_10_10_5rx  )  ru  rv  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   ri   )r   rn   ro   r:   )rr   r<   r2   r;   )r>   r?   rE   r@   rv   r(  )rF   r   s     r$   test_no_interpolation_originr{  0  si    ||AHCFMM"))C.((1' &  (FMM"))C.((1MHr'   image_shift)rP   r0   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 )Nr2   ri   gMk&Agk&Ar:   )rF  r<   r"  r   )ranger>   r?   rE   r   LogNorm
set_aspect)ry   rx   imgDatatMintMaxrF   r   s          r$   test_image_shiftr  8  s     @EQ}M!uQ}5!AA5MG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 )Nr2   rk   r   F)frameon      rm   r8  r   r   r  r   r:   gray)rr   r"  r<   cmapr   )r   r2   r   )	facecolorr   rs   ri   z.Expected a non-green edge - but sadly, it was.)r>   rt   add_axesr@   tilerv   r(  rE   r   r   
set_xticks
set_yticksr   r   r   r   r   r   )rF   r   r   r   rx   ry   r   rgbas              r$   test_image_edgesr  E  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  r4   r9   )r   r   r  r   r!  )r4   r   r  r   )r2   r   r   r   r   )r>   r?   r@   rv   r(  rE   set_facecolorr   rs  s      r$   test_image_composite_backgroundr  a  si     llnGC
))B-

1
%CIIc-I(IIc-I(^$KK2r'   image_composite_alphagQ?)r0   r   rO   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.
    )      r4   r2   Nr   皙?rI  rs   r9   )r  r  r4   )r2   r   r3   r   r  )r"  r   )r   r9   r3   r   333333?)r9   r4   r3   r   r!  )r   r3   r2   r   )r   r3   r   r9   )r   r3   r9   r4   )r   r   r   r2   r3   )r>   r?   r@   rA   r	  rv   r9  rE   r  r   r   )rF   r   r   arr2s       r$   test_image_composite_alphar  l  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'   )rP   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 )Nr8  r9   r9   )r[  r   r2   )r2   r   )	clip_path)re  r2   r   )r   r2   T)
r@   rv   r(  add_subplotrE   rM  r   r   r)  rd   )r   r   trF   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 )Nr2   r   r9   r4   )r9   r2   r  r   g      4@T)	linewidth
rasterizedr  )rs   r   xlimylim)r  Fr   rR   )r@   asarrayr>   r?   rE   r~   setr  r  spinesset_visibler   )rI   rF   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 )Nri   r   r   r   r]   r;   Fr   rI  皙?r  r#  )r@   rv   r(  r>   r?   r   r   r   r)  r<  set_clip_onr   r   
add_artistidentity
get_figuretransFigure)r	   rF   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  )rI  g?r   皙?)r  r  r   r  )ffffff??r  r  r  ri   rj   r   r   r2   )r  r  r  r  r]   )r"  r<     rn  i  i  r   )r"  r<   r'  )r@   r^   r>   r?   r   r   r   rE   r*  drawrendererget_window_extentr   
get_points	transAxes)r   rF   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 )Nri   r         @      )r@   rv   r(  r>   r?   rE   r   r   )r	   rF   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  rD   r6   r   r   r   rZ   L)r@   rB   r~  linspacer   newputdataflattenr>   r?   rE   )imdir   rF   r   s        r$   test_jpeg_2dr    s    
''('
*C2Y 4KKS"-3AqD	4	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 )Nre  ,  rj   )r  r  r4   r6   r   r   r8   redr   )r  r   rl   r   r        r[  )   r   r   )r>   rt   r@   rA   floatr  re   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  r6   r4   r9   #@r[  r   value changed)	r>   r  r   r@   rv   r  r(  r<  r  r   r   rz   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@   rv   r  r(  r<  r  )rF   r   rz   s      r$   test_figureimage_setdatar  3  sa    
'')C	S	B
		"E"**62AKKNAdG55;!,_,r'   zimage_cls,x,y,a      @      @g      (@r  g      @)r9   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   r[  r  rs   )r>   r  r<  r  _Ax_Ayr(  r   )	image_clsrx   ry   r  r   r   s         r$   test_setdata_xyar  <  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   r2   r   )r   rM   r   r	   rf  )	xml.etreer  r@   r   r   r   r>   r?   
pcolormeshcolorbarr   r   r   getvalueparseiter)
r  r   rF   r   p1p2r   treerf  r	   s
             r$   test_minimized_rasterizedr  L  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_posixrp  rq  
ValueErrorr>   r   urllibrequesturlopen)r   urlfiles      r$   test_load_from_urlr  m  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  r2   r   )r2   ri   r2   ri   viridisrs   r   )r"  r  vmaxvminaspectlog)yscale)r@   rA   r>   r?   rE   r  )r   rF   r   s      r$   test_log_scale_imager(  x  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   r2   r4  r   r:   r"  ro   )r4   r   T)r<   r  rr   r"  clip_on   zr--r9   )lwr'  r3   r   r4   )r@   rv   meshgridexppir>   r?   rE   r   
rotate_degr)  set_transform
get_extentr~   r   r   )deltarx   ry   r`   YZ1Z2r   rF   ra   im1trans_data2x1x2y1y2s                   r$   test_rotate_imagerA    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  rf   r   r   r   )	r   r   r@   rA   r>   r   r   r   r   )r   r   rI   s      r$   test_image_preserve_sizerC    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)rk   r  )r   r   r   r   r]   ro   r   )r<   rr   r%  r2   )rl   r   )rE  rE  r4   rs   )r@   r  r  r>   rt   r  set_axis_offrE   r   r   r   r   r   r   r   r  bool)nr   rF   r   r   rI   s         r$   test_image_preserve_size2rI    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   r2   r4  r   r   r  r  r  r  overunderbad333333?r=   g      r   F)r$  r#  clipro   )r-  r9   r-  r9   )r<   r  rF  rr   r"  zGreen=low, Red=high, Blue=badboth
horizontal)extendorientationr   r%  r]   )rs   r  gɿr   r  r   r2   r  )ncolorsrP  zWith BoundaryNormproportional)rS  spacingrT  r   r%  )r@   rv   r1  r2  r3  r>   	colormapswith_extremesmamasked_wherer?   rE   r   r  r_   r  BoundaryNorm)r7  rx   ry   r`   r8  r9  r:  r   paletteZmrF   ra   rb   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 )Nr2   r   r5   r]   r;   r6   T)r>   r?   r@   rB   nanrE   rA   rG  rZ  masked_arrayr   )rF   ra   rb   r   s       r$   test_mask_imagerd    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 )Nrh   )r@   r
  rb  r>   r?   rE   r*  	draw_idle)r   rF   r   s      r$   test_mask_image_allrg    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   r3   r2   r   ro   r]   r"  )rr   r<   r  z<f8z>f8)	r@   rv   r1  hypotr>   r?   dictrE   r   )rx   r`   r8  r   rF   ra   rb   kwargss           r$   test_imshow_endianessrl    s    
		"A;;q!DAq
QAAll1a(OC#s		JFCJJqxx)&)CJJqxx)&)r'   imshow_masked_interpolationx86_64r%  )rO   r0   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   rK  rm   r   r2   r$  r#  r6   rs   r5   g     j@)r  r3   )r  r  rG  T)r3   r  r9   r   r   antialiased)rF  r  r<   off)rM  rX  rY  r   r  r@   rv   r  r(  inf
zeros_liker   rZ  rc  r>   r?   sortedr   	_interpd_removezipravelr_   rE   r  )
r  NrH  r   maskrF   ax_gridinterpsinterpr   s
             r$    test_imshow_masked_interpolationr    sF   
 ==#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	@
r'   c                  V    t        j                  ddgdt        j                  gg       y )Nr2   r   r9   )r>   rE   r@   rb  r!   r'   r$   test_imshow_no_warn_invalidr  -  s    JJABFF$%r'   r7   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  r6   )r   r   r9   ur   r   rZ   fr2   )r@   rv   r(  kindr>   r?   rE   	get_arrayallr7   rD   )r7   r   too_lowtoo_high_r   outs          r$   $test_imshow_clips_rgb_to_valid_ranger  1  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 )Nr5   r]   r;   r   r4  )r>   r?   rE   r@   rB   set_climrF   r   r   s      r$   test_imshow_flatfieldr  F  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)r2   r   g   mB)r9   r2   r4   r6   r   r3   )r   r>   r?   r@   r^   uint64rE   r  rF   r   rI   pcs       r$   test_imshow_bignumbersr  M  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   r3   )r   r>   r?   r@   r^   rE   r  r  s       r$   test_imshow_bignumbers_realr  X  sN     '0H"# llnGC
((O\2
3C	3BKK1r'   	make_normc                  ,    t        j                  d      S Nr2   )r   
SymLogNormr!   r'   r$   <lambda>r  h  s    Vq! r'   c                  ,    t        j                  d      S r  )r   	PowerNormr!   r'   r$   r  r  i  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  rE  )r3   r  r3   )r>   r?   rp  warnsUserWarningrE   
set_extentr*  r  rq  RuntimeError
make_imageget_renderer)r  rF   r   r   s       r$   test_empty_imshowr  d  s     llnGC	kL
N /YYt)+Y./ MM.!JJOO	|	$ 1
cjj--/01 1/ /1 1s   C*CCC#c                      t        j                         \  } }|j                  t        j                  dt        j
                               | j                  j                          y )Nr  r6   )r>   r?   rE   r@   rA   float16r*  r  rF   r   s     r$   test_imshow_float16r  v  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  r6   equiv)r>   r?   rE   r@   rA   
longdoublecan_castfloat64r   rp  r  r  r*  r  r  s     r$   test_imshow_float128r  }  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 )NTFr6   )r>   r?   rE   r@   r^   rG  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?   rE   r@   r
  rb  r*  r  r  s     r$   test_full_invalidr    s:    llnGCIIbggh'(JJOOr'   zfmt,counted)r   s    colorimage)rM   s   <imagezcomposite_image,count)Tr2   )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  r3   r2   r   r   r9   r   r2   r   r2   r!  rs   )r   r9   r   r2   zimage.composite_imager   )r@   r1  rv   rw   r>   r?   r   rE   r   r   r   r   r	  count)
r   countedcomposite_imager  r`   r8  r   rF   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?   rE   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  .r9   )r>   r?   rF  rE   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   r2   r   r9   r   r  )r%  r"  rgbar   rZ   )rs   r   )r  )r>   r?   rF  rE   r^  set_clip_boxbboxr   r   r   r	  r  )rF   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'   )rf   rL   rM   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   r2   r-  r   r   g[(\?r"  r]   )r   r  r<   ).rs   r;   N)r@   r  r1  r2  r;  rM  rX  r  rE   r   r  )
r   r   rx   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  rh   r2   r  )rp  rq  rr  r>   rE   r@   rA   r!   r'   r$   !test_image_array_alpha_validationr    sA    	y(F	G 3

288F#Aq623 3 3s   -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rM  )gffffff?rI  ri   rj   r   )rs   rs   rs   r   r   r   r   +   O   _   B   r2   rs   rs   rs   r   r   r   "   r6   r   r   )r%  r  r$  r#  rr  r2   r   rZ   )rM  rX  rY  r>   rt   r  r@   r^   r  rE   r  r*  r  r  r  r  rF  Try  r   r   r  )r  rF   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   r2   r2   r   )r   r2   r2   r   r   r  rI  )colorr0  r   r   r  r  r:   rs   r2   )r  r"  r<   r$  r#  gr  N)
r>   r?   r~   r@   r   r   rE   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  r2   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inputsrk  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.vI  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)Nr2   r   mr9   zm*mzm/(m)s)	r  r@   r  r   r  r  rp  rq  r  )qq0q1s      r$   test_quantityndr  N  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 )Nrh   r  )r  r@   rB   r>   r?   rE   r*  r  )r   rF   r   s      r$   test_imshow_quantityndr   Z  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 )Nr5   r2   r6   rs   r   r   F)r{  Tr"  wr  r   rp  rd  r]   )rF  r"  r<   r  r,  )r3   r   r3   r   r   r   r  )r@   r
  r  rZ  r^   r{  rM  rX  rY  r?   rE   r   r  r  r  r  )r   r   r   masked_datar  r   r   s          r$   test_norm_changer%  c  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'   rx   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 )Nr5   r6   g@xDr   r   r2   rp  r]   r"  )rF  r<   r  i  r"  r  )r@   r
  r  r?   rE   r   r  r;  rM  rX  rY  r  )r   r   rx   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 )Nr2   r9   r   )rB   rA   mixedr]   r  r   Greys)r<   r%  rr   r  r$  r#  r  r4  g?rQ  r8  )r2   r   r3   r   T)nbinsstepsinteger)r?   	enumeraterx  r_   spyrE   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  rz   r2  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  r9   T)sharexshareyr]   r=   r;   r   r8  r4   r#  )r  )r>   rt   r?   rx  r   r<  r@   rv   r(  r=  
pcolorfastrF  r  )r   r   r<   r   s       r$   test_nonuniform_and_pcolorrB    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 )Nr9   r2   )ncolsnrowsr4   r   r8  r  r   r&  )base)r>   r?   r~  r   r<  r@   rv   r(  r   r   set_box_aspect
set_xscale
set_yscaler=  )r  r   r  r   r   s        r$   test_nonuniform_logscalerJ    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   r0   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   )      @rL  FT)rk   r?  r@  constrained_layout   rs   r   r   K   r  r2   r  rm   rn   g    .AF   Z   g    .r/        RdBu_ryellowcyan)rL  rM  r   r]   g333333rO  )r<   r  r$  r#     r   r   )r<   interpolation_stager  r$  r#  r9   r  )r>   r?   r@   rB   rv   r1  sqrtrw   r3  r   rb  rX  rY  r  rE   r   r   )rF   r   rz  aarx   ry   r`   r8  Rf0r   r  r  s                r$   test_rgba_antialiasr]    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,r4   r=   r"  r   r<   r  rX  r   Nr@   r   r   r   r?   rE   r   r   gridr   s       r$   !test_upsample_interpolation_stagerd    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`  Nra  rb  s       r$   #test_downsample_interpolation_stagerf  !  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_stager2   r   )DATAfooN)	rM  
rc_contextr>   rE   get_interpolation_stagerp  rq  r  r   )vals    r$   test_rc_interpolation_stagern  4  s     I^^8#>? 	I::1vh'??ASHHH	I 	II % <]]:& 	<8;CLL45	< 	<<	I 	I	< 	<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)Nr2   r   rp  r   r   r  r:   )r$  r#  r%  r"  r<   rr   zData with more than z  cannot be accurately displayed.r  )r?   r@   rA   sizer  rE   rp  r  r  r   r   r   )r   r   dimrr  msgrr   high_memoryr9  r:  r^   r   r   s               r$   test_large_imagerv  ?  sU    !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  rI  r2   r3   r   r&  rE  r  )rF  r$  r   symlogr9   r  r  )rF  r$  r#  r4   logit)r$  )	linthresh)rz  r$  r#  )r  r  )rF  climfoobar)r@   r   r   r?   rE   r   r  r  typeimagesrF  rp  rq  r  )r   r   r  axtsaxrss        r$   test_str_normsr  g  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  r8  r8  zdifferent dimensionalities)r8  r8  r4   z3D input array must be RGBA)r8  r8  r9   z3D output array must be RGBAzmismatched typeszmust be C-contiguousFzOutput array must be writeable)	functoolspartialrM  _imageresampler   rp  rq  rr  r@   rA   r  rD   r  flags	writeable)r  r  s     r$   test__resample_valid_outputr  }  s;     !4!4
KH	y(I	J )&!4()	z)E	F 8&!288I#678	z)E	F 8)$bhhv&678	z)F	G ;)$bhhy&9:;	z)G	H ;)$bhhy&9:;	z);	< ?&"((+RXXf-=>?	z)?	@ 7&!288F#3#5#567 ((6
CCII	z)I	J (&!3'( (#) )8 88 8; ;; ;? ?7 7
( (s`   K*0K7&0L90L0L?L+:L8M*K47LLLL(+L58MMc                      G d dt               } t        j                  t        d      5  t        j
                  j                  t        j                  d      t        j                  d       |               d d d        y # 1 sw Y   y xY w)Nc                        e Zd ZdxZZd Zd Zy)=test__resample_nonaffine_mesh_shape.<locals>.BadMeshTransformr   c                     | S r    r!   r"   s    r$   r%   zFtest__resample_nonaffine_mesh_shape.<locals>.BadMeshTransform.inverted  r&   r'   c                 ,    t        j                  d      S )Nr  )r@   rA   )r#   valuess     r$   r'  zGtest__resample_nonaffine_mesh_shape.<locals>.BadMeshTransform.transform  s    88F##r'   N)r(   r)   r*   r+   r,   r%   r'  r!   r'   r$   BadMeshTransformr    s    #$$
[		$r'   r  zmesh array should have shaper  r  )	r   rp  rq  r  rM  r  r  r@   rA   )r  s    r$   #test__resample_nonaffine_mesh_shaper    sb    $9 $ 
|+I	J 0

BHHV,bhhv.>,.	00 0 0s   ABB
zdata, interpolation, expected)rI  r  r  )
rI  rI  rI  r  r  r  r  r  r  r  )rI  r  r  r  r   r  )	rI  r  r  r  r  r  r   r  r  )
rI  rI  g333333?gzG?gHzG?g=
ףp=?gRQ?g?r  r  r  )rI  rI  rI  rI  rI  gQ?g)\(?r  gRQ?gq=
ףp?gHzG?gףp=
?r  g(\?gQ?r  r  r  r  r  )r2   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`?r2   )sxsyr;   )atol)
r@   r  ry  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  r6   r  )r>   r  r   rp  rq  r  	get_shaper@   rv   r  r(  r<  get_sizer  s      r$   test_axesimage_get_shaper    s    	B	2B	|+O	P 

		"E"**62AKKN<<>V###;;=BLLN*** s   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 )Nr4   rh   r&  r   r   r2   )r'  r%  )r>   rt   r  r@   rv   r(  rE   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   r0   rO   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   rs   r   r3   ri   r  r2   r  r9   )rE  r   
compressedrk   layoutr[  r]   r  rT  )r<   rX  r  }   r  rN  rn  Zoom)r]   r]   r   r   r   )r   r  r   r  r   zinterpolation='z	'
space='')r@   rv   rB   r1  rY  rw   r3  r   r>   r?   rE   r   r   r_   rx  flat)rz  rx   ry   rZ  r`   r8  r[  r\  r   r  rF   r   r   r~  spaces                  r$   test_downsamplingr    s?    	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 CFE 			!6u 	 	!
vhjqABC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 )Nr2   r   )r3   g@Tr  )rk   r?  r@  r  i   rs   i  rn   r"  r  )rL  r9   r  rp  r   z"interpolation='auto', stage='rgba'r  )r  rF  rX  z"interpolation='auto', stage='auto')r  rF  )r>   r?   r  r@   rv   r(  rB   r  get_cmaprY  r   r  r_   rE   triu)rF   r   rI   cmrF  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_  r4   r2   r9   )g      @r9   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<   rX  z!interpolation='sinc'
stage='rgba'r  rQ  )r   shrinkrS  )	r@   r   r   r   r>   r?   rE   r_   r  )r  rF   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   int8rD   ndim)r   r9   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   rh   )r   r   r9   )rr  T)copyr   )
r@   r   default_rnguniformr   r7   r>   r?   rE   r  )r7   r  rngr   r   rF   r   
axes_images           r$   test_resample_dtypesr  7  sz     ))


%CaiFYE;;E;"))"((5t*DEDllnGC4J$"r'   
intp_stagerh  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   r9   r  r   r2   rs   r  r   )rX  r   )rX  r  )r?   r@   r   r   rB   r	  r(  rE   )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  H  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   r9   )r9   rE  r  r4   r  r   Graysr]   r  r  r<   r'  rs   r   r  dashedr0  r  ls)r>   r?   r.  r@   rv   r(  r~  rE   r)  rF  vlineshlines)r.   rF   r   jrz  r   sepsr  s           r$   test_nn_pixel_alignmentr  w  s4   ||Aq!HC*% L1yyA&&1v.2yyq!q 	LAAvAqD	  G9 M AqD	  G9+=AqD	@S@S+S ! U 1I""$1IT2qS(K1IT2qS(K	LL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)r3   r   ri   rj   r  )r%  gFx?g=
ףp=?g^I+?gS?g?g(\?)r2   r9   r4   g?g(\?g333333?)xticksyticksr   r4   r   r6  gvIh%<=)rtolr  r2   r3   r   r   r8  r  r  r  r   r]   r   ro   r  r<   rr   r'  r  )r   )r   r4   r  )r   )r3   r   )r>   rt   r  r.  appendr  r  extentsr   r@   rv   r(  r)  rE   r  r  r  set_linestyle)r.   rF   corner_xcorner_yr   cyixcxmyr  r   r  rz  r   r  r'  spines                    r$   "test_alignment_half_display_pixelsr    s     **V
-Cc0Hd|H
C R) 	RFB "ifRBJJs||RT5$9"R|PQ	RR 3 ,2&&(00!wq|3RaeL!AEY,>SAU	,, 	A99QT?""Aq6*Q.D99T1D3 92
9:Q!&5	
		$W-.UaZ	Y$%F% 	 	'
 			$a#g#U{	K
		$a#g#U{	KYY 	9EIIe**<8	99r'   zimage_bounds_handling.pngg~jtx?)r   rO   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   r9   r  )r]   r   r=   r4   r   r   r2   r  r  )r  r  r  r:   r  )	edgecolorr  r0  r  r'  )r>   r?   r.  r@   rv   r(  r   rotate_aroundr~  r)  rE   rF  r   r  )r.   rF   r   rz  r  r<   r   rotationr  r'  boxs              r$   test_image_bounds_handlingr    sU    ||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  %	&&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_     r2   r   r4   rL  )      @r   r3   blackr   )r  zorder)r   r,  r  r  )r  r,  r:   r   )fcecr   r  .r=   r  )r<   rX  r'  g      r5  )r@   r   r   r   stackrb  r   r  r>   r?   r~  r   	add_patchrE   r)  rF  r   r   )r   r  rF   r   r  r  r  partly_blacks           r$   test_rgba_clean_edgesr    sp   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   r9   rE  r   r2   rs   r   ro   r  r   r  r  r   r  )r0  r  )r>   r?   r@   rv   r(  r   	translater-  r~  rE   r)  rF  r  r  )rF   r   rz  r   r'  r  r  rr   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 Mq 	M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	MMr'   )
contextlibr   r  r   r   pathlibr   r  r  urllib.requestr  numpyr@   numpy.testingr   r   PILr   
matplotlibrM  r   r	   r   r
   r   r>   r   r   matplotlib.backend_basesr   matplotlib.imager   r   r   r   r   matplotlib.patchesr   matplotlib.testing.decoratorsr   r   matplotlib.transformsr   r   r   r   matplotlib.tickertickerr6  rp  fixturer.   rJ   rc   markparametrizer|   r   r   r   r   r   r   r   r   r   r   r   r   r   r  contextr  r  r3  r?  rb  rC  rH  rX  ra  rj  rl  rt  rx  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rv   r(  r  r  r  r(  rA  rC  rI  r_  rd  rg  rl  machiner  r  splitr7   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=  rB  rJ  r]  rd  rf  rn  filterwarningsrv  r  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*B+J 	3Z	3Z	3Z	3Z	3Z#Y	2Y	& 
P
P& %.	=),#661a.	4 g,/0r(Xa&8DDJ 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Bahbhhqk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 ) )*(.0" 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i Cs   l
